MozillaBuild
Материал из ALT Linux Wiki
Radik (обсуждение | вклад) (Новая страница: «==Сборка Mozilla-пакетов== В данном документе будет описываться как собираются пакеты от Mozilla (F...») |
м (→Собираем Seamonkey: adapt to the ALT's hg-fast-export package) |
||
(22 промежуточные версии не показаны) | |||
Строка 1: | Строка 1: | ||
+ | [[Категория:Devel]] | ||
+ | [[Категория:Sisyphus]] | ||
+ | |||
==Сборка Mozilla-пакетов== | ==Сборка Mozilla-пакетов== | ||
В данном документе будет описываться как собираются пакеты от Mozilla (Firefox, Thunderbird) в ALTLinux. | В данном документе будет описываться как собираются пакеты от Mozilla (Firefox, Thunderbird) в ALTLinux. | ||
Строка 11: | Строка 14: | ||
Эти бранчи именуются также как называются репозитории на hg.mozilla.org. | Эти бранчи именуются также как называются репозитории на hg.mozilla.org. | ||
- | Бранчи для опакечивания | + | Бранчи для опакечивания строятся на одном или более апстримных бранчах. |
Например rpms/thunderbird-3.1.x создан из releases/comm-1.9.2 и в него | Например rpms/thunderbird-3.1.x создан из releases/comm-1.9.2 и в него | ||
мерджится releases/mozilla-1.9.2 в каталог mozilla/. Эта же | мерджится releases/mozilla-1.9.2 в каталог mozilla/. Эта же | ||
Строка 19: | Строка 22: | ||
репозитории. | репозитории. | ||
+ | ===Информация по бранчам=== | ||
+ | master - Это информационный бран. Смотрите ниже.<br\> | ||
+ | |||
+ | Upstream-бранчи:<br\> | ||
+ | |||
+ | comm-central - Branch для Thunderbird, Sunbird и Seamonkey [http://hg.mozilla.org/comm-central].<br\> | ||
+ | mozilla-central - Branch для Xulrunner и Firefox [http://hg.mozilla.org/mozilla-central].<br\> | ||
+ | releases/comm-1.9.1 - Branch разработки для Thunderbird 3, SeaMonkey 2 и Sunbird 1 with Gecko 1.9.1 [http://hg.mozilla.org/releases/comm-1.9.1].<br\> | ||
+ | releases/mozilla-1.9.1 - Branch for Gecko-1.9.1 based products [http://hg.mozilla.org/releases/mozilla-1.9.1].<br\> | ||
+ | releases/mozilla-1.9.2 - Branch for Gecko-1.9.2 based products [http://hg.mozilla.org/releases/mozilla-1.9.2].<br\> | ||
+ | |||
+ | Бранчи для сборки пакетов:<br\> | ||
+ | |||
+ | rpms/firefox-2.x - firefox-2*-alt* packages. (Не поддерживается)<br\> | ||
+ | rpms/firefox-3.0.x - firefox-3.0*-alt* packages. (Не поддерживается)<br\> | ||
+ | rpms/firefox-3.1.x - firefox-3.1*-alt* packages. (Поддерживается)<br\> | ||
+ | Depends: releases/mozilla-1.9.1<br\> | ||
+ | rpms/firefox-3.6.x - firefox-3.6*-alt* packages. (Поддерживается)<br\> | ||
+ | Depends: releases/mozilla-1.9.2<br\> | ||
+ | rpms/sunbird-0.9 - sunbird-0.9*-alt* packages. (Устарел)<br\> | ||
+ | rpms/thunderbird-2.x - thunderbird-2*-alt* packages. (Не поддерживается)<br\> | ||
+ | rpms/thunderbird-3.0.x - thunderbird-3.0*-alt* packages. (Поддерживается)<br\> | ||
+ | Depends: releases/comm-1.9.1<br\> | ||
+ | Depends: releases/mozilla-1.9.1<br\> | ||
+ | rpms/xulrunner-1.9.0 - xulrunner-1.9.0*-alt* packages. (Не поддерживается)<br\> | ||
+ | rpms/xulrunner-1.9.1 - xulrunner-1.9.1*-alt* packages. (Поддерживается)<br\> | ||
+ | Depends: releases/mozilla-1.9.1<br\> | ||
+ | |||
+ | Информация для сборки:<br\> | ||
+ | |||
+ | Чтобы собрать текущую версию проекта используйте утилиту mozilla-build. Эта утилита склонирует локально необходимые репозитории пакетов и собирёт их в нужном порядке.<br\> | ||
+ | |||
+ | Используйте: mozilla-build <firefox|thunderbird|xulrunner|all> | ||
+ | |||
+ | ===Секреты spec-файла=== | ||
+ | В спеке есть такой параметр: | ||
+ | %set_tbird_ciddir noarch B274D460-4DF9-454c-AC69-CA71398D7498 | ||
+ | Алексей сказал так: | ||
+ | |||
+ | Алексей Гладков: это id расширения. оно берётся из install.rdf | ||
+ | Алексей Гладков: в install.rdf оно только одно | ||
+ | Алексей Гладков: при установке расширения создаётся каталог с тем же именем | ||
+ | Алексей Гладков: иногда там uuid, иногда что-то осмысленное | ||
+ | |||
+ | Для того, чтобы правильно определить id можно воспользоваться утилитой installrdf.sh, которая входит в пакет rpm-build-mozilla.org: | ||
+ | $ installrdf.sh /usr/lib/thunderbird/extensions/\{e2fda1a4-762b-4020-b5ad-a41df1933103\}/install.rdf -i | ||
+ | id {e2fda1a4-762b-4020-b5ad-a41df1933103} | ||
+ | name Lightning | ||
+ | version 1.0b3pre | ||
+ | description An integrated calendar for Thunderbird | ||
+ | developer Build ID: 20110124070537 | ||
+ | creator Mozilla Calendar Project | ||
+ | homepageURL http://www.mozilla.org/projects/calendar/releases/lightning1.0b3pre.html | ||
+ | |||
+ | $ installrdf.sh /usr/lib/thunderbird/extensions/\{e2fda1a4-762b-4020-b5ad-a41df1933103\}/install.rdf -t thunderbird | ||
+ | thunderbird >= 3.1 | ||
+ | thunderbird < 3.2 | ||
+ | |||
+ | ===Собираем Thunderbird=== | ||
+ | git checkout rpms/thunderbird-3.1.x; | ||
+ | git merge releases/comm-1.9.2 | ||
+ | [возможно сделать некоторые действия для subtree] | ||
+ | git merge -s subtree releases/mozilla-1.9.2 | ||
+ | |||
+ | Теперь подключаем необходимый бранч и запускаем сборку пакета: | ||
+ | gear-hsh -v --commit --target=хххх | ||
+ | |||
+ | ===Собираем Thunderbird-ru=== | ||
+ | Основной репозиторий находится [http://git.altlinux.org/people/legion/packages/thunderbird-ru.git тут]. Свежую русификацию лучше брать на [http://mozilla-russia.org/products/thunderbird/ mozilla-russia.org]. | ||
+ | Ну а дальше все обычно. Обновляем, правим спек и собираем пакет. | ||
+ | |||
+ | ===Собираем Seamonkey=== | ||
+ | Клонируем репозиторий comm-release: <pre>hg clone -r SEAMONKEY_2_2_RELEASE http://hg.mozilla.org/releases/comm-release/</pre> | ||
+ | Клонируем репозиторий mozilla-release: <pre>hg clone -r SEAMONKEY_2_2_RELEASE http://hg.mozilla.org/releases/mozilla-release/</pre> | ||
+ | Клонируем репозиторий ldap-sdks: <pre>hg clone -r SEAMONKEY_2_2_RELEASE http://hg.mozilla.org/projects/ldap-sdks/</pre> | ||
+ | Клонируем репозиторий chatzilla: <pre>hg clone -r SEAMONKEY_2_2_RELEASE http://hg.mozilla.org/chatzilla/</pre> | ||
+ | Клонируем репозиторий dom-inspector: <pre>hg clone -r SEAMONKEY_2_2_RELEASE http://hg.mozilla.org/dom-inspector/</pre> | ||
+ | Клонируем репозиторий venkman: <pre>hg clone -r SEAMONKEY_2_2_RELEASE http://hg.mozilla.org/venkman/</pre> | ||
+ | Рядом создаём '''mozilla-release.git''', '''comm-release.git''', '''ldap-sdks.git''', '''chatzilla.git''', '''dom-inspector.git''', '''venkman.git'''. | ||
+ | <pre>$ cd mozilla-release.git | ||
+ | $git init</pre> | ||
+ | Когда сделаете 'git init' делаете | ||
+ | <pre>hg-fast-export -M master -f -r "../mozilla-release"</pre> | ||
+ | И долго ждём :) | ||
+ | То же самое с comm-release.git, ldap-sdks.git, chatzilla.git, dom-inspector.git, venkman.git | ||
+ | Теперь создаем каталог для сборки seamonkey. | ||
+ | <pre>$ mkdir seamonkey2 | ||
+ | $ cd seamonkey2 | ||
+ | $ git init seamonkey2 | ||
+ | $ git fetch ../comm-release.git master:releases/comm-release | ||
+ | $ git fetch ../mozilla-release.git master:releases/mozilla-release | ||
+ | $ git checkout releases/comm-release | ||
+ | $ git checkout -b rpms/seamonkey-2.x | ||
+ | $ git merge -s ours --no-commit releases/mozilla-release | ||
+ | $ git read-tree --prefix=mozilla/ -u releases/mozilla-release | ||
+ | $ git commit -m "Merge 'releases/mozilla-release' branch as our subdirectory"</pre> | ||
+ | И далее: | ||
+ | <pre>$ git fetch ../ldap-sdks.git master:projects/ldap-sdks | ||
+ | $ git merge -s ours --no-commit projects/ldap-sdks | ||
+ | $ git read-tree --prefix=ldap/sdks -u projects/ldap-sdks | ||
+ | $ git commit -m "Merge 'projects/ldap-sdks' branch as our subdirectory"</pre> | ||
+ | И далее: | ||
+ | <pre>$ git fetch ../chatzilla.git master:projects/chatzilla | ||
+ | $ git merge -s ours --no-commit projects/chatzilla | ||
+ | $ git read-tree --prefix=mozilla/extensions/irc/ -u projects/chatzilla | ||
+ | $ git commit -m "Merge 'projects/chatzilla branch as our subdirectory"</pre> | ||
+ | И далее: | ||
+ | <pre>$ git fetch ../dom-inspector.git master:projects/dom-inspector | ||
+ | $ git merge -s ours --no-commit projects/dom-inspector | ||
+ | $ git read-tree --prefix=mozilla/extensions/inspector -u projects/dom-inspector | ||
+ | $ git commit -m "Merge 'projects/dom-inspector branch as our subdirectory"</pre> | ||
+ | И далее: | ||
+ | <pre>$ git fetch ../venkman.git master:projects/venkman | ||
+ | $ git merge -s ours --no-commit projects/venkman | ||
+ | $ git read-tree --prefix=mozilla/extensions/venkman -u projects/venkman | ||
+ | $ git commit -m "Merge 'projects/venkman branch as our subdirectory"</pre> | ||
- | + | В последствии после обновления бранча releases/mozilla-release из соответствующего ему репо просто делаем: | |
- | + | <pre>git pull -s subtree releases/mozilla-release</pre> | |
+ | и аналогично для других репозиториев. |
Текущая версия на 16:31, 21 сентября 2016
Содержание |
Сборка Mozilla-пакетов
В данном документе будет описываться как собираются пакеты от Mozilla (Firefox, Thunderbird) в ALTLinux. Описание будет идти со слов Legion@, поэтому могут быть выражены не совсем точно.
Философия
Репозиторий mozilla.org.git устроен очень просто. В нём есть два вида бранчей: апстримные и пакетные (бранчи из которых собираются пакеты).
Апстримные бранчи получены путём конвертации апстримных репозиориев (в апстриме не используются бранчи) из mercurial в git. Эти бранчи именуются также как называются репозитории на hg.mozilla.org.
Бранчи для опакечивания строятся на одном или более апстримных бранчах. Например rpms/thunderbird-3.1.x создан из releases/comm-1.9.2 и в него мерджится releases/mozilla-1.9.2 в каталог mozilla/. Эта же последовательность сборки описана в https://developer.mozilla.org/en/Commcentral_source_code_%28Mercurial%29
Остальные пакеты устроены проще т.к. основываются на одном апстримном репозитории.
Информация по бранчам
master - Это информационный бран. Смотрите ниже.
Upstream-бранчи:
comm-central - Branch для Thunderbird, Sunbird и Seamonkey [1].
mozilla-central - Branch для Xulrunner и Firefox [2].
releases/comm-1.9.1 - Branch разработки для Thunderbird 3, SeaMonkey 2 и Sunbird 1 with Gecko 1.9.1 [3].
releases/mozilla-1.9.1 - Branch for Gecko-1.9.1 based products [4].
releases/mozilla-1.9.2 - Branch for Gecko-1.9.2 based products [5].
Бранчи для сборки пакетов:
rpms/firefox-2.x - firefox-2*-alt* packages. (Не поддерживается)
rpms/firefox-3.0.x - firefox-3.0*-alt* packages. (Не поддерживается)
rpms/firefox-3.1.x - firefox-3.1*-alt* packages. (Поддерживается)
Depends: releases/mozilla-1.9.1
rpms/firefox-3.6.x - firefox-3.6*-alt* packages. (Поддерживается)
Depends: releases/mozilla-1.9.2
rpms/sunbird-0.9 - sunbird-0.9*-alt* packages. (Устарел)
rpms/thunderbird-2.x - thunderbird-2*-alt* packages. (Не поддерживается)
rpms/thunderbird-3.0.x - thunderbird-3.0*-alt* packages. (Поддерживается)
Depends: releases/comm-1.9.1
Depends: releases/mozilla-1.9.1
rpms/xulrunner-1.9.0 - xulrunner-1.9.0*-alt* packages. (Не поддерживается)
rpms/xulrunner-1.9.1 - xulrunner-1.9.1*-alt* packages. (Поддерживается)
Depends: releases/mozilla-1.9.1
Информация для сборки:
Чтобы собрать текущую версию проекта используйте утилиту mozilla-build. Эта утилита склонирует локально необходимые репозитории пакетов и собирёт их в нужном порядке.
Используйте: mozilla-build <firefox|thunderbird|xulrunner|all>
Секреты spec-файла
В спеке есть такой параметр:
%set_tbird_ciddir noarch B274D460-4DF9-454c-AC69-CA71398D7498
Алексей сказал так:
Алексей Гладков: это id расширения. оно берётся из install.rdf Алексей Гладков: в install.rdf оно только одно Алексей Гладков: при установке расширения создаётся каталог с тем же именем Алексей Гладков: иногда там uuid, иногда что-то осмысленное
Для того, чтобы правильно определить id можно воспользоваться утилитой installrdf.sh, которая входит в пакет rpm-build-mozilla.org:
$ installrdf.sh /usr/lib/thunderbird/extensions/\{e2fda1a4-762b-4020-b5ad-a41df1933103\}/install.rdf -i id {e2fda1a4-762b-4020-b5ad-a41df1933103} name Lightning version 1.0b3pre description An integrated calendar for Thunderbird developer Build ID: 20110124070537 creator Mozilla Calendar Project homepageURL http://www.mozilla.org/projects/calendar/releases/lightning1.0b3pre.html
$ installrdf.sh /usr/lib/thunderbird/extensions/\{e2fda1a4-762b-4020-b5ad-a41df1933103\}/install.rdf -t thunderbird thunderbird >= 3.1 thunderbird < 3.2
Собираем Thunderbird
git checkout rpms/thunderbird-3.1.x; git merge releases/comm-1.9.2 [возможно сделать некоторые действия для subtree] git merge -s subtree releases/mozilla-1.9.2
Теперь подключаем необходимый бранч и запускаем сборку пакета:
gear-hsh -v --commit --target=хххх
Собираем Thunderbird-ru
Основной репозиторий находится тут. Свежую русификацию лучше брать на mozilla-russia.org. Ну а дальше все обычно. Обновляем, правим спек и собираем пакет.
Собираем Seamonkey
Клонируем репозиторий comm-release:hg clone -r SEAMONKEY_2_2_RELEASE http://hg.mozilla.org/releases/comm-release/Клонируем репозиторий mozilla-release:
hg clone -r SEAMONKEY_2_2_RELEASE http://hg.mozilla.org/releases/mozilla-release/Клонируем репозиторий ldap-sdks:
hg clone -r SEAMONKEY_2_2_RELEASE http://hg.mozilla.org/projects/ldap-sdks/Клонируем репозиторий chatzilla:
hg clone -r SEAMONKEY_2_2_RELEASE http://hg.mozilla.org/chatzilla/Клонируем репозиторий dom-inspector:
hg clone -r SEAMONKEY_2_2_RELEASE http://hg.mozilla.org/dom-inspector/Клонируем репозиторий venkman:
hg clone -r SEAMONKEY_2_2_RELEASE http://hg.mozilla.org/venkman/
Рядом создаём mozilla-release.git, comm-release.git, ldap-sdks.git, chatzilla.git, dom-inspector.git, venkman.git.
$ cd mozilla-release.git $git init
Когда сделаете 'git init' делаете
hg-fast-export -M master -f -r "../mozilla-release"
И долго ждём :) То же самое с comm-release.git, ldap-sdks.git, chatzilla.git, dom-inspector.git, venkman.git Теперь создаем каталог для сборки seamonkey.
$ mkdir seamonkey2 $ cd seamonkey2 $ git init seamonkey2 $ git fetch ../comm-release.git master:releases/comm-release $ git fetch ../mozilla-release.git master:releases/mozilla-release $ git checkout releases/comm-release $ git checkout -b rpms/seamonkey-2.x $ git merge -s ours --no-commit releases/mozilla-release $ git read-tree --prefix=mozilla/ -u releases/mozilla-release $ git commit -m "Merge 'releases/mozilla-release' branch as our subdirectory"
И далее:
$ git fetch ../ldap-sdks.git master:projects/ldap-sdks $ git merge -s ours --no-commit projects/ldap-sdks $ git read-tree --prefix=ldap/sdks -u projects/ldap-sdks $ git commit -m "Merge 'projects/ldap-sdks' branch as our subdirectory"
И далее:
$ git fetch ../chatzilla.git master:projects/chatzilla $ git merge -s ours --no-commit projects/chatzilla $ git read-tree --prefix=mozilla/extensions/irc/ -u projects/chatzilla $ git commit -m "Merge 'projects/chatzilla branch as our subdirectory"
И далее:
$ git fetch ../dom-inspector.git master:projects/dom-inspector $ git merge -s ours --no-commit projects/dom-inspector $ git read-tree --prefix=mozilla/extensions/inspector -u projects/dom-inspector $ git commit -m "Merge 'projects/dom-inspector branch as our subdirectory"
И далее:
$ git fetch ../venkman.git master:projects/venkman $ git merge -s ours --no-commit projects/venkman $ git read-tree --prefix=mozilla/extensions/venkman -u projects/venkman $ git commit -m "Merge 'projects/venkman branch as our subdirectory"
В последствии после обновления бранча releases/mozilla-release из соответствующего ему репо просто делаем:
git pull -s subtree releases/mozilla-release
и аналогично для других репозиториев.