22.2.2 Макросы условий

Для проверки, существует ли заданный макрос, используется специальный синтаксис. Например:

%{?macro_to_test: expression}

Подобная строка говорит RPM развернуть значение выражения, если macro_to_test определялся и существует. В противном случае строка игнорируется. Если нужно инвертировать условие, тогда впереди ставится восклицательный знак:

%{!?macro_to_test: expression}

В данном примере если macro_to_test не существует, тогда разворачивается выражение.

Для ветвления процесса используется макрос %if. Например:

%if %{old_5x}

%define b5x 1

%undefine b6x

%endif

%else позволяет специфицировать действия, которые необходимо проделать, если тест был неуспешный. Например:

%if %{old_5x}

%define b5x 1

%undefine b6x

%else

%define b6x 1

%undefine b5x

%endif

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

if ! %{old_5x}

%define b5x 1

%undefine b6x

%endif

Для комбинации нескольких тестов используется && :

%if %{old_5x} && %{old_6x}

%{error: You cannot build for .5x and .6x at the same time}

%quit

%endif

Далее - Встроенные макросы
Назад - Макросы определения переменных
Содержание