Packaging Automation/Преобразование Пакетов: различия между версиями

Материал из ALT Linux Wiki
Строка 46: Строка 46:


=== Базовый набор плагинов ===
=== Базовый набор плагинов ===
Опишем здесь некоторые плагины, идущие в одном пакете с библиотекой {{pkg|RPM::Source::Transform}},
которые видны пользователю.
==== Плагины из контейнера фабрик трансформаций ====
Плагины имеют общий префикс RPM::Source::Transformation::Factory::*


{| class="standard sortable"
{| class="standard sortable"
|-
|-
!Плагин||Назначение||Опции
|Плагин||Назначение||Опции
|-
|-
|Ячейка 1*1||Ячейка 2*1||Ячейка 3*1
|CommandLine|| делает некоторые команды редактирования доступными в командной строке ||
Editing options:
--macrodef '<name> <value>' set the value of an rpm macro.
--macroundef <name> undefine rpm macro.
  It does not change spec but influence spec processing.
--add-source <file> (can be specified multiple times)
--copy_to_sources <file> (can be specified multiple times)
--copy-to-sources <file> - alias for --copy_to_sources
--rename 'new name of source rpm package'
--spec_apply_patch <patch file> -- apply <patch file> to spec
--repack  -- repack src.rpm archives to plain tar (saves space with native xz)
--uupdate  -- perform a version update using a source watch file
|-
|DependencyFilter|| ||
|-
|Flags|| загружает настройки пакетов из каталога flags ||
|-
|GroupTranslation|| замены в теге Group:, как указвнные вручную, так и из каталога groups ||
Group Editing options:
--group-translate 'group translation'
|-
|Hook|| загружает hooks ||
|-
|ParentI18NMerge|| merges summary(ru), description -l ru and so on from parent|| -
|-
|RaiseRelease|| Увеличение релиза, смена версии, релиза, Epoch. ||
Release options:
--tag-packager-replace 'new value' set Packager: tag to a new value.
  special values are:
    auto - use rpm's \%{packager} value
    none - clear tag
    parent - use parent's value of Packager:
--tag-packager-default 'new value' - if the Packager: tag is not defined
  set it to the new value. This option allows comma separated list
  of multiple sources, for example, 'parent,A. R. <ar\@b.org>'
--changelog '- changelog entry'
--serial 'new value'
--epoch 'new value'
--version 'version' - set new package version
--release 'release' - if we need to adjust the package release
--nextrel|--next-release-policy <policy>
--refresh-timestamp update timestamp in existing changelog
|}
|}



Версия от 17:40, 11 октября 2016

Введение.

В системах автоматизации за преобразование пакетов отвечают утилиты, использующие библиотеку RPM::Source::Transform (сейчас в пакете perl-RPM-Source-Editor).

Эту библиотеку можно расширять различными плагинами, с помощью которых можно решать следующие задачи:

  • различные операции по редактированию пакета,
  • импорт пакета в формате другого диалекта rpm (fedora, mageia, suse, pld, ...)
  • импорт пакета в формате deb из Debian/Ubuntu (в планах).

Принципы работы библиотеки

В библиотеке имеется контейнер ресурсов, контейнер фабрик преобразований, и объекты, имеющие роли READER, PLAYER, WRITER.

Загружаемые плагины добавляют свои объекты в контейнер ресурсов и(ли) контейнер фабрик преобразований, и при необходимости переопределяют объекты для ролей READER, PLAYER, WRITER.

При запуске

  • библиотека осуществляет инициализацию объектов из контейнера ресурсов,

контейнера фабрик преобразований, текущих READER, PLAYER, WRITER.

  • для каждого входящего аргумента
    • READER возвращает объект преобразуемого пакета (класс RPM::Source::Editor).
    • библиотека опрашивает объекты из контейнера фабрик преобразований, которые в ответ генерируют и возвращают объекты преобразований.
    • Библиотека создает объект шины обмена сообщений и передает объект преобразуемого пакета, контейнер ресурсов, шину обмена сообщений и набор объектов преобразований в текущий объект PLAYER.
    • PLAYER последовательно применяет к преобразуемому пакету каждый из объектов преобразований в порядке, отсортированными по приоритету, а с одинаковым приоритетом -- по порядку загрузки плагинов.
    • WRITER сохраняет изменения.

Каждый плагин может экспортировать независимо от других плагинов свой набор опций командной строки (при этом названия опций должны быть уникальными для каждого плагина) и свой фрагмент вывода --help.

В свою очередь, библиотека RPM::Source::Transform может выступать обработчиком событий для библиотеки масовой обработки.

Базовый набор плагинов

Опишем здесь некоторые плагины, идущие в одном пакете с библиотекой RPM::Source::Transform, которые видны пользователю.

Плагины из контейнера фабрик трансформаций

Плагины имеют общий префикс RPM::Source::Transformation::Factory::*

Плагин Назначение Опции
CommandLine делает некоторые команды редактирования доступными в командной строке
Editing options:
--macrodef '<name> <value>' set the value of an rpm macro.
--macroundef <name> undefine rpm macro.
  It does not change spec but influence spec processing.
--add-source <file> (can be specified multiple times)
--copy_to_sources <file> (can be specified multiple times)
--copy-to-sources <file> - alias for --copy_to_sources
--rename 'new name of source rpm package'
--spec_apply_patch <patch file> -- apply <patch file> to spec
--repack   -- repack src.rpm archives to plain tar (saves space with native xz)
--uupdate  -- perform a version update using a source watch file
DependencyFilter
Flags загружает настройки пакетов из каталога flags
GroupTranslation замены в теге Group:, как указвнные вручную, так и из каталога groups
Group Editing options:
--group-translate 'group translation'
Hook загружает hooks
ParentI18NMerge merges summary(ru), description -l ru and so on from parent -
RaiseRelease Увеличение релиза, смена версии, релиза, Epoch.
Release options:
--tag-packager-replace 'new value' set Packager: tag to a new value.
 special values are: 
   auto - use rpm's \%{packager} value
   none - clear tag
   parent - use parent's value of Packager:
--tag-packager-default 'new value' - if the Packager: tag is not defined
 set it to the new value. This option allows comma separated list
 of multiple sources, for example, 'parent,A. R. <ar\@b.org>'
--changelog '- changelog entry'
--serial 'new value'
--epoch 'new value'
--version 'version' - set new package version
--release 'release' - if we need to adjust the package release
--nextrel|--next-release-policy <policy>
--refresh-timestamp update timestamp in existing changelog

Базовые утилиты

hashertarbuild

hashertarbuild

srpmnmu, srpmtool

srpmnmu srpmtool

buildroot2files

buildroot2files