[devel] Знакомство с утилитами girar-nmu. часть IV.
Igor Vlasenko
vlasenko на imath.kiev.ua
Ср Ноя 24 21:07:26 UTC 2010
Знакомство с утилитами girar-nmu.
Часть IV. утилиты для подготовки NMU.
Эти утилиты принимают либо список путей к файлам, либо список %{NAME} src.rpm файлов. Для удобства утилита girar-nmu-helper-name2path позволяет преобразовать список имен в список путей к файлам.
girar-nmu-helper-name2path /path/to/files/SRPMS `cat names.txt` > files.txt
Обратное преобразование можно выполнить так:
rpmquery --queryformat '%{NAME}\n' -p `cat files.txt` > names.txt
** girar-nmu-prepare
girar-nmu-prepare является основной утилитой пакета girar-nmu. Её простейший вызов выглядит так:
girar-nmu-prepare `cat files.txt`
Если же удобнее работать с именами, то необходимо указать путь к src.rpms опцией --srpmdir:
girar-nmu-prepare --srpmdir /path/to/SRPMS `cat names.txt`
Кроме ключей, общих с другими утилитами girar-nmu, girar-nmu-prepare поддерживает ряд ключей утилиты srpmnmu. Эта утилита еще в разработке, поэтому не все ключи документированы. Поддерживаемые ключи:
* --changelog '- message'
* --hook /path/to/hook.
Пример
girar-nmu-prepare --changelog '- rebuild with new perl' --hook ./perl_51x_fixes.pl --srpmdir /path/to/SRPMS `cat names.txt`
Опцию --hook можно повторять несколько раз. Эта опция позволяет подгрузить программу на perl, которая выполнит над spec файлом дополнительные преобразования, такие как переименование макросов, изменение и добавление Requires и BuildRequires и т. д. По вопросам написания такой программы обращайтесь к viy на .
Для каждого src.rpm файла (или его name) указанного в качестве аргумента, girar-nmu-prepare определяет тип заливки, srpm или git tag; клонирует при необходимости git репозиторий пакета; вызывает утилиту srpmnmu над src.rpm файлом пакета или SPEC файлом в git репозитории пакета. Результат складируется как OUT.gits/name.git для пакетов, собираемых по git тегу, либо OUT.SRPMS/name/name-version-nmurelease.src.rpm для пакетов, собираемых из src.rpm файлов.
Полученные пакеты можно пересобрать локально с помощью girar-nmu-local-build и отправить в сборочницу с помощью girar-nmu-task-*.
** girar-nmu-local-build
Утилита позволяет локально проверить на собираемость полученные NMU пакеты.
girar-nmu-local-build работает с деревом каталогов, созданным girar-nmu-prepare, поэтому ее надо либо запускать в том же каталоге, что и girar-nmu-prepare, либо явно указывать нужный путь в опциях -S и -G.
В примерах предполагается, что у вас уже настроен hasher, например,
$ cat ~/.hasher/config
workdir=/tmp/hasher
packager="`rpm --eval %packager`"
known_mountpoints=/proc
иначе опции hsh придется указывать после --, см. man girar-nmu-local-build.
Для разных типов транзакций утилиту надо вызывать по-разному. Если все пакеты будут собираться в строгой очередности в одном task, то нужна опция hasher'а --with-stuff и вызов будет иметь вид
girar-nmu-local-build `cat names.txt` -- hsh --with-stuff --apt-config=/etc/apt/apt.conf.SS
Если же пакеты будут собираться независимо, в разных task, то --with-stuff не нужна, и можно добавить опцию -f, чтобы не останавливать пересборку из-за несобравшихся пакетов. В этом случае вызов имеет вид
girar-nmu-local-build -f `cat names.txt` -- hsh --apt-config=/etc/apt/apt.conf.SS
или, если настроен ~/.hasher/config, то можно просто
girar-nmu-local-build -f `cat names.txt`
** утилиты для заливки NMU пакетов на сборку.
Эти утилиты работают с деревом каталогов, созданным girar-nmu-prepare, поэтому их надо либо запускать в том же каталоге, что и girar-nmu-prepare, либо явно указывать нужный путь в опциях -S и -G.
[править] girar-nmu-task-add
girar-nmu-task-add [-t taskid] `cat names.txt`
Добавляет пакеты, подготовленные с помощью girar-nmu-prepare, на сборку в указанный task. Полученный task надо запустить на сборку вручную с помощью
ssh git.alt task run
[править] girar-nmu-task-for-each
girar-nmu-task-for-each `cat names.txt`
В отличие от girar-nmu-task-add запускает на сборку пакеты автоматически каждый пакет в отдельной task.
** Основные опции:
* -t task ID.
* -H git.alt alias. По умолчанию, git.alt.
* -n | -g | -r. Опции подписывания rpm пакетов. По умолчанию, -g (использовать gpg agent).
-g) использовать gpg agent (внутренняя обвязка rpm-sign-gpg-agent)
-n) если нет gpg agent, но ключ без passphrase - (внутренняя обвязка rpm-sign-no-passphrase)
-r) использовать обычный rpm --sign, требует постоянного ввода ключа с клавиатуры.
* -p git repository prefix. По умолчанию, 00-tmp-.
--
Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine
Подробная информация о списке рассылки Devel