Notamock
Notamock - набор утилит создающих окружения для сборки rpm пакетов.
Частично пересекается по задачам с mock, отсюда и название.
- notamock - утилита для запуска одиночного процесса локальной сборки проекта
- notamocks - (+ s - множественное число) утилита для запуска локальной массовой сборки проектов с использованием notamock
- notamockc - (+ c - от chroot) утилита для создания контейнеров аналогично тому как делает notamock, но запустить в нем можно любую команду, по умолчанию bash
- notamockd - (+ в - от daemon) утилита для создания контейнеров для сборки с abf
- notamocka - (+ a - от abf) скрипт запуска abf билдеров в контейнере, используется только внутри контейнера в отличии от остальных утилит находится в отдельном пакете notamock-abf
Общая идея проекта отличающая его от mock заключается в использовании слоеных контейнеров, где нижний слой со стандартной рутфс общий для всех запущенных сборочных процессов сколько бы их ни было. Примерно аналогично работает докер. Это позволяет увеличить среднюю скорость сборки, за счет того, что минимальное окружение всегда готово и требуется установить только сборочные зависимости.
notamock
Скрипт в первую очередь предназначен для локальной сборки проектов с abf. Но может собрать и по src.rpm. Например для локальной пересборки текущей версии lsof можно использовать такие команды:
dnf install abb notamock abb clone lsof cd lsof notamock
Первая сборка будет достаточно продолжительной, так как создается rootfs. Последующие сборки в том числе и других проектов, будут значительно быстрее. notamock как и остальные утилиты проекта имеет встроенный --help, кроме параметров в справке можно переопределить любое значение установленное в /etc/notamock.cfg в cmdline notamock, например:
notamock BUILD_cmd="abb build -ba" RPMSAVE=yes
Наиболее полезные, на мой взгляд, опции:
- -v - более подробный выхлоп
- -e - остановка в сборочном контейнере перед запуском BUILD_cmd, можно править спек и запускать сборку с abb build. Полезно когда сборка падает. Два важных момента:
- не работает совместно с ключом -v
- измененный вами спек при выходе из этого режима (exit) не сохранится, достаточно сделать копию спека с другим именем.