В дополнение к базовому функционалу директивы условий %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 
 Назад - Условные блоки 
 Содержание