22.2.1 Макросы определения переменных

Для помощи в контролировании процесса сборки пакета, макросы могут быть определены непосредственно в spec-файле.

Директива %define позволяет определить новый макрос. Наиболее часто встречающаяся форма - определить основные макросы в начале файла и затем использовать их на протяжении всего сценария сборки.

Например:

%define bindir /bin

Это позволяет задать установки в одном месте, и, если их придется изменить, также изменить все в одном месте.

Этот синтаксис используется для всех статических определений, например номеров версий:

%define major 2

%define minor 2

%define patchlevel 7

Version: %{major}.%{minor}.%{patchlevel}

Список более специфичных макросов для использования в spec-файле приводится в таблице ниже.

Макрос

Использование

%dump

Вывести значения макросов

%{echo:message}

Вывести сообщение в stderr

%{error:message}

Вывести сообщение в stderr и вернуть BADSPEC

%{expand:expression}

Подобно eval раскрывает выражение

%{F:file_exp}

Разрешить file_exp в имя файла

%global name value

Определить глобальный макрос

%{P:patch_exp}

Разрешить patch_exp в имя патча

%{S:source_exp}

Разрешить source_exp в имя файла с исходниками

%trace

Переключить вывод отладочной информации

%{uncompress:filename}

Проверить, является ли файл сжатым. Если да, то подвергнуть декомпрессии и включить в данный контекст. Если нет, вызывать cat для включения содержимого файла в данный контекст.

%undefine macro

Очистить заданный макрос

%{warn:message}

Вывести сообщение в stderr

Далее - Макросы условий
Назад - Файлы с исходным кодом
Содержание