[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