LINUX.ORG.RU

USE-макросы в rpm-пакетах

 ,


1

3

В рассылке Fedora опубликовано предложение по стандартизации макросов в спек-файлах RPM, позволяющее добавить в RPM-пакеты возможность выбора флагов компиляции и дополнительных зависимостей на этапе сборки.

Пример использования:

%if %{use ssl}
BuildRequires:  openssl-devel
%endif

%prep
%configure %{use_enable ssl openssl}

%check
make test %{?_use_ssl:-DSSL}

В этом примере при задании USE-макроса ssl в спек-файле будет добавлена дополнительная зависимость на пакет openssl-devel, будет выполнен шаг конфигурации с включенной опцией --enable-openssl, а также при сборке будут выполнены соответствующие тесты.

Предполагается что опция сборки будет задаваться бинарным макросом %_use_<feature> с дополнительными обертками вида:

  • %{use <feature>} – принимает значения 0 или 1,
  • %{use_enable <feature> [<configure name> [<configure option>]]} – разворачивается в --disable-<feature> или --enable-<feature>.

Добавление опций такого вида в спек-файлы позволит собирать различные варианты дистрибутива из одних и тех же исходников.

Например, для минимизации дерева build-зависимостей можно будет использовать глобальный параметр %{use docs} отключающий сборку документации.

Задавать подходящий набор опций можно будет сконфигурировав сборочное окружение. Причем опции можно будет задать как глобально, так и переопределив отдельно по каждому пакету.

Предложение пока не принято и находится на стадии обсуждения.

>>> Обсуждение в рассылке

★★★★★

Проверено: cetjs2 ()
Последнее исправление: cetjs2 (всего исправлений: 2)
Ответ на: комментарий от mx__

Идея в том чтобы вот этот кусок

%if 0%{?fedora}
%global with_python3 1
%endif

вынести с уровня пакета на уровень дистрибутива.

Плюс синктаксис попроще.

alpha ★★★★★
() автор топика
Ответ на: комментарий от alpha

вынести с уровня пакета на уровень дистрибутива.

Наверное я не понимаю. Но есть же файлы наборы макросов и помоему в зависимости от дистра.

И вообще это : %if 0%{?rhel} && 0%{?rhel} <= 6 разве не выбор дистра ?

Плюс синктаксис попроще.

Ну если только это.

mx__ ★★★★★
()
Ответ на: комментарий от mx__

Представть что у тебя 3000 python-пакетов.

В каждом из них в спеке есть строчки:

%if 0%{?fedora}
%global with_python3 1
%endif

И тут fedora решила перейти на python 4.

Сколько пакетов нужно будет исправить?

alpha ★★★★★
() автор топика
Ответ на: комментарий от alpha

Сколько пакетов нужно будет исправить?

Один. Файл с макросами. Где как раз и определяется ЭТОТ глобал.

mx__ ★★★★★
()
Ответ на: комментарий от alpha

Это потому что так спеки написали. Написали бы нормально и не было бы проблем.

cat /usr/lib/rpm/macros.python                                                               
# Python specific macro definitions.
# To make use of these macros insert the following line into your spec file:
# %include %{_rpmconfigdir}/macros.python

То что sclo в opt это фигня, вот то что спек один и тот же это +, тут без вопросов. Но накладные расходы в виде контейнров напрягают, хотя какая разницу куда и на каком уровне работает чанж-рут.

P.S. Фиг с ним с отказа от sclo в модуля, это не совсем та тема.

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от alpha

И кстати тот же к примеру ssl (как в примере) вот переделают его на ssl2 (к примеру) и теже 4000 спека нужно будет исправить.

mx__ ★★★★★
()
Ответ на: комментарий от alpha

вынести с уровня пакета на уровень дистрибутива.

А если одному пакету надо питон2, а другому питон3?

Согласен, что существуют «общесистемные зависимости», но они следствие, а зависимости пакета первичны.

anonymous
()
Ответ на: комментарий от alpha

Сколько пакетов нужно будет исправить?

Все 3000 спецификаций сборки!

А иначе никак, ибо одним надо только 2, другим 3, а некоторым уже 4.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.