9.4.2 Сборка ПО

Секция %prep готовит процесс сборки, который выполняется секцией %build. Секцию сборки необходимо заполнить всеми нужными для сборки командами. В простых случаях это будет примерно следующее:

%build

./configure

make

В данном случае выполняется две команды, ./configure для запуска скрипта конфигурации и make для сборки ПО. Вместо запуска скрипта ./configure часто используется макрос %configure. Скрипт ./configure как правило имеет множество опций, которые можно вывести по команде ./configure --help . Как правило, большая часть этих опций заведует установкой переменных окружения сборки. Макрос %configure может задать часть переменных по умолчанию. Если требуется посмотреть, как макрос разворачивается, следует выполнить команду rpm --eval '%configure' :

$ rpm --eval '%configure'

CFLAGS="${CFLAGS:--O2 -march=i386 -mcpu=i686}" ; export CFLAGS ;

CXXFLAGS="${CXXFLAGS:--O2 -march=i386 -mcpu=i686}" ; export CXXFLAGS ;

FFLAGS="${FFLAGS:--O2 -march=i386 -mcpu=i686}" ; export FFLAGS ;

[ -f configure.in ] && libtoolize --copy --force ;

./configure i386-redhat-linux \

--prefix=/usr \

--exec-prefix=/usr \

--bindir=/usr/bin \

--sbindir=/usr/sbin \

--sysconfdir=/etc \

--datadir=/usr/share \

--includedir=/usr/include \

--libdir=/usr/lib \

--libexecdir=/usr/libexec \

--localstatedir=/var \

--sharedstatedir=/usr/com \

--mandir=/usr/share/man \

--infodir=/usr/share/info

Важное значение имеет то обстоятельство, что команды в секции %build должны быть согласованы с конструкцией Makefile, и цели сборки должны указываться те, которые определены в Makefile. В данном случае указана команда make без параметров, которая по умолчанию использует цель all.

Не рекомендуется помещать слишком много логики в spec-файл, это затруднит тестирование приложения или библиотеки.

Если необходимо изменить каталог, куда будет устанавливаться ПО при установке пакета, указывают параметр --prefix. Например:

%build

./configure --prefix=$RPM_BUILD_ROOT/usr

make

В данном примере ПО будет устанавливаться в RPM_BUILD_ROOT и именно там rpmbuild будет искать файлы для упаковки их в пакет.

Далее - Инсталляция ПО
Назад - Подготовка к сборке
Содержание