Использование 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 файл должен иметь одинаковое имя с именем пакета.