Backports Policy: различия между версиями
Snejok (обсуждение | вклад) Нет описания правки |
|||
(не показано 6 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
{{DraftPolicy | {{DraftPolicy | ||
|responsible= | |responsible=cas@, glebfm@, george@, mike@ | ||
|discussion_link= | |discussion_link=https://lore.altlinux.org/devel/YQFM7vFVjISyQLV7@glebfm.cloud.tilaa.com/T/#u | ||
|discussion_since= | |discussion_since=2021 | ||
}} | }} | ||
== Backports policy == | == Backports policy == | ||
Этот документ регламентирует | Этот документ регламентирует правила оформления, сборки и публикации пакетов в [[Branches|стабильные репозитории]] ALT Linux Team. | ||
<!-- | |||
{{attention|После [[Binary package identity change|перехода на disttag]] делать полномасштабные бэкпорты, если технически они подразумевают пересборку того же исходного пакета в другом окружении, а не именно адаптацию под особенности ветки - стало излишне; пользуйтесь командой <tt>[[Справочник_по_git.alt#task|copy]]</tt>, которая была изменена так, что обеспечивает пересборку.}} | |||
--> | |||
== Назначение репозитория == | == Назначение репозитория == | ||
Репозиторий | [[Branches|Репозиторий]] созаётся для хранения пакетов, предназначенных для формирования соответствующего семейства дистрибутивов. Для каждого семейства дистрибутивов создается отдельный репозиторий. Список репозиториев можно получить, например, с помощью команды сборочнице <tt>[[Справочник_по_git.alt#task|task new --help]]</tt> | ||
В настоящее время это c9f1, c9f2, c9m2, p8, p9 и [[Десятая_платформа|p10]]. | |||
Часть пакетов репозитория не изменяется с момента его возникновения, несмотря на выход новых версий, другая часть — обновляется или как минимум модифицируется (например, из соображений безопасности). | |||
== «Копирование» пакетов == | |||
Если возможна успешная сборка пакета из исходников, ''полностью совпадающих'' с аналогичным пакетом в Sisyphus (т. е. имеющим тот же Source ID), например, из того же тега в git-е, рекомендуется пользоваться механизмом сборочницы <tt>[[Справочник_по_git.alt#task|task … copy]]</tt>. | |||
В этом случае ничего в спеке менять не надо (иначе это приведёт к изменению Source ID), пакет будет пересобран и помещён в репозиторий с тем же идентификатором [[Binary_package_identity_change|Name-Epoch-Version-Release]] (NEVR), что и в исходном репозитории. | |||
Полученный таким образом бинарный пакет будет заведомо отличаться от бинарного пакета в исходном репозитории, в том числе полями [[Transition_to_disttag|disttag]] и [[Branches#/etc/rpm/macros.d/|%_priority_distbranch]], которые определяют его приоритет при обновлении. | |||
== Оформление бекпорта == | |||
Если пакет невозможно собрать в стабильный репозиторий без изменения исходных текстов — требуются патчи, изменения списка зависимостей или названия инструментов в спеке, модификация документации и т. п. — пакет обязан иметь другой NEVR, конкретно — отличаться полем «Release». | |||
* | '''Требования''' к полю Release: | ||
* | * Отличие ''должно быть'' (разные исходники — разные NEVR) | ||
* | * Релиз бекпорта должен быть ''версионно меньше'' релиза исходного пакета | ||
* | '''Рекомендации''' по именованию релиза: | ||
* | * Предлагается формат «<tt>(Исходный_релиз-1).(Название_репозитория).(Релиз_в_репозитории)</tt>» | ||
** Например, если исходный релиз был «<tt>-alt1</tt>», то релиз в репозитории <tt>p10</tt> будет равен «<tt>-alt0.p10.1</tt>». | |||
* Бывают случаи (например, «<tt>-alt0.git0ea78d</tt>»), когда правило «-1» не срабатывает — здесь поможет только здравый смысл. | |||
** (возможно, здравый смысл стоило проявить ранее, и в исходном пакете добавить .1 — «<tt>-alt0.git0ea78d.1</tt>») | |||
* Если пакет приходится сопровождать в рамках репозитория, изменяется часть «<tt>Релиз_в_репозитории</tt>». | |||
** В первом примере выше после очередных правок того же пакета его релиз станет «<tt>-alt0.p10.2</tt>». | |||
* При очередном бекпорте нового релиза из исходного репозитория продолжает соблюдаться правило «-1», а поле «Релиз_в_репозитории» сбрасывается в '''1''' | |||
** Например, если в предыдущем примере было принято решение о бекпортировании следующего релиза «<tt>-alt2</tt>», то поле «Release» в <tt>p10</tt> будет равно «<tt>-alt1.p10.1</tt>». | |||
В остальном спек оформляется согласно [[Spec|общим правилам]]. | |||
== Сборка == | |||
* Сборка пакета в стабильный репозиторий отличается только указанием названия репозитория в [[Справочник_по_git.alt|командах сборочницы]]. | |||
* Как правило, права на сборку в стабильный репозиторий есть не у всех членов Team, и соответствующее успешное задание должно быть одобрено командой, сопровождающей конкретный репозиторий (например, сначала пройти тестирование). | |||
** Текущая [[p10#Процедура_сборки_пакетов_Десятой_платформы|процедура сборки пакетов Десятой платформы]] | |||
<!-- | |||
== Структура репозитория == | == Структура репозитория == | ||
Каждый репозиторий создается с помощью утилиты <tt>genbasedir</tt>. Поддерживаемые архитектуры — i586 и i686. Для каждой из архитектур определена компонента <tt>backports</tt>. При необходимости в репозиторий могут быть добавлены другие архитектуры. | Каждый репозиторий создается с помощью утилиты <tt>genbasedir</tt>. Поддерживаемые архитектуры — i586 и i686. Для каждой из архитектур определена компонента <tt>backports</tt>. При необходимости в репозиторий могут быть добавлены другие архитектуры. | ||
Строка 30: | Строка 64: | ||
== Помещение пакетов в репозиторий == | == Помещение пакетов в репозиторий == | ||
По состоянию на 2010 год централизованная сборка backports силами mike@ прекращена. | По состоянию на 2010 год централизованная сборка backports силами mike@ прекращена. | ||
Для получения возможности выкладывать пакеты в репозиторий необходимо быть участником команды разработчиков ALT Linux. Если вы уже в команде, ничего | Для получения возможности выкладывать пакеты в репозиторий необходимо быть участником команды разработчиков ALT Linux. Если вы уже в команде, ничего | ||
дополнительного не требуется. Информация по присоединению к команде находится [[Join|здесь]]. | дополнительного не требуется. Информация по присоединению к команде находится [[Join|здесь]]. | ||
Строка 39: | Строка 72: | ||
В случае успешной пересборки пакеты попадают в соответствующий репозиторий. | В случае успешной пересборки пакеты попадают в соответствующий репозиторий. | ||
== Требования к пакетам == | == Требования к пакетам == | ||
Строка 78: | Строка 110: | ||
* BACKPORT_RELEASE — номер релиза пакета внутри репозитория backports. Нумерация начинается с 1. | * BACKPORT_RELEASE — номер релиза пакета внутри репозитория backports. Нумерация начинается с 1. | ||
* DISTRO — репозиторий ([[Branches|бранч]]) либо дистрибутив (до ALM2.4 включительно), на который осуществляется портирование. Допустимые значения: | * DISTRO — репозиторий ([[Branches|бранч]]) либо дистрибутив (до ALM2.4 включительно), на который осуществляется портирование. Допустимые значения: | ||
** M80C — | ** M90P — Альт p9 (дистрибутивы на базе девятой платформы); | ||
** M80P — | ** M80C — Альт СП 8 (сертифицированный дистрибутив на базе ветки с8); | ||
** M80P — Альт p8 (дистрибутивы на базе восьмой платформы); | |||
** M70C — ALT Linux СПТ 7 (сертифицированный дистрибутив на базе ветки с7); | ** M70C — ALT Linux СПТ 7 (сертифицированный дистрибутив на базе ветки с7); | ||
** M70P — ALT Linux p7 (дистрибутивы на базе седьмой платформы); | ** M70P — ALT Linux p7 (дистрибутивы на базе седьмой платформы); | ||
Строка 102: | Строка 135: | ||
Если необходимо предотвратить возможность обновления с релиза вида alt0.DISTRO.REVISION до сизифовского alt7 при наличии в Сизифе alt8 (в том числе в случае серьёзной ошибки, исправленной в alt8), можно сделать релиз вида alt7.DISTRO.REVISION, при условии что за основу взят именно alt8 а не alt7. | Если необходимо предотвратить возможность обновления с релиза вида alt0.DISTRO.REVISION до сизифовского alt7 при наличии в Сизифе alt8 (в том числе в случае серьёзной ошибки, исправленной в alt8), можно сделать релиз вида alt7.DISTRO.REVISION, при условии что за основу взят именно alt8 а не alt7. | ||
== Взаимодействие с другими репозиториями == | == Взаимодействие с другими репозиториями == | ||
Если делаются не бэкпорты пакетов из Sisyphus, а существенные доработки или обновления — следует уведомить майнтейнера пакета в нём и сотрудничать с ним для сохранения добавленной функциональности. | Если делаются не бэкпорты пакетов из Sisyphus, а существенные доработки или обновления — следует уведомить майнтейнера пакета в нём и сотрудничать с ним для сохранения добавленной функциональности. | ||
Строка 112: | Строка 144: | ||
Бэкпорт новой версии библиотеки, входящей в состав дистрибутива, может нарушить бинарную совместимость дистрибутива. Это приведет к необходимости пересборки некоторого множества входящих в дистрибутив пакетов. Такое бэкпортирование допускается, только если будет осуществлена пересборка всех зависимых пакетов. | Бэкпорт новой версии библиотеки, входящей в состав дистрибутива, может нарушить бинарную совместимость дистрибутива. Это приведет к необходимости пересборки некоторого множества входящих в дистрибутив пакетов. Такое бэкпортирование допускается, только если будет осуществлена пересборка всех зависимых пакетов. | ||
--> | |||
{{Category navigation|title=Backports|category=Backports}} | {{Category navigation|title=Backports|category=Backports}} | ||
{{Category navigation|title=Черновики нормативных документов|category=Черновики нормативных документов|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Черновики нормативных документов|category=Черновики нормативных документов|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 19:17, 23 ноября 2021
Backports policy
Этот документ регламентирует правила оформления, сборки и публикации пакетов в стабильные репозитории ALT Linux Team.
Назначение репозитория
Репозиторий созаётся для хранения пакетов, предназначенных для формирования соответствующего семейства дистрибутивов. Для каждого семейства дистрибутивов создается отдельный репозиторий. Список репозиториев можно получить, например, с помощью команды сборочнице task new --help
В настоящее время это c9f1, c9f2, c9m2, p8, p9 и p10.
Часть пакетов репозитория не изменяется с момента его возникновения, несмотря на выход новых версий, другая часть — обновляется или как минимум модифицируется (например, из соображений безопасности).
«Копирование» пакетов
Если возможна успешная сборка пакета из исходников, полностью совпадающих с аналогичным пакетом в Sisyphus (т. е. имеющим тот же Source ID), например, из того же тега в git-е, рекомендуется пользоваться механизмом сборочницы task … copy.
В этом случае ничего в спеке менять не надо (иначе это приведёт к изменению Source ID), пакет будет пересобран и помещён в репозиторий с тем же идентификатором Name-Epoch-Version-Release (NEVR), что и в исходном репозитории.
Полученный таким образом бинарный пакет будет заведомо отличаться от бинарного пакета в исходном репозитории, в том числе полями disttag и %_priority_distbranch, которые определяют его приоритет при обновлении.
Оформление бекпорта
Если пакет невозможно собрать в стабильный репозиторий без изменения исходных текстов — требуются патчи, изменения списка зависимостей или названия инструментов в спеке, модификация документации и т. п. — пакет обязан иметь другой NEVR, конкретно — отличаться полем «Release».
Требования к полю Release:
- Отличие должно быть (разные исходники — разные NEVR)
- Релиз бекпорта должен быть версионно меньше релиза исходного пакета
Рекомендации по именованию релиза:
- Предлагается формат «(Исходный_релиз-1).(Название_репозитория).(Релиз_в_репозитории)»
- Например, если исходный релиз был «-alt1», то релиз в репозитории p10 будет равен «-alt0.p10.1».
- Бывают случаи (например, «-alt0.git0ea78d»), когда правило «-1» не срабатывает — здесь поможет только здравый смысл.
- (возможно, здравый смысл стоило проявить ранее, и в исходном пакете добавить .1 — «-alt0.git0ea78d.1»)
- Если пакет приходится сопровождать в рамках репозитория, изменяется часть «Релиз_в_репозитории».
- В первом примере выше после очередных правок того же пакета его релиз станет «-alt0.p10.2».
- При очередном бекпорте нового релиза из исходного репозитория продолжает соблюдаться правило «-1», а поле «Релиз_в_репозитории» сбрасывается в 1
- Например, если в предыдущем примере было принято решение о бекпортировании следующего релиза «-alt2», то поле «Release» в p10 будет равно «-alt1.p10.1».
В остальном спек оформляется согласно общим правилам.
Сборка
- Сборка пакета в стабильный репозиторий отличается только указанием названия репозитория в командах сборочницы.
- Как правило, права на сборку в стабильный репозиторий есть не у всех членов Team, и соответствующее успешное задание должно быть одобрено командой, сопровождающей конкретный репозиторий (например, сначала пройти тестирование).