Chromium
Статус
Собираются версии из транка SVN (Dev channel, Continuous build), майнтейнер старается вычитывать лог коммитов и при заметных улучшениях делать новую сборку. Спек написан на основе спека для Fedora, некоторые идеи взяты из пакета для Ubuntu.
Специфичные изменения
Патчи
- 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" : "src",
"url" : "http://src.chromium.org/svn/trunk/src",
"custom_deps" : {
# To use the trunk of a component instead of what's in DEPS:
#"component": "https://svnserver/component/trunk/",
# To exclude a component from your working copy:
#"data/really_large_component": None,
"src/third_party/WebKit/LayoutTests": None,
"src/chrome/test/data/extensions/api_test/permissions/nacl_enabled/bin": None,
"src/chrome/test/data/layout_tests/LayoutTests/fast/events": None,
"src/chrome/test/data/layout_tests/LayoutTests/fast/js/resources": None,
"src/chrome/test/data/layout_tests/LayoutTests/fast/workers": None,
"src/chrome/test/data/layout_tests/LayoutTests/http/tests/resources": None,
"src/chrome/test/data/layout_tests/LayoutTests/http/tests/xmlhttprequest": None,
"src/chrome/test/data/layout_tests/LayoutTests/http/tests/workers": None,
"src/chrome/test/data/layout_tests/LayoutTests/media": None,
"src/chrome/test/data/layout_tests/LayoutTests/platform/chromium/fast/workers": None,
"src/chrome/test/data/layout_tests/LayoutTests/storage/domstorage": None,
"src/chrome/tools/test/reference_build": None,
"src/third_party/ffmpeg/binaries/chromium/linux/ia32": None,
"src/third_party/ffmpeg/binaries/chromium/linux/x64": None,
"src/third_party/ffmpeg/binaries/chromium/linux/ia32_dbg": None,
"src/third_party/ffmpeg/binaries/chromium/linux/x64_dbg": None,
"src/breakpad/src": None,
"src/chrome/test/data/layout_tests/LayoutTests/http/tests/appcache": None,
"src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-mac/fast/events": None,
"src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-mac/http/tests/workers": None,
"src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-mac/storage/domstorage": None,
"src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-win/fast/events": None,
"src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-win/fast/workers": None,
"src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-win/http/tests/workers": None,
"src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-win/storage/domstorage": None,
"src/chrome/test/data/layout_tests/LayoutTests/websocket/tests/workers": 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/third_party/libvpx/include": None,
"src/third_party/libvpx/lib": None,
},
"safesync_url": "http://build.chromium.org/buildbot/continuous/linux/LATEST/REVISION"
}
]
Этот файл был создан согласно инструкции Get the Code командой gclient config http://src.chromium.org/svn/trunk/src и затем отредактирован.
- Выполните команду gclient sync --nohooks и дождитесь окончания скачивания всех репозиториев. После этого в каталоге src/ будет лежать дерево исходников. В дальнейшем эта же команда будет обновлять это дерево.
Обновление репозитория gear
- Склонируйте репозиторий http://git.altlinux.org/people/wrar/packages/chromium-browser.git
- Удалите старое дерево:
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).