Секция %prep задает команды, необходимые для подготовки к сборке ПО. В простейших случаях достаточно запуска макроса %setup, например:
%prep |
Эта команда меняет рабочий каталог на каталог сборки, как правило /usr/src/redhat/BUILD, и в нем разворачивает указанный архив. Предполагается, что хотя бы один файл исходного кода при распаковке создаст необходимый подкаталог по имени пакета. Если в составе исходников нет ни одного tar.gz-архива, макрос создаст необходимый подкаталог, если указана опция -c.
Опция -q задает тихое поведение с минимальным выводом. Опция -T отключает автоматическую распаковку сжатых архивов. Можно вручную задать имя подкаталога сборки с помощью опции -n. По умолчанию %setup перед распаковкой удаляет уже имеющийся подкаталог с совпадающим именем, это поведение можно отключить с помощью опции -D.
Нижеследующая таблица резюмирует параметры командной строки макроса %setup.
Параметр |
Значение |
-a номер |
Распаковать только Source с определенным номером, например -a 0 для первого архива Source0, после смены рабочего каталога на тот, куда происходит распаковка |
-b номер |
Распаковать только Source с определенным номером, например -b 0 для первого архива Source0, перед сменой рабочего каталога на тот, куда происходит распаковка |
-c |
Создать подкаталог перед распаковкой. Используется, когда процесс распаковки не подразумевает создание нужного подкаталога. |
-D |
Не удалять подкаталог перед распаковкой |
-n name |
Создать подкаталог с именем name |
-q |
Запустить макрос в тихом режиме с минимальным выводом ошибок |
-T |
Отключить автоматическую распаковку архива |
Хотя наиболее распространенным форматом файлов архивов с исходным кодом является .tar.gz, %setup умеет также автоматически распаковывать tar, zip, gzip,bzip2, pack, compress и lzh.
Подобно маккросу %setup директива %patch применяет патчи к коду. Директива также применяется в секции %prep. В каждой строке, содержащей %patch, описывается только один патч. Соответственно, если применяются все патчи, количество строк с директивой будет равно количеству патчей.
%patch принимает некоторые опции командной строки. Опция -p с номером, например, -p0, указывает команде patch не удалять слеши из пути, а -p1 говорит о том, что требуется удалить один слеш и, соответственно, один уровень иерархии директорий перед применением патча.
Секция %prep с применением к коду двух патчей будет выглядеть примерно так:
%prep |
Номера используются для различения патчей друг от друга, и указания, какой из них применяется. Например, %patch0 указывает на патч, описанный в директиве %Patch0: .
Необходимо использовать по одной директиве на каждый патч. Строка %patch указывает на %patch0.
Если необходимо применить какой-либо конкретный патч из набора, используют опцию -P, например:
%patch -P 2 |