[devel] sandman mini-HOWTO part II

Alexey I. Froloff =?iso-8859-1?q?sir=5Fraorn_=CE=C1_immo=2Eru?=
Чт Сен 11 10:33:36 MSD 2003


Итак, sandman настроили, начинаем его использовать...

Будем думать, что в каталоге ~/sandman у нас с-checkout-ены cvs модули
release и packages (packages пока пустой):

$ tree sandman
sandman
|--packages
|  `--CVS
|     |--Root
|     |--Repository
|     `--Entries
`--release
   |--CVS
   |  |--Root
   |  |--Repository
   |  `--Entries
   |--installer
   |--macros
   |--macros.generic
   |--modules
   |--modules.generic
   |--release
   `--release.generic

Я буду рассказывать про метод "spec" (см. README)...

$ cd sandman/packages
(просто так, для удобства)
$ rpm2cpio package-V-R.src.rpm| sandcl -d <BTEROOT> addsources package
$ rpm2cpio package-V-R.src.rpm| cpio -i package.spec
$ mv package.spec package

Я рекомендую в самом начале файла со спеком добавить две строчки для
редакторов типа vim или emacs (файл-то у нас получился без расширения):

# vim: set ft=spec: -*- mode: rpm-spec; -*-
# $Id$

Во второй строчке cvs сам проставит тэг с информацией о файле, дате
последнего изменения, ревизии и коммитере (см. info cvs).

$ cvs add package
$ cvs commit -m "Added package" package

Если всё в порядке, коммит пройдёт, если нет - sandman скажет в чём
ошибка и предложит её исправить. Будем думать, что у нас всё в порядке
;-)

Попробуем собрать наш пакет:

$ sandcl -d <BTEROOT> build -pocket package_build package

Тут package_build - имя "кармана", куда будет производиться сборка. В
силу некоторых особенностей внутреннего устройства sandman'а - это
наверно единственный способ собрать "текущую" версию пакета. Дело в том,
что при изменении версии пакета (S:V-R) sandman проставляет тэг в cvs на
предыдущую ревизию спека, а sandcl build будет собирать последнюю
известную ему (по cvs тэгам) версию пакета. Всё это сделано по той
причине, что спекфайл для одной версии пакета может изменяться несколько
раз (например в процессе правки спека при исправлении ошибок сборки,
например в новой версии потребовалось изменение сборочных зависимостей,
а мантейнер это не сразу заметил). Но я отвлёкся.

Итак, после выполнения команды build, сервер sandman создаст chroot,
поставит туда, с отслеживанием всех зависимостей, basesystem (описаную в
/etc/sandman/repos), потом buildsystem и наконец пакеты указанные в
сборочных зависимостях (BuildPreReq и BuildRequires) в спекфайле.

Если всё опять прошло нормально, в созданном chroot запустится rpm -ba...

После сборки, все собраные бинарные и исходные пакеты будут положены в
"карман", указаный в опции pocket. Достать из оттуда можно командой

$ sandcl getpocket <pocketname>

При этом файлы будут скопированы в текущий каталог.

$ sandcl endpocket <pocketname>

"закрывает карман", при этом пакеты в нём содержащися переносятся в
"current" (см. README в %_docsir/sandman-server-*) а сам "карман"
удаляется.

"Карман" применяется при сборке текущей версии паекета, и при сборке
нескольких зависимых друг от друга пакетов - при создании chroot'а
sanman ищёт необходимые пакеты сначала в указаном "кармане" (если он
указан в командной строке), потом в stable, указаном в repos.

В этом месте рекомндуется отвлечься от HOWTO и прочитать man sandcl...

Итак, при помощи команд getsources и addsources можно "достать" и
"положить" исходные файлы и патчи из/в хранилище sandman'а. Например,
если понадобилось изменить файл меню:

$ sandcl -d <BTEROOT> getsources package package.menu
$ $EDITOR package.menu
$ sandcl -d <BTEROOT> addsources package package.menu

Но что бы sandman приянл эти изменения, надо обязательно сделать коммит
спекaайла в cvs, даже если он и не изменился. Честно говоря, я не нашёл
у cvs опции --force, так что просто добавляю/удаляю пустую строку в
конце файла ;-)

$ cvs commit package

Если всё в порядке, коммит пройдёт, если нет - sandman скажет в чём
проблема.

Да, один момент - команда addsources добавляет файлы только из текущего
каталога.

... возможно to be continued ...

-- 
Regards, Sir Raorn.
-------------------
>ps: куплю билеты на матч ldv--rider, т.к. пока изложенные ими
>позиции существенно противоречат друг другу ;[
Организуем на linuxfest. Билеты в танцевальный партер -- $50.
		-- aen in devel-kernel@
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20030911/473d1bed/attachment-0001.bin>


Подробная информация о списке рассылки Devel