Страница 1 из 1

notamock альтернативный способ сборки rpm + сборка на ABF

Добавлено: 22 мар 2022, 20:18
betcher
В контриб добавлен пакет notamock. Это легкая скриптовая замена mock, отличается более высокой скоростью сборки за счет того что сборочная рутфс не создается каждый раз с нуля, а используется одна для всех запущенных процессов notamock. Делал для себя, но решил опакетить, думаю будет полезна тем кто локально часто собирает пакеты для абф, ососбенно в момент работы над проектом, когда не каждая сборка завершается удачно. Процесс сборки выглядит так.
dnf install notamock

abb clone проект
cd проект
notamock.

Первая сборка будет долгой, как с mock, дальше будет гораздо быстрее. У скрипта есть встроенный --help, и еще много полезного с комментариями в конфиге /etc/notamock.cfg. Любой параметр из конфига можно переопределить в cmdline скрипта. Например:
notamock BASE=/home/user/notamock-rootfs TMP=/tmp/notamock
Из параметров чаще всего использую REUSABLE=yes, -e и -u

Второй скрипт - notamocks (буква s добавлена). Нужен для локальных масс-билдов с заданным количеством параллельных процессов notamock.

Наибольший выигрыш в скорости сборки против mock заметен на мелких пакетах у которых мало или нет BR, буквально в разы.

З.Ы. Подробнее: http://wiki.rosalab.ru/ru/index.php/Notamock

notamock легкая замена mock

Добавлено: 16 июл 2022, 21:25
termim
А можно сделать так, чтобы BR не скачивались каждый раз заново?

notamock легкая замена mock

Добавлено: 17 июл 2022, 08:24
betcher
Да можно. Пока собираете один и тот же проект добавляйте REUSABLE=yes. При сборке другого проекта сбросится.
З.Ы. Загляните в конфиг. Все что там есть можно менять в параметрах аналогично.

notamock легкая замена mock

Добавлено: 22 июл 2022, 19:53
betcher
В контрибе новая версия. Доделана работа с кэшем rpm. Спасибо termim за PR и вообще за идею.
Кэш подключается всегда, а вот чтобы сохранить новые пакеты нужно добавить RPMSAVE=yes в cmdline или в конфиг. Повторная сборка с кэшем будет чуть медленнее чем с REUSABLE=yes, но плюс в том что пакеты из кэша могут быть использованы при других сборках.

notamock легкая замена mock

Добавлено: 14 мар 2023, 17:57
betcher
В репозиторий летит обновление. Добавлен ключик "-r | --release" для указания платформы, то есть notamock -r 2023.1. Если не указывать собирать будет под текущую платформу.
Есть нюанс, ключик не заработает пока не обновите конфиг, после обновления пакета новый конфиг лежит в /etc/notamock.cfg.rpmnew, нужно заменить им /etc/notamock.cfg и вернуть туда ваши изменения если они там были.

notamock легкая замена mock

Добавлено: 03 май 2023, 18:58
betcher
Снова обнова. Добавлен ключ --chain для notamoks. Будет собирать проекты по цепочке. Проходит весь список, собранные пакеты добавляет в локальный реп и снова запускает сборку всех проектов. Так до тех пор пока за итерацию хоть что-то новое собирается. В итоге кроме собранных пакетов получите стэк сборки.

Ключи которые полезно добавлять:
-С для зачитски проектов перед первым циклом
-l ./LOG чтобы перенести логи в текущую папку из /var/log/notamoks
-r 2023.1 если нужна другая платформа
RPMSAVE=yes чтобы скачанные для сборки пакеты осели в кэше, достаточно добавить один раз, потом уже из кэша брать будет.

notamock альтернативный способ сборки rpm + сборка на ABF

Добавлено: 14 янв 2024, 15:37
betcher
Пачка достаточно существенных изменений. Вкратце здесь, подробнее :
http://wiki.rosalab.ru/ru/index.php/Notamock

