Chromium: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «== Статус == Собираются версии из транка SVN (Continuous build), майнтейнер старается вычитывать лог к...»)
 
 
(не показано 8 промежуточных версий 2 участников)
Строка 1: Строка 1:
== Статус ==
== Статус ==
Собираются версии из транка SVN (Continuous build), майнтейнер старается вычитывать лог коммитов и при заметных улучшениях делать новую сборку. Спек написан на основе спека для Fedora, некоторые идеи взяты из пакета для [https://code.launchpad.net/~chromium-team/chromium-browser/chromium-browser.dev Ubuntu].
 
{{Since|37.0.2062.120}} исходный код получается по инструкции http://www.chromium.org/developers/how-tos/get-the-code
 
Архив с исходным кодом: https://commondatastorage.googleapis.com/chromium-browser-official/chromium-37.0.2062.120.tar.xz


== Специфичные изменения ==
== Специфичные изменения ==
=== Патчи ===
* {{path|chromium-20090929-no-sqlite-debug.patch}}: взят из Fedora, согласно комментарию в спеке исправляет некое падение.
* {{path|chromium-20100429-ubuntu-disable-dlog_and_dcheck-in-release-builds.patch}}: взят из Ubuntu, убирает отладочные макросы из релизной сборки.
=== Библиотеки ===
Дерево исходников содержит (в основном в каталоге {{path|third_party}}) копии многих внешних проектов, в большинстве случаев изменённые локально. В некоторых случаях через параметры use_system_* можно включить сборку с системными версиями, но это не всегда правильно и точно имеет смысл лишь для тех библиотек, чьи копии в дереве не изменены относительно апстримных. Библиотеки ffmpeg заменены символическими ссылками на системные версии, упакованными в отдельный пакет.
=== Облегчение дерева исходников ===
Поскольку дерево содержит сотни мегабайт данных, не требующихся для сборки (либо вообще, либо для Linux/для ALT), их желательно удалять для уменьшения размера репозитория и использования ресурсов сборочной системы. В случае дополнительных репозиториев их можно отключать целиком через файл {{path|.gclient}}, в случае отдельных каталогов можно запрещать их экспорт правкой скрипта {{path|export_tarball.py}}.
=== Sandbox ===
Используется seccomp sandbox, сборка SUID helper отключена. Для работы seccomp sandbox требуется включённый в ядре CONFIG_SECCOMP. В случае проблем рекомендуется отключить сэндбоксинг (осознавая последствия) ключом --disable-seccomp-sandbox и пойти плакаться в апстрим (по умолчанию везде всё ещё используется SUID sandbox, потому проблемы возможны).
== Инструкции по самостоятельной сборке ==
== Инструкции по самостоятельной сборке ==


=== Получение оригинального дерева ===
=== Получение оригинального дерева ===
* Из репозитория [http://src.chromium.org/svn/trunk/tools/depot_tools/ depot_tools] возьмите файлы gclient*.py и положите их в $PATH, создав ссылку ''gclient -> gclient.py'' (возможно, сойдёт и переименование).
* Получите depot_tools из его [http://src.chromium.org/svn/trunk/tools/depot_tools/ SVN-репозитория] и создайте в $PATH файл {{path|gclient}} примерно следующего содержания:
<source lang="bash">
#!/bin/sh
exec python "/path/to/depot_tools/gclient.py" "$@"
</source>
* Создайте каталог, где будет лежать рабочая копия SVN, и положите туда файл {{path|.gclient}} примерно следующего содержания:
* Создайте каталог, где будет лежать рабочая копия SVN, и положите туда файл {{path|.gclient}} примерно следующего содержания:
<source lang="python">
<source lang="python">
solutions = [
solutions = [
   { "name"        : "src",
   { "name"        : "35.0.1916.114",
     "url"        : "http://src.chromium.org/svn/trunk/src",
     "url"        : "https://src.chromium.org/chrome/releases/35.0.1916.114",
     "custom_deps" : {
    "deps_file"  : "DEPS",
       "src/third_party/WebKit/LayoutTests": None,
    "managed"     : True,
       "src/chrome/test/data/layout_tests/LayoutTests/fast/events": None,
 
       "src/chrome/test/data/layout_tests/LayoutTests/fast/workers": None,
     "custom_deps": {    
       "src/chrome/test/data/layout_tests/LayoutTests/http/tests/xmlhttprequest": None,
       "src/content/test/data/layout_tests/LayoutTests": None,
       "src/chrome/test/data/layout_tests/LayoutTests/http/tests/workers": None,
       "src/chrome/tools/test/reference_build/chrome_win": None,
       "src/chrome/test/data/layout_tests/LayoutTests/fast/js/resources": None,
       "src/chrome_frame/tools/test/reference_build/chrome_win": None,
       "src/chrome/test/data/layout_tests/LayoutTests/http/tests/resources": None,
       "src/chrome/tools/test/reference_build/chrome_linux": None,
       "src/chrome/test/data/layout_tests/LayoutTests/storage/domstorage": None,
       "src/chrome/tools/test/reference_build/chrome_mac": None,
       "src/native_client_sdk/src/build_tools/toolchain_archives": None,
       "src/chrome/test/data/extensions/api_test/permissions/nacl_enabled/bin": None,
       "src/chrome/test/data/layout_tests": None,
       "src/chrome/tools/test/reference_build": None,
       "src/chrome/tools/test/reference_build": None,
       "src/third_party/ffmpeg/binaries/chromium/linux/ia32": None,
       "src/third_party/ffmpeg/binaries": None,
       "src/third_party/ffmpeg/binaries/chromium/linux/x64": None,
      "src/chrome/test/data/layout_tests": None,
       "src/third_party/ffmpeg/binaries/chromium/linux/ia32_dbg": None,
       "src/chrome/tools/test/reference_build/chrome_linux": None,
       "src/third_party/ffmpeg/binaries/chromium/linux/x64_dbg": None,
       "src/third_party/ffmpeg/source/patched-ffmpeg-mt": None,
      "src/third_party/hunspell_dictionaries": None,
       "src/third_party/yasm/source/patched-yasm": None,
      "src/native_client/toolchain": None,
 
     },
     },
     "safesync_url": "http://build.chromium.org/buildbot/continuous/LATEST/REVISION"
 
   }
     "safesync_url": "",
]
   },
</source>
]</source>
Этот файл был создан согласно инструкции [http://dev.chromium.org/developers/how-tos/get-the-code Get the Code] командой {{cmd|gclient config http://src.chromium.org/svn/trunk/src}} и затем отредактирован. При появлении дополнительных внешних репозиториев, которые не требуются для сборки, их стоит добавлять сюда.
Этот файл был создан согласно инструкции [http://dev.chromium.org/developers/how-tos/get-the-code Get the Code] командой {{cmd|gclient config http://src.chromium.org/svn/trunk/src}} и затем отредактирован.
* Выполните команду {{cmd|gclient sync --nohooks}} и дождитесь окончания скачивания всех репозиториев. После этого в каталоге {{path|src/}} будет лежать дерево исходников. В дальнейшем эта же команда будет обновлять это дерево.
* Выполните команду {{cmd|gclient sync --nohooks}} и дождитесь окончания скачивания всех репозиториев. После этого в каталоге {{path|src/}} будет лежать дерево исходников. В дальнейшем эта же команда будет обновлять это дерево.


Строка 43: Строка 71:
  mv /path/to/chromium-browser.git/{src,chromium-browser}
  mv /path/to/chromium-browser.git/{src,chromium-browser}
* Закоммитьте новую версию дерева:
* Закоммитьте новую версию дерева:
  git add chromium-browser
  git add -f chromium-browser
  git commit -s chromium-browser -m "r77777"
  git commit -s chromium-browser -m "r77777"
Используйте ревизию из {{cmd|svn info src}} (у различных дополнительных репозиториев будут другие номера ревизий).
Используйте ревизию из {{cmd|svn info src}} (у различных дополнительных репозиториев будут другие номера ревизий).
* Обновите в спек-файле номер ревизии (см.выше) и версии (из {{path|chromium-browser/chrome/VERSION}}).
* Обновите в спек-файле номер ревизии (см.выше) и версии (из {{path|chromium-browser/chrome/VERSION}}).

Текущая версия от 10:13, 10 сентября 2014

Статус

 с версии 37.0.2062.120  исходный код получается по инструкции http://www.chromium.org/developers/how-tos/get-the-code

Архив с исходным кодом: https://commondatastorage.googleapis.com/chromium-browser-official/chromium-37.0.2062.120.tar.xz

Специфичные изменения

Патчи

  • chromium-20090929-no-sqlite-debug.patch: взят из Fedora, согласно комментарию в спеке исправляет некое падение.
  • chromium-20100429-ubuntu-disable-dlog_and_dcheck-in-release-builds.patch: взят из Ubuntu, убирает отладочные макросы из релизной сборки.

Библиотеки

Дерево исходников содержит (в основном в каталоге third_party) копии многих внешних проектов, в большинстве случаев изменённые локально. В некоторых случаях через параметры use_system_* можно включить сборку с системными версиями, но это не всегда правильно и точно имеет смысл лишь для тех библиотек, чьи копии в дереве не изменены относительно апстримных. Библиотеки ffmpeg заменены символическими ссылками на системные версии, упакованными в отдельный пакет.

Облегчение дерева исходников

Поскольку дерево содержит сотни мегабайт данных, не требующихся для сборки (либо вообще, либо для Linux/для ALT), их желательно удалять для уменьшения размера репозитория и использования ресурсов сборочной системы. В случае дополнительных репозиториев их можно отключать целиком через файл .gclient, в случае отдельных каталогов можно запрещать их экспорт правкой скрипта export_tarball.py.

Sandbox

Используется seccomp sandbox, сборка SUID helper отключена. Для работы seccomp sandbox требуется включённый в ядре CONFIG_SECCOMP. В случае проблем рекомендуется отключить сэндбоксинг (осознавая последствия) ключом --disable-seccomp-sandbox и пойти плакаться в апстрим (по умолчанию везде всё ещё используется SUID sandbox, потому проблемы возможны).

Инструкции по самостоятельной сборке

Получение оригинального дерева

  • Получите depot_tools из его SVN-репозитория и создайте в $PATH файл gclient примерно следующего содержания:
#!/bin/sh
exec python "/path/to/depot_tools/gclient.py" "$@"
  • Создайте каталог, где будет лежать рабочая копия SVN, и положите туда файл .gclient примерно следующего содержания:
solutions = [
  { "name"        : "35.0.1916.114",
    "url"         : "https://src.chromium.org/chrome/releases/35.0.1916.114",
    "deps_file"   : "DEPS",
    "managed"     : True,

    "custom_deps": {      
      "src/content/test/data/layout_tests/LayoutTests": None,
      "src/chrome/tools/test/reference_build/chrome_win": None,
      "src/chrome_frame/tools/test/reference_build/chrome_win": None,
      "src/chrome/tools/test/reference_build/chrome_linux": None,
      "src/chrome/tools/test/reference_build/chrome_mac": None,
      "src/native_client_sdk/src/build_tools/toolchain_archives": None,
      "src/chrome/test/data/extensions/api_test/permissions/nacl_enabled/bin": None,
      "src/chrome/test/data/layout_tests": None,
      "src/chrome/tools/test/reference_build": None,
      "src/third_party/ffmpeg/binaries": None,
      "src/chrome/test/data/layout_tests": None,
      "src/chrome/tools/test/reference_build/chrome_linux": None,
      "src/third_party/ffmpeg/source/patched-ffmpeg-mt": None,
      "src/third_party/hunspell_dictionaries": None,
      "src/third_party/yasm/source/patched-yasm": None,
      "src/native_client/toolchain": None,

    },

    "safesync_url": "",
  },
]

Этот файл был создан согласно инструкции Get the Code командой gclient config http://src.chromium.org/svn/trunk/src и затем отредактирован.

  • Выполните команду gclient sync --nohooks и дождитесь окончания скачивания всех репозиториев. После этого в каталоге src/ будет лежать дерево исходников. В дальнейшем эта же команда будет обновлять это дерево.

Обновление репозитория gear

git rm -r chromium-browser
rm -rf chromium-browser
  • Экспортируйте новое дерево (из каталога с .gclient):
/path/to/chromium-browser.git/export_tarball.py --remove-nonessential-files /path/to/chromium-browser
mv /path/to/chromium-browser.git/{src,chromium-browser}
  • Закоммитьте новую версию дерева:
git add -f chromium-browser
git commit -s chromium-browser -m "r77777"

Используйте ревизию из svn info src (у различных дополнительных репозиториев будут другие номера ревизий).

  • Обновите в спек-файле номер ревизии (см.выше) и версии (из chromium-browser/chrome/VERSION).