Re: pkg-oss - каков статус этого проекта?
Konstantin Pavlov
thresh на nginx.com
Вт Янв 24 22:06:20 UTC 2023
Здравствуйте, Alex,
On 24/01/2023 12:31 PM, Alex Kubyshkin wrote:
> Добрый день, Константин!
>
> Спасибо за оперативный ответ!
>
>>> Вопрос возник в связи с тем, что при попытке использовать его для многих docker images, которые по идее должны поддерживаться, возникают различные ошибки при работе скрипта build_module.sh.
>>>
>>> Пробовал images:
>>> almalinux:8
>>> almalinux:9
>>> centos:8
>>> registry.access.redhat.com/ubi8/ubi:8.7
>>> rockylinux:8
>>> rockylinux:9
>>>
>>> Воспроизвести можно так:
>>> docker run --rm rockylinux:9 bash -c 'yum install -y wget && wget https://hg.nginx.org/pkg-oss/raw-file/default/build_module.sh && bash build_module.sh -y -r 20 https://github.com/arut/nginx-rtmp-module.git'
>> Работоспособность build_module.sh из tip проверяем на современных релизах, для NGINX Plus R20 система сборки была немного иная. Рекомендую чекаутить версию из бранча target-plus-r20 для настолько старого релиза - ну или обновиться на современный, для R27-R28 build_module.sh из tip default'а работать будет.
> Да, действительно, на r23 модуль собирается. Но r22 вышел 2.5 года назад всего, что по меркам сурового энтерпрайза фактически "вчера". Хотелось бы конечно, обратной совместимости, тем более в данном случае там совсем немного - путь в rpmbuild передается неверный.
Вероятно, чуть больше - там как минимум changelog'и еще не создаются на
первый взгляд.
>> Патчи приветствуются.
> А патчи как отсылать? Может у вас github/gitlab/bitbucket какой есть для простоты процесса?
Можно аттачами в nginx-packaging на f5.com - это адрес рассылки со мной и
моими коллегами, которые занимаются пакетированием продуктов NGINX/NGINX
Plus в F5.
К сожалению, репозитория в git-формате для pkg-oss нет (как и другого
web ui вместо hgweb), и не хотелось бы делать зеркало без лишней надобности.
>> В целом правильный путь - не использовать build_module.sh, а написать Makefile для нужного модуля и использовать его для своих сборок. Это позволит кастомизировать свои сборки, например добавлять свои патчи поверх исходников модуля. См. например https://hg.nginx.org/pkg-oss/file/tip/rpm/SPECS/Makefile.module-rtmp, но работать это будет только для современных релизов.
> А поподробней где можно почитать про "Makefile для нужного модуля"? Я собираю кастомный модуль для узкого потребления суровым энтерпрайзом, который как раз на Nginx Plus сидит. Если есть какой-то не велосипедный путь, рад буду его использовать.
Документации в виде текстового описания, увы, нет.
В целом схема примерно такая: в pkg-oss/rpm/SPECS есть Makefile, который
умеет запускать сборку поддерживаемых пакетов - nginx или модулей. В
случае модулей используются темплейт spec-файла
(nginx-plus-module.spec.in) и наполнение его контентом через нехитрый
sed. В этом же Makefile через include добавляются Makefile'ы для
модулей (Makefile.module-rtmp например), в которых заданы основные
параметры вроде тарболла с исходниками, configure arguments, патчей,
тестов и т.п. сборочной информации.
Для сборки под NGINX Plus достаточно в pkg-oss/rpm/SPECS в бранче для
желаемого релиза (target-plus-rXX, где XX номер релиза) можно сказать
что-то вида:
$ BASE_TARGET=plus MODULE_TARGET=plus make module-rtmp
При этом версия модуля, чексумма, url откуда его качать и т.п. вещи
задаются в pkg-oss/contrib/src/$name/.
В вашем случае, полагаю, будет достаточно держать патчсет с добавлением
rpm/SPECS/Makefile.module-$foo,
contrib/src/$foo/{Makefile,version,SHA512SUMS} и время от времени его
rebase'ить на новые бранчи релизов target-plus-rXX. Если требуется еще
и писать осмысленные changelog'и для пакетов, то стоит добавить и
docs/nginx-module-$foo.xml по аналогии с уже существующими - на его
основне при сборке будет генерироваться changelog, нативный для пакета
(rpm и debian) и добавляться в пакет.
Хорошего дня,
Подробная информация о списке рассылки nginx-ru