[devel] сборка пакета, опирающаяся на свойства бранча
Mikhail Novosyolov
mikhailnov на altlinux.org
Пт Ноя 20 22:31:04 MSK 2020
20.11.2020 22:20, Vitaly Lipatov пишет:
> Mikhail Novosyolov писал 20.11.20 21:32:
> ...
>> Да это то же самое
>>
>> %bcond_without foo
>>
>> %if %{with foo}
>> <...>
>> %endif
>>
>> Такая конструкция эквивалентна rpmbuild --with=foo (with и without
>> реверсированы в %bcond_with(out)), можно при этом сделать rpmbuild
>> --without=foo для отключения foo.
>>
>> В пакете branding-configs / distro-release задается глобальный для
>> "бранча" список переключалок:
>> %bcond_without selinux
>> %bcond_with foo
>> и т.д.
>> Далее в спеках можно подтягивать эти глобальные значения.
> Ага...
>
>> Как я понимаю, это именно то, что Вы описали для vulkan. Приведет к
>> тому, что лет через 5 будет огромный список таких глобальных
>> переключалок, подавляющее большинство которых не нужно будет для
>> актуальных бранчей, но они будут тянуться годами, на весь репозиторий
>> будет полтора пакета, их использующих, в большинстве из которых они
>> будут и не нужны к тому времени. А еще будет сложный процесс
>> согласования добавления переключалок, скорее всего.
> Спасибо за опыт. У меня тоже опыт поддержки таких штук.
> Устраивать это надо иначе:
> в условном rpm-macros-branch-config для _старых_ бранчей отключается то,
> что там не поддерживается. Таким образом эти настройки потом умирают вместе с бранчем.
> Да, будет требоваться обновлять в поддерживаемых бранчах этот пакет при появлении чего-то в Сизифе, что требует условной сборки.
>
> Например, я бы хотел для p8/c8:
> # отсутствие ffmpeg
> %def_without ffmpeg
> # отсутствие vulkan и использующих его библиотек
> %def_without vulkan
> # отсутствие faudio
> %def_without faudio
>
> То есть это не свойство бранча, а ретроспективный сожалеющий взгляд на то, чего там нет.
То есть при этом "%def_with vulkan" в условном rpm-macros-branch-config писать не придется? Тогда это выглядит лучше. Но желательно придумать механизм, чтобы в спеке для сизифа, в rpm-macros-branch-config которого вообще не будет ничего про ffmpeg, не пришлось писать далеко не всем понятные конструкции типа
%{?build_selinux}%{?!build_selinux:%bcond_with selinux}
Т.е., другими словами, rpm-build должен подгружать %def_without из файла макросов, а не только лишь из спека.
Подробная информация о списке рассылки Devel