1. Добавлена утилита notamockd. Создает контейнеры для сборки на АБФ с использованием notamock. Два режима работы - с докером и без. Количество билдеров в одном контейнере ограничено только здравым смыслом ).
2. Добавлена утилита notamockc. Создает чрут аналогично тому как это делает notamock, но вместо сборки просто запустит там bash или переданную вами команду.

Подробнее на вики, идеи и отзывы приветствуются категорически!

З.Ы. С АБФ пока сыровато, для полной замены стандартных билдеров не готово.

notamock альтернативный способ сборки rpm + сборка на ABF

Добавлено: 15 янв 2024, 02:14
termim
А почему в ${OVERLAY}/start используется dnf builddep, а перед $CHROOT "$OVERLAY" /start - rpm-mk-build-deps?

notamock альтернативный способ сборки rpm + сборка на ABF

Добавлено: 15 янв 2024, 09:08
betcher
termim писал(а):
15 янв 2024, 02:14
А почему в ${OVERLAY}/start используется dnf builddep, а перед $CHROOT "$OVERLAY" /start - rpm-mk-build-deps?
Приветствую.
То что в ${OVERLAY}/start это костыль, если коротко ). Надо будет сделать по-аккуратнее. Нужен для сборки нескольких особо хитровыпиленных проектов с абф. Встречал только в модулях питона. Схема сборки которых выглядит примерно так:
- устанавливаются BR описанные в спеке
- запускается сборка
- сборочные скрипты проекта не находят нужные зависимости и генерируют rpm пакет с зависимостями SRPMS/имя_проекта.nosrc.rpm
- сборка падает
- устанавливается SRPMS/имя_проекта.nosrc.rpm
- снова запускается сборка....
И так по кругу пока не соберется. Точно встречал проект где таких итерации было три, возможно бывает и больше.

Как по мне, такой способ сборки имеет право на жизнь, но то что такие проекты есть в платформе - зло. По спеку невозможно определить реально необходимый список BR, а случается, что нужно. Мне кажется правильнее после того как проект соберется таким хитрым образом найти по логу все BR и вписать в спек.
termim писал(а):
15 янв 2024, 02:14
а перед $CHROOT "$OVERLAY" /start - rpm-mk-build-deps?
В основной части могут использоваться оба варианта, зависит от того, что в конфиге. По дефолту выбран способ с rpm-mk-build-deps потому, что на некоторых проектах вариант с dnf builddep не работал.

notamock альтернативный способ сборки rpm + сборка на ABF

Добавлено: 15 янв 2024, 09:11
betcher
Билдлист собранного с notamockd проекта. Для затравочки )
https://abf.io/build_lists/4955119

notamock альтернативный способ сборки rpm + сборка на ABF

Добавлено: 15 янв 2024, 20:20
termim
betcher писал(а):
15 янв 2024, 09:08
И так по кругу пока не соберется. Точно встречал проект где таких итерации было три, возможно бывает и больше.
Не помните в каких конкретно пакетах?
В основной части могут использоваться оба варианта, зависит от того, что в конфиге. По дефолту выбран способ с rpm-mk-build-deps потому, что на некоторых проектах вариант с dnf builddep не работал.
Тоже интересно было бы посмотреть.

notamock альтернативный способ сборки rpm + сборка на ABF

Добавлено: 16 янв 2024, 07:11
betcher
termim писал(а):
15 янв 2024, 20:20
Не помните в каких конкретно пакетах?
python-sphinx в 2023.1, например. И, кстати, этот кусок я переписал в notamock вчера.
termim писал(а):
15 янв 2024, 20:20
Тоже интересно было бы посмотреть.
А вот тут не помню. Помню, что проект был с большим спеком, типа glibc и когда вариант с Мишиным скриптом сработал просто не стал разбираться.

notamock альтернативный способ сборки rpm + сборка на ABF

Добавлено: 16 янв 2024, 10:11
irton
termim писал(а):
15 янв 2024, 20:20
Не помните в каких конкретно пакетах?
все python проекты использующие
# for autoinstall BuildRequires
%generate_buildrequires
%pyproject_buildrequires -r