В дополнение к базовому функционалу директивы условий %if , разработчику доступны специальные инструкции, тестирующие процессорную архитектуру и операционную систему. Процесс сборки в этом случае построен зависимым образом от результатов этих тестов.
Директива %ifarch делает выполняемыми все команды до директивы %endif, если процессорная архитектура машины, на которой производится сборка, соответствует образцу. Например:
%ifarch sparc |
Блок из примера будет выполнен только в том случае, если процессорная архитектура машины - SPARC.
Могут быть перечислены несколько архитектур, разделенных запятой или пробелом:
%ifarch sparc alpha |
Также как в %if для покрытия всех случаев, когда проверка неуспешна, используется %else :
%ifarch sparc alpha |
В данном примере проверяется, является ли текущая архитектура архитектурой SPARC или Alpha. Если да, выполняется блок между %ifarch и %else, если нет - блок между %else и %endif.
Директиву %ifarch (то есть, выполняемые ею действия) можно инвертировать. Для этого используется директива %ifnarch. Нижеследующий пример позволяет убедиться, что текущая архитектура не i386 и не Alpha.
%ifnarch i386 alpha |
Директива %ifos проверяет текущую операционную систему. Например:
%ifos linux |
В данном примере, если операционная система не Linux, никакие команды блока не будут выполнены. Этот случай также подлежит инвертированию:
%ifnos irix |
То есть, если операционная система НЕ Irix, то команды блока будут выполнены.
Далее - Раздел 11. Контролирование сборки с помощью утилиты rpmbuild
Назад - Условные блоки
Содержание