From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 11 Sep 2003 10:33:36 +0400 From: "Alexey I. Froloff" To: ALTLinux devel Message-ID: <20030911063336.GP31943@inferno.immo> Mail-Followup-To: ALTLinux devel Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="Qf878oECjVTnCF6M" Content-Disposition: inline User-Agent: Mutt/1.4.1i X-Envelope-To: devel@altlinux.ru Subject: [devel] sandman mini-HOWTO part II X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.2 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Sep 2003 06:33:38 -0000 Archived-At: List-Archive: List-Post: --Qf878oECjVTnCF6M Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit Итак, 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 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 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 При этом файлы будут скопированы в текущий каталог. $ sandcl endpocket "закрывает карман", при этом пакеты в нём содержащися переносятся в "current" (см. README в %_docsir/sandman-server-*) а сам "карман" удаляется. "Карман" применяется при сборке текущей версии паекета, и при сборке нескольких зависимых друг от друга пакетов - при создании chroot'а sanman ищёт необходимые пакеты сначала в указаном "кармане" (если он указан в командной строке), потом в stable, указаном в repos. В этом месте рекомндуется отвлечься от HOWTO и прочитать man sandcl... Итак, при помощи команд getsources и addsources можно "достать" и "положить" исходные файлы и патчи из/в хранилище sandman'а. Например, если понадобилось изменить файл меню: $ sandcl -d getsources package package.menu $ $EDITOR package.menu $ sandcl -d 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@ --Qf878oECjVTnCF6M Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE/YBdAVqT7+fkT8woRAi26AJ4+6BA2CW23RfuqkTUgzR2QGYOK4gCgro9w z/9/lQJwAtOlzQBw0gZCOsA= =ge8r -----END PGP SIGNATURE----- --Qf878oECjVTnCF6M--