2.11.2.2.5 Условные операторы
Скачать документКонсультации и оказание технической поддержки по данной статье не предоставляются.
Вы можете подробнее ознакомиться с принципами сборки пакетов для РЕД ОС, просмотрев наши обучающие видео:
на RuTube — Курс по принципам сборки пакетов для РЕД ОС;
в Яндекс.Дзен — Курс по принципам сборки пакетов для РЕД ОС;
в VK Видео — Курс по принципам сборки пакетов для РЕД ОС.
На наших каналах вы также сможете найти много другой полезной информации.
Условные операторы сборочной системы RPM позволяют включать различные разделы файла спецификации в зависимости от указанных условий.
Чаще всего условные операции имеют дело с:
разделами, относящиеся к версиям пакетов или операционной системы;
разделами, относящиеся к архитектуре;
существованием и определением макросов.
Синтаксис условного оператора следующий:
%if <УСЛОВИЕ>
...
%else
...
%endif
В случае необходимости выполнить только действия с истинным условием, можно использовать сокращённый вариант оператора:
%if <УСЛОВИЕ>
...
%endif
Существует форма записи данного оператора для случая проверки архитектуры, под которую собирается пакет:
%ifarch <АРХИТЕКТУРА>
...
%endif
Также имеется вариант, который проверяет условие «если НЕ указанная архитектура»:
%ifnarch <АРХИТЕКТУРА>
...
%endif
Например, задание переменной окружения CFLAGS в зависимости от архитектуры сборки пакета:
%ifarch %ix86 x86_64
export CFLAGS="$CFLAGS -msse2 -mfpmath=sse"
%endif
Чтобы избежать нештатных ситуаций при обработке условия, когда переменная (макрос) не определена, рекомендуется перед именем макроса ставить, например, символ «0»:
%if 0%{?redos} == 7
Requires: clang-devel
%endif
В директивах преамбулы BuildRequires и Requires для указания ограничений на версию требуемого пакета допускается краткое написание условного оператора, например:
BuildRequires: ffmpeg-devel >= 4.0
...
Requires: ffmpeg >= 4.0
Здесь в логической конструкции важно указывать такое же количество позиций у версии, как и у используемого пакета, то есть нельзя взять, например, только мажорную версию или добавить ещё одну цифру в конце.
Дата последнего изменения: 09.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.