ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Знакомство с утилитами girar-nmu. часть   IV.
@ 2010-11-24 21:07 Igor Vlasenko
  0 siblings, 0 replies; only message in thread
From: Igor Vlasenko @ 2010-11-24 21:07 UTC (permalink / raw)
  To: devel

Знакомство с утилитами 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



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-11-24 21:07 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-11-24 21:07 [devel] Знакомство с утилитами girar-nmu. часть IV Igor Vlasenko

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git