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