FreeSource : Мусорка/AltLinux/Sisyphus/devel/SubversionForSPECS

Использование subversion для хранения и сборки SRC пакетов.

Предлагаемый метод ни на что не претендует, но зарекомендовал себя как удобный способ хранения и сборки пакетов.

Для начала необходимо установить subversion (этот пакет не вытягивает ничего страшного, бояться его не стоит):


Создаем чистый репозитарий:


первый checkout:

Здесь вместо файл можно использовать svn+ssh://<сервер>/<путь к репозитарию>

далее необходимо зайти в каталог svn/trunk/

создаем каталог svn-build-common и кладем в него Makefile.common такого содержания:



добавляем каталог вместе с содержимым в svn:


коммитим:


начинаем укладывать пакеты:

для примера возьмем пакет gqview.


после выполнения последней команды получим в каталоге gqview подкаталоги SPECS и SOURCES, содержащие соответствующие компоненты RPM пакета

можно выполнять svn add gqview и svn commit

Следущим этапом надо сделать возможность сборки пакета с помощью make (кому это не нравится, тот может сделать какой-нибуть враппер на rpmbuild, переопределяющий _topdir):

в каталог gqview укладываем Makefile такого содержания:


И добавляем property для подключения внешнего источника svn-build-common в каталоге gqview:


коммитим property:
svn commit gqview

делаем update для gqview
svn up gqview

В итоге в каталоге gqview должен появится подкаталог svn-build-common, содержащий Makefile.common

ну а теперь об использовании всего этого хозяйства:

сборка исходного и бинарного пакета – в каталоге пакета make (или make ba)
сборка исходного пакета – make source
сборка бинарного пакета – make binary
накладывание патчей и подготовка build – make bp
очистка – make clean

также, для тех кто собирает пакеты из собственных исходников – данная схема предоставляет возможность хранения исходников в дереве svn с одновременной сборкой в тарболл и пакет.

Для этого достаточно в каталоге пакета создать подкаталог UNCOMPRESSED и в него уложить дерево исходников вашего проекта.

В случае обнаружения данного каталога make экспортирует из svn все дерево в каталог TMP/<имя пакета>-<версия>/, запакует каталог в tar.bz2 и соберет с ним пакет.

Версия в этом случае берется из SPEC файла.

Ограничение данной схемы:
spec файл должен иметь одинаковое имя с именем пакета.