9.4.1 Подготовка к сборке

Индекс

9.4.1 Подготовка к сборке

Секция %prep задает команды, необходимые для подготовки к сборке ПО. В простейших случаях достаточно запуска макроса %setup, например:

%prep

%setup -q

Эта команда меняет рабочий каталог на каталог сборки, как правило /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

%setup -q

%patch1

%patch2

Номера используются для различения патчей друг от друга, и указания, какой из них применяется. Например, %patch0 указывает на патч, описанный в директиве %Patch0: .
Необходимо использовать по одной директиве на каждый патч. Строка %patch указывает на %patch0.

Если необходимо применить какой-либо конкретный патч из набора, используют опцию -P, например:

%patch -P 2

Далее - Сборка ПО
Назад - Имена патчей
Содержание