Chromium: различия между версиями
(v8) |
м (absurdofied) |
||
Строка 3: | Строка 3: | ||
== Специфичные изменения == | == Специфичные изменения == | ||
===Патчи=== | |||
=== Патчи === | |||
* {{path|chromium-20090929-no-sqlite-debug.patch}}: взят из Fedora, согласно комментарию в спеке исправляет некое падение. | * {{path|chromium-20090929-no-sqlite-debug.patch}}: взят из Fedora, согласно комментарию в спеке исправляет некое падение. | ||
* {{path|chromium-20091111-alt-kde4-path.patch}}: совместимость с ALT-сборкой KDE4, использующей {{path|~/.kde4}} вместо {{path|~/.kde}}. | * {{path|chromium-20091111-alt-kde4-path.patch}}: совместимость с ALT-сборкой KDE4, использующей {{path|~/.kde4}} вместо {{path|~/.kde}}. | ||
* {{path|chromium-20091205-alt-fedora-gyp-system-libevent-v8.patch}}: вносит изменения в сборочную систему, позволяющие сборку с системной копией libv8. | * {{path|chromium-20091205-alt-fedora-gyp-system-libevent-v8.patch}}: вносит изменения в сборочную систему, позволяющие сборку с системной копией libv8. | ||
* {{path|chromium-20100112-codechanges-system-nss-nspr-v8.patch}}: изменяет ссылки на заголовочные файлы nspr с локальных копий на системные. | * {{path|chromium-20100112-codechanges-system-nss-nspr-v8.patch}}: изменяет ссылки на заголовочные файлы nspr с локальных копий на системные. | ||
===Библиотеки=== | |||
=== Библиотеки === | |||
Дерево исходников содержит (в основном в каталоге {{path|third_party}}) копии многих внешних проектов, в большинстве случаев изменённые локально. У нас chromium собирается со всеми системными библиотеками, которые поддерживаются апстримом (через параметры use_system_*), а также с libv8. Библиотеки ffmpeg заменены символическими ссылками на системные версии, упакованными в отдельный пакет. | Дерево исходников содержит (в основном в каталоге {{path|third_party}}) копии многих внешних проектов, в большинстве случаев изменённые локально. У нас chromium собирается со всеми системными библиотеками, которые поддерживаются апстримом (через параметры use_system_*), а также с libv8. Библиотеки ffmpeg заменены символическими ссылками на системные версии, упакованными в отдельный пакет. | ||
===Облегчение дерева исходников=== | |||
=== Облегчение дерева исходников === | |||
Поскольку дерево содержит сотни мегабайт данных, не требующихся для сборки (либо вообще, либо для Linux/для ALT), их желательно удалять для уменьшения размера репозитория и использования ресурсов сборочной системы. В случае дополнительных репозиториев их можно отключать целиком через файл {{path|.gclient}}, в случае отдельных каталогов можно запрещать их экспорт правкой скрипта {{path|export_tarball.py}}. | Поскольку дерево содержит сотни мегабайт данных, не требующихся для сборки (либо вообще, либо для Linux/для ALT), их желательно удалять для уменьшения размера репозитория и использования ресурсов сборочной системы. В случае дополнительных репозиториев их можно отключать целиком через файл {{path|.gclient}}, в случае отдельных каталогов можно запрещать их экспорт правкой скрипта {{path|export_tarball.py}}. | ||
===Sandbox=== | |||
Используется SUID helper {{path|/usr/lib/chromium-browser/chromium-browser-sandbox}}, требуется поддержка PID Namespaces в ядре (CONFIG_PID_NS) и (в случае контейнеров) наличие CAP_SYS_ADMIN. Не исключено, что SUID-бит можно заменить выдачей CAP_SYS_ADMIN через | === Sandbox === | ||
{{prg|setcap(8)}}. | Используется SUID helper {{path|/usr/lib/chromium-browser/chromium-browser-sandbox}}, требуется поддержка PID Namespaces в ядре (CONFIG_PID_NS) и (в случае контейнеров) наличие CAP_SYS_ADMIN. Не исключено, что SUID-бит можно заменить выдачей CAP_SYS_ADMIN через {{prg|setcap(8)}}. | ||
== Инструкции по самостоятельной сборке == | == Инструкции по самостоятельной сборке == | ||
=== Получение оригинального дерева === | === Получение оригинального дерева === | ||
* Из репозитория [http://src.chromium.org/svn/trunk/tools/depot_tools/ depot_tools] возьмите файлы gclient*.py и положите их в $PATH, создав ссылку ''gclient -> gclient.py'' (возможно, сойдёт и переименование). | * Из репозитория [http://src.chromium.org/svn/trunk/tools/depot_tools/ depot_tools] возьмите файлы gclient*.py и положите их в $PATH, создав ссылку ''gclient -> gclient.py'' (возможно, сойдёт и переименование). | ||
Строка 60: | Строка 64: | ||
* Обновите в спек-файле номер ревизии (см.выше) и версии (из {{path|chromium-browser/chrome/VERSION}}). | * Обновите в спек-файле номер ревизии (см.выше) и версии (из {{path|chromium-browser/chrome/VERSION}}). | ||
==V8== | == V8 == | ||
Используется системная сборка libv8, что позволяет её обновлять отдельно от chromium. Добавлен soname и написан version script, но апстрим не заботится о бинарной совместимости, поэтому может иметь смысл отказаться от отдельной разделяемой библиотеки и собирать статически с копией из дерева chromium. Кроме того, поскольоку других клиентов в обозримом будущем не предвидится, можно не менять soname при пропадании символов, не используемых никакими сборками chromium. | Используется системная сборка libv8, что позволяет её обновлять отдельно от chromium. Добавлен soname и написан version script, но апстрим не заботится о бинарной совместимости, поэтому может иметь смысл отказаться от отдельной разделяемой библиотеки и собирать статически с копией из дерева chromium. Кроме того, поскольоку других клиентов в обозримом будущем не предвидится, можно не менять soname при пропадании символов, не используемых никакими сборками chromium. |
Версия от 19:35, 15 января 2010
Статус
Собираются версии из транка SVN (Continuous build), майнтейнер старается вычитывать лог коммитов и при заметных улучшениях делать новую сборку. Спек написан на основе спека для Fedora, некоторые идеи взяты из пакета для Ubuntu.
Специфичные изменения
Патчи
- chromium-20090929-no-sqlite-debug.patch: взят из Fedora, согласно комментарию в спеке исправляет некое падение.
- chromium-20091111-alt-kde4-path.patch: совместимость с ALT-сборкой KDE4, использующей ~/.kde4 вместо ~/.kde.
- chromium-20091205-alt-fedora-gyp-system-libevent-v8.patch: вносит изменения в сборочную систему, позволяющие сборку с системной копией libv8.
- chromium-20100112-codechanges-system-nss-nspr-v8.patch: изменяет ссылки на заголовочные файлы nspr с локальных копий на системные.
Библиотеки
Дерево исходников содержит (в основном в каталоге third_party) копии многих внешних проектов, в большинстве случаев изменённые локально. У нас chromium собирается со всеми системными библиотеками, которые поддерживаются апстримом (через параметры use_system_*), а также с libv8. Библиотеки ffmpeg заменены символическими ссылками на системные версии, упакованными в отдельный пакет.
Облегчение дерева исходников
Поскольку дерево содержит сотни мегабайт данных, не требующихся для сборки (либо вообще, либо для Linux/для ALT), их желательно удалять для уменьшения размера репозитория и использования ресурсов сборочной системы. В случае дополнительных репозиториев их можно отключать целиком через файл .gclient, в случае отдельных каталогов можно запрещать их экспорт правкой скрипта export_tarball.py.
Sandbox
Используется SUID helper /usr/lib/chromium-browser/chromium-browser-sandbox, требуется поддержка PID Namespaces в ядре (CONFIG_PID_NS) и (в случае контейнеров) наличие CAP_SYS_ADMIN. Не исключено, что SUID-бит можно заменить выдачей CAP_SYS_ADMIN через setcap(8).
Инструкции по самостоятельной сборке
Получение оригинального дерева
- Из репозитория depot_tools возьмите файлы gclient*.py и положите их в $PATH, создав ссылку gclient -> gclient.py (возможно, сойдёт и переименование).
- Создайте каталог, где будет лежать рабочая копия SVN, и положите туда файл .gclient примерно следующего содержания:
solutions = [
{ "name" : "src",
"url" : "http://src.chromium.org/svn/trunk/src",
"custom_deps" : {
"src/third_party/WebKit/LayoutTests": None,
"src/chrome/test/data/layout_tests/LayoutTests/fast/events": None,
"src/chrome/test/data/layout_tests/LayoutTests/fast/workers": 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/fast/js/resources": None,
"src/chrome/test/data/layout_tests/LayoutTests/http/tests/resources": 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,
},
"safesync_url": "http://build.chromium.org/buildbot/continuous/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).
V8
Используется системная сборка libv8, что позволяет её обновлять отдельно от chromium. Добавлен soname и написан version script, но апстрим не заботится о бинарной совместимости, поэтому может иметь смысл отказаться от отдельной разделяемой библиотеки и собирать статически с копией из дерева chromium. Кроме того, поскольоку других клиентов в обозримом будущем не предвидится, можно не менять soname при пропадании символов, не используемых никакими сборками chromium.