On Thu, Jan 15, 2004 at 06:23:33AM +0600, Alexey Morozov wrote: > On Mon, Jan 12, 2004 at 04:13:46PM +0300, Ildar Mulyukov wrote: > > А теперь: внимание, вопрос! > > Как в спеках поддерживается сборка пакетов с альтернативным набором фич? > > То есть > > 1. можно ли писать спек так, чтобы добавлением опций команде rpmbuild из > > того же src.rpm строился иной бинарник? Что-то вроде rpmbuild --rebuild > > --build-options="--with-alsa" esound.src.rpm ? > ну, собственно, четких правил еще нет. Зато есть два _непересекающихся_ > набора макросов, которые позволяют указывать параметры при сборке > (в CLI или в настройках RPM). Макросы таковы: > > %def_with > %def_without > > и > > %def_enable > %def_disable > > Первый набор управляется параметрами --with или --without, а второй - > --enable/--disable. > > Использование %def_with в спеке разрешает по умолчанию некоторую опцию, > а %def_without - запрещает ее по умолчанию. С enable/disable - > аналогично. > > Если некоторая опция smth была объявлена с with/without, то затем в спеке > можно написать: > > %if_with smth > ... do things if smth included > %endif > ... > %if_without smth > ... do things if smth excluded > %endif > > Аналогично с enable/disable, только используются > %if_enabled/%if_disabled. Есть ещё %{subst_with smth} и %{subst_enable smth}, которые раскрываются в --with-smth либо --without-smth и, соответственно, --enable-smth либо --disable-smth. Разнообразие with/without vs enable/disable - это следствие разнообразия аналогичных параметров configure. [...] > 2ldv: похоже, я нашел баг в обработке with/without. Параметры, указанные > в ~/.rpmmacros имеют приоритет перед теми, которые указаны в командной > строке. Неконсистентно. Да, в rpm всё наоборот: сначала параметры командной строки, потом макрофайлы, потом spec-файл. -- ldv