Используется специальный синтаксис для проверки, был ли определен данный макрос. Например:
%{?macro_to_test: expression} |
Эта строка говорит RPM развернуть выражение expression, если макрос macro_to_test существует. Если макрос не существует, ничего не будет выведено. Проверку также можно осуществлять реверсивно. Если в проверке первый символ - знак !, выражение будет разворачиваться, если макрос НЕ существует:
%{!?macro_to_test: expression} |
В данном примере выражение expression будет развернуто, если макрос macro_to_test не существует.
При необходимости выражение можно пропустить и проверять только наличие или отсутствие макроса. Если макрос существует, RPM использует значение макроса, если не существует, RPM не будет делать ничего. Например:
%build |
В этом случае, если макрос _with_ldap существует, значение этого макроса будет подставлено в командную строку в скрипт ./configure в качестве параметра. Если макрос _with_ldap не существует, в скрипт не будет подставлено никаких параметров. Это весьма мощная возможность для процессов сборки или установки пакета.