10.6.3 Архитектурно-зависимые условия

В дополнение к базовому функционалу директивы условий %if , разработчику доступны специальные инструкции, тестирующие процессорную архитектуру и операционную систему. Процесс сборки в этом случае построен зависимым образом от результатов этих тестов.

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

%ifarch sparc

%define b5x 1

%undefine b6x

%endif

Блок из примера будет выполнен только в том случае, если процессорная архитектура машины - SPARC.

Могут быть перечислены несколько архитектур, разделенных запятой или пробелом:

%ifarch sparc alpha

%define b5x 1

%undefine b6x

%endif

Также как в %if для покрытия всех случаев, когда проверка неуспешна, используется %else :

%ifarch sparc alpha

%define b5x 1

%undefine b6x

%else

%define b6x 1

%undefine b5x

%endif

В данном примере проверяется, является ли текущая архитектура архитектурой SPARC или Alpha. Если да, выполняется блок между %ifarch и %else, если нет - блок между %else и %endif.

Директиву %ifarch (то есть, выполняемые ею действия) можно инвертировать. Для этого используется директива %ifnarch. Нижеследующий пример позволяет убедиться, что текущая архитектура не i386 и не Alpha.

%ifnarch i386 alpha

%define b5x 1

%undefine b6x

%endif

Директива %ifos проверяет текущую операционную систему. Например:

%ifos linux

%define b5x 1

%undefine b6x

%endif

В данном примере, если операционная система не Linux, никакие команды блока не будут выполнены. Этот случай также подлежит инвертированию:

%ifnos irix

%define b5x 1

%undefine b6x

%endif

То есть, если операционная система НЕ Irix, то команды блока будут выполнены.

Далее - Раздел 11. Контролирование сборки с помощью утилиты rpmbuild
Назад - Условные блоки
Содержание