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