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

Материал из ALT Linux Wiki
Нет описания правки
м (источник неправильного написания названия дистрибутива)
 
(не показано 16 промежуточных версий 3 участников)
Строка 1: Строка 1:
* [[:Категория:Devel]]
[[Категория:Devel]]
* [[:Категория:Sisyphus]]
[[Категория:Sisyphus]]


==Сборка Mozilla-пакетов==
==Сборка Mozilla-пакетов==
В данном документе будет описываться как собираются пакеты от Mozilla (Firefox, Thunderbird) в ALTLinux.
В данном документе будет описываться как собираются пакеты от Mozilla (Firefox, Thunderbird) в ALT Linux.
Описание будет идти со слов Legion@, поэтому могут быть выражены не совсем точно.
Описание будет идти со слов Legion@, поэтому могут быть выражены не совсем точно.


Строка 14: Строка 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/. Эта же
Строка 88: Строка 88:
Теперь подключаем необходимый бранч и запускаем сборку пакета:
Теперь подключаем необходимый бранч и запускаем сборку пакета:
  gear-hsh -v --commit --target=хххх
  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>
и аналогично для других репозиториев.

Текущая версия от 07:39, 31 мая 2019


Сборка Mozilla-пакетов

В данном документе будет описываться как собираются пакеты от Mozilla (Firefox, Thunderbird) в ALT Linux. Описание будет идти со слов 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 - Это информационный бран. Смотрите ниже.<br\>

Upstream-бранчи:<br\>

comm-central - Branch для Thunderbird, Sunbird и Seamonkey [1].<br\> mozilla-central - Branch для Xulrunner и Firefox [2].<br\> releases/comm-1.9.1 - Branch разработки для Thunderbird 3, SeaMonkey 2 и Sunbird 1 with Gecko 1.9.1 [3].<br\> releases/mozilla-1.9.1 - Branch for Gecko-1.9.1 based products [4].<br\> releases/mozilla-1.9.2 - Branch for Gecko-1.9.2 based products [5].<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

Основной репозиторий находится тут. Свежую русификацию лучше брать на 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

и аналогично для других репозиториев.