ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: "Alexey I. Froloff" <sir_raorn@immo.ru>
To: ALTLinux devel <devel@altlinux.ru>
Subject: [devel] sandman mini-HOWTO part II
Date: Thu, 11 Sep 2003 10:33:36 +0400
Message-ID: <20030911063336.GP31943@inferno.immo> (raw)

[-- Attachment #1: Type: text/plain, Size: 4103 bytes --]

Итак, 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@

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

             reply	other threads:[~2003-09-11  6:33 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-11  6:33 Alexey I. Froloff [this message]
2003-09-12  6:48 ` Serge
2003-09-12  7:00   ` Alexey I. Froloff
2003-09-12  8:33     ` Serge
2003-09-12  9:06       ` Alexey I. Froloff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030911063336.GP31943@inferno.immo \
    --to=sir_raorn@immo.ru \
    --cc=devel@altlinux.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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