Binary package identity change: различия между версиями
Ldv (обсуждение | вклад) (Предлагаемые изменения идентификации собранных пакетов: RPMTAG_COOKIE) |
Ldv (обсуждение | вклад) (RPMTAG_) |
||
Строка 20: | Строка 20: | ||
## конфигурации apt, распространяемые в бранчах и дистрибутивах, предлагается распространять заранее настроенными на соответствующий бранч. | ## конфигурации apt, распространяемые в бранчах и дистрибутивах, предлагается распространять заранее настроенными на соответствующий бранч. | ||
# Задачу идентификации предлагается решать следующим образом: | # Задачу идентификации предлагается решать следующим образом: | ||
## имя целевого бранча каждого бинарного пакета предлагается указывать при сборке автоматически в | ## имя целевого бранча каждого бинарного пакета предлагается указывать при сборке автоматически в <tt>RPMTAG_DISTRIBUTION</tt> (в формате <tt>"ALT Sisyphus"</tt>) и <tt>RPMTAG_DISTTAG</tt> (в формате <tt>"sisyphus.owner.task.subtask"</tt>) в дополнение к информации, уже указываемой в <tt>RPMTAG_BUILDHOST</tt>; | ||
## при формировании бинарных подпакетов предлагается автоматически генерировать Binary Packages Identifier и сохранять его в | ## при формировании бинарных подпакетов предлагается автоматически генерировать Binary Packages Identifier и сохранять его в <tt>RPMTAG_COOKIE</tt>; зависимости между подпакетами предлагается изменять автоматически во время сборки с EVR на зависимости, основанные на этом идентификаторе; | ||
## бинарные пакеты с одинаковыми NEVR предлагается допускать в различные бранчи только при условии, что их исходники совпадают; при сборке из gear-репозиториев совпадать должны сборочные тэги, в противном случае совпадать должны srpm-пакеты. | ## бинарные пакеты с одинаковыми NEVR предлагается допускать в различные бранчи только при условии, что их исходники совпадают; при сборке из gear-репозиториев совпадать должны сборочные git-тэги, в противном случае совпадать должны srpm-пакеты. | ||
# Поскольку ожидается появление разных бинарных пакетов с одинаковыми NEVR в разных бранчах, предлагается разрешить <tt>rebuild</tt> исходных пакетов без внесения в них изменений (хотя, естественно, результат может получиться отличающимся от результата предыдущей сборки); при этом в changelog собранных бинарных пакетов следует автоматически вносить запись о факте пересборки. | # Поскольку ожидается появление разных бинарных пакетов с одинаковыми NEVR в разных бранчах, предлагается разрешить <tt>rebuild</tt> исходных пакетов без внесения в них изменений (хотя, естественно, результат может получиться отличающимся от результата предыдущей сборки); при этом в changelog собранных бинарных пакетов следует автоматически вносить запись о факте пересборки. | ||
# Копирование пакетов предлагается запретить полностью. Для сохранения обратной совместимости girar-интерфейса предлагается изменить операцию <tt>copy</tt> таким образом, чтобы она приводила к пересборке пакета из исходного бранча в целевой. | # Копирование пакетов предлагается запретить полностью. Для сохранения обратной совместимости girar-интерфейса предлагается изменить операцию <tt>copy</tt> таким образом, чтобы она приводила к пересборке пакета из исходного бранча в целевой. | ||
# Для каждого бранча в дополнение к [http://ftp.altlinux.org/pub/distributions/archive/sisyphus/index/src/ индексу исходных пакетов] предлагается одновременно поддерживать и индекс бинарных пакетов. | # Для каждого бранча в дополнение к [http://ftp.altlinux.org/pub/distributions/archive/sisyphus/index/src/ индексу исходных пакетов] предлагается одновременно поддерживать и индекс бинарных пакетов. | ||
[[Категория:Branches]] | [[Категория:Branches]] |
Версия от 06:55, 15 ноября 2017
Действующие правила именования релизов собранных пакетов
Правила нумерации релизов пакетов, собираемых в бранчи, изначально были введены для решения следующих задач:
- Обновляемость: каждый бинарный пакет из более старого бранча должен был обновляться до одноимённого пакета из более свежего бранча.
- Идентификация: набор NEVR каждого бинарного пакета должен был однозначно определять целевой бранч, в который этот пакет был собран, а также исходный пакет, из которого была выполнена сборка.
- Наглядность: имя целевого бранча каждого бинарного пакета должно было быть видно там, где виден номер релиза этого пакета.
Проблемы традиционного именования релизов собранных пакетов
Однако со временем число бранчей выросло, а их линейный (а порой даже частичный) порядок был утрачен. Сейчас ответ на вопрос, какой бранч свежее, уже фактически переложен на администратора системы. Для поддержки сборок из одних и тех же исходников в разные бранчи возникли конструкции вроде %ubt, отрицательно влияющие на воспроизводимость сборки. В то же время, копирование пакетов также регулярно приводит к проблемам как в пересобираемости, так и в работоспособности скопированного. Очевидно, что Backports_Policy устарел.
Предлагаемые изменения идентификации собранных пакетов
Предлагается изменить правила следующим образом:
- Правила нумерации релизов пакетов, собираемых в бранчи, отменяются.
- Задачу обновляемости предлагается решать следующим образом:
- для указания предпочтения пакетов из того или иного репозитория предлагается использовать механизм apt preferences;
- конфигурации apt, распространяемые в бранчах и дистрибутивах, предлагается распространять заранее настроенными на соответствующий бранч.
- Задачу идентификации предлагается решать следующим образом:
- имя целевого бранча каждого бинарного пакета предлагается указывать при сборке автоматически в RPMTAG_DISTRIBUTION (в формате "ALT Sisyphus") и RPMTAG_DISTTAG (в формате "sisyphus.owner.task.subtask") в дополнение к информации, уже указываемой в RPMTAG_BUILDHOST;
- при формировании бинарных подпакетов предлагается автоматически генерировать Binary Packages Identifier и сохранять его в RPMTAG_COOKIE; зависимости между подпакетами предлагается изменять автоматически во время сборки с EVR на зависимости, основанные на этом идентификаторе;
- бинарные пакеты с одинаковыми NEVR предлагается допускать в различные бранчи только при условии, что их исходники совпадают; при сборке из gear-репозиториев совпадать должны сборочные git-тэги, в противном случае совпадать должны srpm-пакеты.
- Поскольку ожидается появление разных бинарных пакетов с одинаковыми NEVR в разных бранчах, предлагается разрешить rebuild исходных пакетов без внесения в них изменений (хотя, естественно, результат может получиться отличающимся от результата предыдущей сборки); при этом в changelog собранных бинарных пакетов следует автоматически вносить запись о факте пересборки.
- Копирование пакетов предлагается запретить полностью. Для сохранения обратной совместимости girar-интерфейса предлагается изменить операцию copy таким образом, чтобы она приводила к пересборке пакета из исходного бранча в целевой.
- Для каждого бранча в дополнение к индексу исходных пакетов предлагается одновременно поддерживать и индекс бинарных пакетов.