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

Ответить
betcher
Сообщения: 308
Зарегистрирован: 24 сен 2013, 06:37
Operating system: MagOS
Barium

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

Сообщение betcher » 22 мар 2022, 20:18

В контриб добавлен пакет 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
Последний раз редактировалось betcher 14 янв 2024, 18:24, всего редактировалось 2 раза.

termim
Сообщения: 39
Зарегистрирован: 25 ноя 2016, 02:01
Operating system: SuSE, Rosa

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

Сообщение termim » 16 июл 2022, 21:25

А можно сделать так, чтобы BR не скачивались каждый раз заново?

betcher
Сообщения: 308
Зарегистрирован: 24 сен 2013, 06:37
Operating system: MagOS
Barium

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

Сообщение betcher » 17 июл 2022, 08:24

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

betcher
Сообщения: 308
Зарегистрирован: 24 сен 2013, 06:37
Operating system: MagOS
Barium

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

Сообщение betcher » 22 июл 2022, 19:53

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

betcher
Сообщения: 308
Зарегистрирован: 24 сен 2013, 06:37
Operating system: MagOS
Barium

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

Сообщение betcher » 14 мар 2023, 17:57

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

betcher
Сообщения: 308
Зарегистрирован: 24 сен 2013, 06:37
Operating system: MagOS
Barium

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

Сообщение betcher » 03 май 2023, 18:58

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

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

betcher
Сообщения: 308
Зарегистрирован: 24 сен 2013, 06:37
Operating system: MagOS
Barium

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

Сообщение betcher » 14 янв 2024, 15:37

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

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

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

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

termim
Сообщения: 39
Зарегистрирован: 25 ноя 2016, 02:01
Operating system: SuSE, Rosa

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

Сообщение termim » 15 янв 2024, 02:14

А почему в ${OVERLAY}/start используется dnf builddep, а перед $CHROOT "$OVERLAY" /start - rpm-mk-build-deps?

betcher
Сообщения: 308
Зарегистрирован: 24 сен 2013, 06:37
Operating system: MagOS
Barium

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

Сообщение betcher » 15 янв 2024, 09:08

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 не работал.

betcher
Сообщения: 308
Зарегистрирован: 24 сен 2013, 06:37
Operating system: MagOS
Barium

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

Сообщение betcher » 15 янв 2024, 09:11

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

termim
Сообщения: 39
Зарегистрирован: 25 ноя 2016, 02:01
Operating system: SuSE, Rosa

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

Сообщение termim » 15 янв 2024, 20:20

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

betcher
Сообщения: 308
Зарегистрирован: 24 сен 2013, 06:37
Operating system: MagOS
Barium

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

Сообщение betcher » 16 янв 2024, 07:11

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

irton
Сообщения: 655
Зарегистрирован: 30 окт 2021, 04:17
Operating system: Rosa Fresh Xfce

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

Сообщение irton » 16 янв 2024, 10:11

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

Ответить

Вернуться в «Обсуждение ROSA Fresh R12 (платформа 2021.1)»