Настройка 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