Packaging Automation/Преобразование Пакетов: различия между версиями
Строка 46: | Строка 46: | ||
=== Базовый набор плагинов === | === Базовый набор плагинов === | ||
Опишем здесь некоторые плагины, идущие в одном пакете с библиотекой {{pkg|RPM::Source::Transform}}, | |||
которые видны пользователю. | |||
==== Плагины из контейнера фабрик трансформаций ==== | |||
Плагины имеют общий префикс RPM::Source::Transformation::Factory::* | |||
{| class="standard sortable" | {| class="standard sortable" | ||
|- | |- | ||
|Плагин||Назначение||Опции | |||
|- | |- | ||
| | |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).
Эту библиотеку можно расширять различными плагинами, с помощью которых можно решать следующие задачи:
- различные операции по редактированию пакета,
- автообновление пакета до следующей версии Gear/gear-uupdate, Gear/gear-cronbuild, cronbuild, croncopy, cronport
- импорт пакета в формате другого диалекта 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