Настройка sysbuild для получения исходных текстов через git
Введение
Одной из неудобных особенностей пакета sysbuild
по сравнению с пакетом pkg_comp2.0
является отсутствие возможности использовать для отслеживания обновлений исходных текстов git-репозиторий. Процедура получения обновлений из cvs-репозитория идёт очень долго, даже если никаких обновлений не появилось.
К счастью, на github-странице автора проекта Хулио Мерино можно найти доработку пакета sysbuild
и используемого им пакета shtk
, которая добавляет поддержку git-репозиториев:
Эта доработка выполнена неким github-пользователем yarlB, но не была добавлена в проект Хулио Мерино.
Кроме поддержки репозиториев git в пакет sysbuild
добавлены и другие функции. В частности, изменён формат отчёта о результатах сборки и, что более важно, добавлена возможность не запускать пересборку при отсутствии обновлений. Последняя функция работает только при использовании git-репозиториев.
Сборка и установка
Я доработал существующие pkgsrc devel/shtk и sysutils/sysbuild так, чтобы ими собирались пакеты из репозитория пользователя yarlB.
У меня уже была настроена сборка двоичных пакетов с помощью pkg_comp2.0
(см. статью Настройка сборочного сервера NetBSD), поэтому после доработки pkgsrc я просто удалил результаты прошлых сборок и запустил пересборку вручную:
# cd /var/pkg_comp
# rm packages/All/shtk*
# rm packages/All/sysbuild*
# pkg_comp -c pkg_comp.conf auto -f devel/shtk sysutils/sysbuild
После сборки я просто воспользовался утилитой pkgin
для установки обновлений:
# pkgin update
# pkgin upgrade
Настройка
Прописываем в файле конфигурации /home/sysbuild/default.conf
опцию для получения исходных текстов системы через git:
FETCH_METHOD=git
При использовании git в качестве источника исходных текстов опции CVSROOT
и CVSTAG
не используются. Вместо этого нужно склонировать нужную ветку исходных текстов из предпочитаемого git-репозитория. В дальнейшем для отслеживания обновлений исходных текстов будут использоваться эти настройки, сохранённые в подкаталогах .git
.
Получаем интересующую нас ветку netbsd-9
из git-репозиториев:
# cd /home/sysbuild
# git clone --branch netbsd-9 --single-branch https://github.com/NetBSD/src
# git clone --branch netbsd-9 --single-branch https://github.com/NetBSD/xsrc
Меняем владельца файлов:
# chown sysbuild:sysbuild -R src xsrc
Выполняем тестовый полный цикл обновления исходных текстов и пересборки системы:
# su - sysbuild -c "sysbuild -c /home/sysbuild/default.conf build"
Официальная поддержка git
В версии 2.8 Хулио Мерино добавил поддержку git. Правда, настройки несколько отличаются от описанных выше.
Для выбора системы управления версиями предназначена переменная SCM
, которая может принимать значения cvs
и git
. По умолчанию она принимает значение cvs
.
Исходные тексты NetBSD располагаются в двух репозиториях - src
и xsrc
. В первом репозитории находятся исходные тексты самой операционной системы, а во втором - исходные тексты системы X11. Для выбора ссылки на репозиторий и ветки репозитория предназначены соответствующие переменные:
GIT_SRC_REPO
указывает адрес репозиторияsrc
, по умолчанию принимает значениеhttps://github.com/NetBSD/src.git
,GIT_SRC_BRANCH
указывает ветку репозиторияsrc
, по умолчанию принимает значениеtrunk
,GIT_XSRC_REPO
указывает адрес репозиторияxsrc
, по умолчанию принимает значениеhttps://github.com/NetBSD/xsrc.git
,GIT_XSRC_BRANCH
указывает ветку репозиторияxsrc
, по умолчанию принимает значениеtrunk
.
Прописываем в файле конфигурации /home/sysbuild/default.conf
опции для получения исходных текстов системы через git:
SCM=git
GIT_SRC_REPO=https://stupin.su/git/mirror/netbsd-src
GIT_SRC_BRANCH=netbsd-10
GIT_XSRC_REPO=https://stupin.su/git/mirror/netbsd-src
GIT_XSRC_BRANCH=netbsd-10