RPM Macros Packaging Policy

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
(Import from freesource.info)
м (более заметная формулировка; +ссылка на ту же тему)
 
(22 промежуточные версии не показаны)
Строка 1: Строка 1:
-
[[Category:Policy]]
+
{{Policy
-
{{MovedFromFreesourceInfo|AltLinux/Policy/Drafts/RPMMacrosPackaging}}
+
|responsible=Игорь Власенко
 +
|since_branch=5.0
 +
|metabug=repocop test altlinux-policy-rpm-macros-packaging
 +
}}
 +
== Политика упаковки макросов RPM и расширений rpm-build ==
-
{| border="1"
+
* Файлы с макросами должны лежать в {{path|/usr/lib/rpm/macros.d/}} (текущее значение макроса {{rpmmacro|_rpmmacrosdir}}).
-
|-
+
* Для поддержания обратной совместимости разрешается (но не рекомендуется) держать файлы с макросами в {{path|/etc/rpm/macros.d}} (не в {{path|/etc/rpm/}}). В следующей крупной редакции этой политики директория {{path|/etc/rpm/macros.d}} будет запрещена.
-
|
+
* Файлы с макросами должны находиться в отдельном пакете с именем {{pkg|rpm-build-%name}} или {{pkg|rpm-macros-%name}}.
-
Статус
+
* Файлы {{path|[[RPMFilesReqList|%name-files.req.list]]}}, определяющие зависимости на каталоги, и другие {{path|*.req*}}/{{path|*.prov*}} файлы должны лежать в {{rpmmacro|_rpmlibdir}} ({{path|/usr/lib/rpm/}}).
-
|
+
* Файлы {{path|%name-files.req.list}} и другие {{path|*.req*}}/{{path|*.prov*}} файлы рекомендуется выделять в отдельный пакет с именем {{pkg|rpm-build-%name}}.
-
Обсуждается с 26.05.2008 [http://lists.altlinux.org/pipermail/devel/2008-May/074498.html тред в devel@]
+
* Пакет {{pkg|rpm-build-%name}} должен предоставлять всё необходимое для сборки бинарных пакетов ({{cmd|rpmbuild -bb/-ba}}).
-
|-
+
* Пакет {{pkg|rpm-macros-%name}} должен предоставлять всё необходимое для сборки исходных пакетов ({{cmd|rpmbuild -bs --nodeps}}).
-
|
+
* Пакет {{pkg|%name-devel}} должен иметь зависимость на {{pkg|rpm-build-%name}}.
-
Автор
+
* Пакет {{pkg|rpm-build-%name}} должен иметь зависимость на (или включать в себя) {{pkg|rpm-macros-%name}}.
-
|
+
* Пакет {{pkg|rpm-macros-%name}} не должен иметь сторонних зависимостей, кроме тех, которые необходимы для раскрытия содержащихся в нём макросов.
-
Игорь Власенко
+
-
|-
+
-
|
+
-
Обязательно в
+
-
|
+
-
4.2 и выше
+
-
|-
+
-
|
+
-
Метабаг
+
-
|
+
-
repocop altlinux-policy-rpm-macros-packaging тест статус
+
-
|}
+
 +
'''Рекомендуется''' выделять пакет {{pkg|rpm-macros-%name}} из {{pkg|rpm-build-%name}}, в случае, если у того {{path|*.req*}}/{{path|*.prov*}} файлы имеют сторонние зависимости.
 +
Решение о выделении {{pkg|rpm-macros-%name}} в отдельный от {{pkg|rpm-build-%name}} пакет принимает мантейнер соответствующего пакета.
-
== Политика упаковки макросов rpm и расширений rpm-build. ==
+
'''Рекомендуется''' выделять пакет {{pkg|rpm-build-%name}}/{{pkg|rpm-macros-%name}} из {{pkg|%name-devel}},
 +
чтобы явно выделить пакеты, нужные для для сборки исходного пакета ({{cmd|rpmbuild -bs --nodeps}}), в отдельную группу.
-
* Файлы с макросами должны лежать в <tt>/etc/rpm/macros.d/</tt> (не в <tt>/etc/rpm/</tt>)
+
'''Разрешается (но не рекомендуется)''' не выделять отдельно пакет {{pkg|rpm-build-%name}} (и, возможно, {{pkg|rpm-macros-%name}}) из {{pkg|%name-devel}} если выделение {{pkg|rpm-build-%name}} из {{pkg|%name-devel}} не приводит к уменьшению pre-сборочных зависимостей (зависимостей, необходимых для сборки {{path|.src.rpm}}).
-
* Файлы с макросами должны находиться в отдельном пакете с именем <tt>rpm-build-<name></tt> или <tt>rpm-macros-<name></tt>.
+
Например, если пакет с макросами входит в {{pkg|basesystem}}, или не имеет существенных зависимостей вне {{pkg|basesystem}}.
-
* Файлы <tt><name>-files.req.list</tt>, определяющие зависимости на каталоги, и другие <tt>*.req*</tt>/<tt>*.prov*</tt> файлы должны лежать в <tt>%_rpmlibdir</tt> (<tt>/usr/lib/rpm/</tt>).
+
-
* Файлы <tt><name>-files.req.list</tt> и другие <tt>*.req*</tt>/<tt>*.prov*</tt> файлы должны находиться в отдельном пакете с именем <tt>rpm-build-<name></tt>.
+
-
* Пакет <tt>rpm-build-%name</tt> должен предоставять всё необходимое для сборки бинарного пакета (rpmbuild -bb/-ba).
+
-
* Пакет <tt>rpm-macros-%name</tt> должен предоставлять всё необходимое для сборки исходного пакета (rpmbuild -bs --nodeps).
+
-
* Пакет <tt>%name-devel</tt> должен иметь зависимость на <tt>rpm-build-%name</tt>.
+
-
* Пакет <tt>rpm-build-%name</tt> должен иметь зависимость на (или включать в себя) rpm-macros-%name.
+
-
* Пакет <tt>rpm-macros-%name</tt> не должен иметь сторонних зависимостей, кроме тех, которые необходимы для раскрытия содержащихся в нём макросов.
+
-
'''Рекомендуется''' выделять пакет <tt>rpm-macros-%name</tt> из <tt>rpm-build-%name</tt>, в случае, если у того <tt>*.req*</tt>/<tt>*.prov*</tt> файлы имеют сторонние зависимости.
+
'''Разрешается''' не выделять отдельно пакет {{pkg|rpm-build-%name}} из {{pkg|%name-devel}}, если последний не содержит файлов с макросами, а только расширения {{pkg|rpm-build}}. Также, принято не выделять {{pkg|rpm-build-%name}} из {{pkg|%name-devel}}
-
Решение о выделении <tt>rpm-macros-%name</tt> в отдельный от <tt>rpm-build-%name</tt> пакет принимает мантейнер соответствующего пакета.
+
из-за единственного файла {{path|[[RPMFilesReqList|%name-files.req.list]]}}.
-
'''Рекомендуется''' выделять пакет <tt>rpm-build-%name</tt>/<tt>rpm-macros-%name</tt> из <tt>%name-devel</tt>,
+
'''Рекомендуется''' в пакетах {{pkg|rpm-build-*}} и {{pkg|rpm-macros-*}} несовместимость с определёнными
-
чтобы явно выделить пакеты, нужные для для сборки исходного пакета (rpmbuild -bs --nodeps), в отдельную группу.
+
релизами {{pkg|rpm-build}} выражать с помощью Conflicts.
-
 
+
'''Запрещается''' в пакетах {{pkg|rpm-build-*}} и {{pkg|rpm-macros-*}} иметь зависимость (Requires или PreReq) на {{pkg|rpm-build}} (без иных особых причин).
-
'''Разрешается (но не рекомендуется)''' не выделять отдельно пакет <tt>rpm-build-%name</tt> (и, возможно, rpm-macros-%name) из <tt>%name-devel</tt>
+
-
если выделение rpm-build-%name  из %name-devel не приводит к уменьшению pre-сборочных зависимостей (зависимостей, необходимых для сборки .src.rpm).
+
-
Например, если пакет с макросами входит в basesystem, или не имеет существенных зависимостей вне basesystem.
+
-
 
+
-
'''Разрешается''' не выделять отдельно пакет <tt>rpm-build-%name</tt> из <tt>%name-devel</tt>, если последний не содержит файлов с макросами, а только
+
-
расширения rpm-build.
+
=== Аргументация ===
=== Аргументация ===
Строка 55: Строка 37:
'''Эта секция не является нормативной'''
'''Эта секция не является нормативной'''
-
В общем случае, файл с макросами rpm связан с каким-то из -devel пакетов. Например, макросы для упаковки perl приложений содержатся в пакете <tt>rpm-build-perl</tt>, связанном с пакетом <tt>perl-devel</tt>. Иногда макросы для упаковки могут лежать и прямо в -devel пакете, как в случае <tt>gconf-devel</tt>. Последний случай плох тем, что для исполнения команды <tt>rpmbuild -bs</tt> в хост-системе нужно устанавливать весь -devel пакет и его зависимости. Этого не случилось бы, будь макросы выделены в отдельный подпакет.
+
В общем случае, файл с макросами rpm связан с каким-то из {{pkg|-devel}} пакетов. Например, макросы для упаковки {{pkg|perl}} приложений содержатся в пакете {{pkg|rpm-build-perl}}, связанном с пакетом {{pkg|perl-devel}}. Иногда макросы для упаковки могут лежать и прямо в {{pkg|-devel}} пакете, как в случае {{pkg|gconf-devel}}. Последний случай плох тем, что для исполнения команды {{cmd|rpmbuild -bs}} в хост-системе нужно устанавливать весь {{pkg|-devel}} пакет и его зависимости. Этого не случилось бы, будь макросы выделены в отдельный подпакет.
 +
 
 +
Пакеты с макросами должны называться {{pkg|rpm-build-%name}}/{{pkg|rpm-macros-%name}} чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему.
 +
 
 +
{{pkg|rpm-build-%name}} идёт (по требованию этого policy) вместе с {{pkg|%name-devel}} всегда (как небольшой довесок на случай сборки пакетов с помощью {{pkg|%name-devel}}). Но не все, кто ставит {{pkg|%name-devel}}, хотят собирать RPM, и им не нужна дополнительная нагрузка в виде {{pkg|rpm-build}} и его зависимостей.[https://lists.altlinux.org/pipermail/devel/2007-November/147373.html] А у тех, кто собирается собирать RPM, будет поставлен {{pkg|rpm-build}} и так.[https://lists.altlinux.org/pipermail/devel/2015-October/200301.html]
-
Пакеты с макросами  должны называться <tt>rpm-build-<name></tt>/<tt>rpm-macros-<name></tt> чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему.
+
[[Категория:RPM]]

Текущая версия на 14:54, 1 июня 2016

Stamp90cw.png
Действующая политика Sisyphus

Политика действует, начиная со стабильного бранча 5.0 и выше.

Ответственный за проведение политики в жизнь — Игорь Власенко.

Нарушения политики отслеживаются: repocop test altlinux-policy-rpm-macros-packaging


Политика упаковки макросов RPM и расширений rpm-build

  • Файлы с макросами должны лежать в /usr/lib/rpm/macros.d/ (текущее значение макроса %_rpmmacrosdir).
  • Для поддержания обратной совместимости разрешается (но не рекомендуется) держать файлы с макросами в /etc/rpm/macros.d (не в /etc/rpm/). В следующей крупной редакции этой политики директория /etc/rpm/macros.d будет запрещена.
  • Файлы с макросами должны находиться в отдельном пакете с именем rpm-build-%name или rpm-macros-%name.
  • Файлы %name-files.req.list, определяющие зависимости на каталоги, и другие *.req*/*.prov* файлы должны лежать в %_rpmlibdir (/usr/lib/rpm/).
  • Файлы %name-files.req.list и другие *.req*/*.prov* файлы рекомендуется выделять в отдельный пакет с именем rpm-build-%name.
  • Пакет rpm-build-%name должен предоставлять всё необходимое для сборки бинарных пакетов (rpmbuild -bb/-ba).
  • Пакет rpm-macros-%name должен предоставлять всё необходимое для сборки исходных пакетов (rpmbuild -bs --nodeps).
  • Пакет %name-devel должен иметь зависимость на rpm-build-%name.
  • Пакет rpm-build-%name должен иметь зависимость на (или включать в себя) rpm-macros-%name.
  • Пакет rpm-macros-%name не должен иметь сторонних зависимостей, кроме тех, которые необходимы для раскрытия содержащихся в нём макросов.

Рекомендуется выделять пакет rpm-macros-%name из rpm-build-%name, в случае, если у того *.req*/*.prov* файлы имеют сторонние зависимости. Решение о выделении rpm-macros-%name в отдельный от rpm-build-%name пакет принимает мантейнер соответствующего пакета.

Рекомендуется выделять пакет rpm-build-%name/rpm-macros-%name из %name-devel, чтобы явно выделить пакеты, нужные для для сборки исходного пакета (rpmbuild -bs --nodeps), в отдельную группу.

Разрешается (но не рекомендуется) не выделять отдельно пакет rpm-build-%name (и, возможно, rpm-macros-%name) из %name-devel если выделение rpm-build-%name из %name-devel не приводит к уменьшению pre-сборочных зависимостей (зависимостей, необходимых для сборки .src.rpm). Например, если пакет с макросами входит в basesystem, или не имеет существенных зависимостей вне basesystem.

Разрешается не выделять отдельно пакет rpm-build-%name из %name-devel, если последний не содержит файлов с макросами, а только расширения rpm-build. Также, принято не выделять rpm-build-%name из %name-devel из-за единственного файла %name-files.req.list.

Рекомендуется в пакетах rpm-build-* и rpm-macros-* несовместимость с определёнными релизами rpm-build выражать с помощью Conflicts. Запрещается в пакетах rpm-build-* и rpm-macros-* иметь зависимость (Requires или PreReq) на rpm-build (без иных особых причин).

Аргументация

Эта секция не является нормативной

В общем случае, файл с макросами rpm связан с каким-то из -devel пакетов. Например, макросы для упаковки perl приложений содержатся в пакете rpm-build-perl, связанном с пакетом perl-devel. Иногда макросы для упаковки могут лежать и прямо в -devel пакете, как в случае gconf-devel. Последний случай плох тем, что для исполнения команды rpmbuild -bs в хост-системе нужно устанавливать весь -devel пакет и его зависимости. Этого не случилось бы, будь макросы выделены в отдельный подпакет.

Пакеты с макросами должны называться rpm-build-%name/rpm-macros-%name чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему.

rpm-build-%name идёт (по требованию этого policy) вместе с %name-devel всегда (как небольшой довесок на случай сборки пакетов с помощью %name-devel). Но не все, кто ставит %name-devel, хотят собирать RPM, и им не нужна дополнительная нагрузка в виде rpm-build и его зависимостей.[1] А у тех, кто собирается собирать RPM, будет поставлен rpm-build и так.[2]

 
Личные инструменты