RPM Macros Packaging Policy — различия между версиями

Материал из ALT Linux Wiki
Перейти к: навигация, поиск
(Import from freesource.info)
 
(использование шаблона DraftPolicy)
Строка 1: Строка 1:
[[Category:Policy]]
+
{{DraftPolicy
{{MovedFromFreesourceInfo|AltLinux/Policy/Drafts/RPMMacrosPackaging}}
+
|responsible=Игорь Власенко
 +
|discussion_link=http://lists.altlinux.org/pipermail/devel/2008-May/074498.html
 +
|discussion_since=26.05.2008
 +
}}
  
{| border="1"
+
== Политика упаковки макросов rpm и расширений rpm-build ==
|-
 
|
 
Статус
 
|
 
Обсуждается с 26.05.2008 [http://lists.altlinux.org/pipermail/devel/2008-May/074498.html тред в devel@]
 
|-
 
|
 
Автор
 
|
 
Игорь Власенко
 
|-
 
|
 
Обязательно в
 
|
 
4.2 и выше
 
|-
 
|
 
Метабаг
 
|
 
repocop altlinux-policy-rpm-macros-packaging тест статус
 
|}
 
 
 
 
 
== Политика упаковки макросов rpm и расширений rpm-build. ==
 
  
 
* Файлы с макросами должны лежать в <tt>/etc/rpm/macros.d/</tt> (не в <tt>/etc/rpm/</tt>)
 
* Файлы с макросами должны лежать в <tt>/etc/rpm/macros.d/</tt> (не в <tt>/etc/rpm/</tt>)
 
* Файлы с макросами должны находиться в отдельном пакете с именем <tt>rpm-build-<name></tt> или <tt>rpm-macros-<name></tt>.
 
* Файлы с макросами должны находиться в отдельном пакете с именем <tt>rpm-build-<name></tt> или <tt>rpm-macros-<name></tt>.
* Файлы <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>%_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><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-build-%name</tt> должен предоставять всё необходимое для сборки бинарного пакета (rpmbuild -bb/-ba).
 
* Пакет <tt>rpm-macros-%name</tt> должен предоставлять всё необходимое для сборки исходного пакета (rpmbuild -bs --nodeps).
 
* Пакет <tt>rpm-macros-%name</tt> должен предоставлять всё необходимое для сборки исходного пакета (rpmbuild -bs --nodeps).
 
* Пакет <tt>%name-devel</tt> должен иметь зависимость на <tt>rpm-build-%name</tt>.
 
* Пакет <tt>%name-devel</tt> должен иметь зависимость на <tt>rpm-build-%name</tt>.
* Пакет <tt>rpm-build-%name</tt> должен иметь зависимость на (или включать в себя) rpm-macros-%name.
+
* Пакет <tt>rpm-build-%name</tt> должен иметь зависимость на (или включать в себя) rpm-macros-%name.
 
* Пакет <tt>rpm-macros-%name</tt> не должен иметь сторонних зависимостей, кроме тех, которые необходимы для раскрытия содержащихся в нём макросов.
 
* Пакет <tt>rpm-macros-%name</tt> не должен иметь сторонних зависимостей, кроме тех, которые необходимы для раскрытия содержащихся в нём макросов.
  
Строка 41: Строка 20:
 
Решение о выделении <tt>rpm-macros-%name</tt> в отдельный от <tt>rpm-build-%name</tt> пакет принимает мантейнер соответствующего пакета.
 
Решение о выделении <tt>rpm-macros-%name</tt> в отдельный от <tt>rpm-build-%name</tt> пакет принимает мантейнер соответствующего пакета.
  
'''Рекомендуется''' выделять пакет <tt>rpm-build-%name</tt>/<tt>rpm-macros-%name</tt> из <tt>%name-devel</tt>,  
+
'''Рекомендуется''' выделять пакет <tt>rpm-build-%name</tt>/<tt>rpm-macros-%name</tt> из <tt>%name-devel</tt>,
 
чтобы явно выделить пакеты, нужные для для сборки исходного пакета (rpmbuild -bs --nodeps), в отдельную группу.
 
чтобы явно выделить пакеты, нужные для для сборки исходного пакета (rpmbuild -bs --nodeps), в отдельную группу.
  
'''Разрешается (но не рекомендуется)''' не выделять отдельно пакет <tt>rpm-build-%name</tt> (и, возможно, rpm-macros-%name) из <tt>%name-devel</tt>  
+
'''Разрешается (но не рекомендуется)''' не выделять отдельно пакет <tt>rpm-build-%name</tt> (и, возможно, rpm-macros-%name) из <tt>%name-devel</tt>
если выделение rpm-build-%name из %name-devel не приводит к уменьшению pre-сборочных зависимостей (зависимостей, необходимых для сборки .src.rpm).  
+
если выделение rpm-build-%name из %name-devel не приводит к уменьшению pre-сборочных зависимостей (зависимостей, необходимых для сборки .src.rpm).
 
Например, если пакет с макросами входит в basesystem, или не имеет существенных зависимостей вне basesystem.
 
Например, если пакет с макросами входит в basesystem, или не имеет существенных зависимостей вне basesystem.
  
Строка 57: Строка 36:
 
В общем случае, файл с макросами rpm связан с каким-то из -devel пакетов. Например, макросы для упаковки perl приложений содержатся в пакете <tt>rpm-build-perl</tt>, связанном с пакетом <tt>perl-devel</tt>. Иногда макросы для упаковки могут лежать и прямо в -devel пакете, как в случае <tt>gconf-devel</tt>. Последний случай плох тем, что для исполнения команды <tt>rpmbuild -bs</tt> в хост-системе нужно устанавливать весь -devel пакет и его зависимости. Этого не случилось бы, будь макросы выделены в отдельный подпакет.
 
В общем случае, файл с макросами rpm связан с каким-то из -devel пакетов. Например, макросы для упаковки perl приложений содержатся в пакете <tt>rpm-build-perl</tt>, связанном с пакетом <tt>perl-devel</tt>. Иногда макросы для упаковки могут лежать и прямо в -devel пакете, как в случае <tt>gconf-devel</tt>. Последний случай плох тем, что для исполнения команды <tt>rpmbuild -bs</tt> в хост-системе нужно устанавливать весь -devel пакет и его зависимости. Этого не случилось бы, будь макросы выделены в отдельный подпакет.
  
Пакеты с макросами должны называться <tt>rpm-build-<name></tt>/<tt>rpm-macros-<name></tt> чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему.
+
Пакеты с макросами должны называться <tt>rpm-build-<name></tt>/<tt>rpm-macros-<name></tt> чтобы их было легко найти и установить, и не должны иметь зависимостей, чтобы не засорять хост-сиситему.

Версия 16:14, 9 сентября 2008

Stub.png
Черновик политики Sisyphus
Автор(ы) — Игорь Власенко
Обсуждение в devel@
Обсуждается с 26.05.2008


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

  • Файлы с макросами должны лежать в /etc/rpm/macros.d/ (не в /etc/rpm/)
  • Файлы с макросами должны находиться в отдельном пакете с именем 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 связан с каким-то из -devel пакетов. Например, макросы для упаковки perl приложений содержатся в пакете rpm-build-perl, связанном с пакетом perl-devel. Иногда макросы для упаковки могут лежать и прямо в -devel пакете, как в случае gconf-devel. Последний случай плох тем, что для исполнения команды rpmbuild -bs в хост-системе нужно устанавливать весь -devel пакет и его зависимости. Этого не случилось бы, будь макросы выделены в отдельный подпакет.

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