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