[sisyphus] разные сборки одного пакета
Alexey Morozov
=?iso-8859-1?q?alex-altlinux_=CE=C1_idisys=2Eiae=2Ensk=2Esu?=
Чт Янв 15 03:23:33 MSK 2004
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 <arg>
%def_without <arg>
и
%def_enable <arg>
%def_disable <arg>
Первый набор управляется параметрами --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.
Соответственно, Вы можете, там где мэйнтейнер об этом подумал, управлять
параметрами пересборки. Вопрос только в том, что на данный момент _нет_
общепринятого набора допустимых опций, и каждый мэйнтейнер волен действовать
по своему усмотрению и, зачастую, опции сборки либо пересекаются
(--enable static vs --with static), либо вообще пробиваются в спек гвоздями:
%define smth 1
Таким образом стоят задачи:
1. Составить список наиболее употребимых опций сборки (alsa и esound туда
_точно_ должны попасть) и опубликовать его.
2. Добавить этот список куда-нибудь в rpm по аналогии с /usr/lib/rpm/GROUPS
3. Склонить каждого конкретного мэйнтэйнера на приведение каждого конкретного
спека в приемлемое в этом отношении состояние.
> 2. менять Release: такой же опцией. Например, я хочу, чтобы построился
> пакет не версии 1.0.0-alt1 , а 1.0.0-alt1adv ?
Вообще-то c release в этом случае, видимо, все плохо. То есть, чаще всего,
он жестко пробивается в спек, причем, по АЛЬТовым правилам сборки,
видимо, требуется еще и изменение changelog'а. К тому же, у пакетов
периодически встречаются жесткие зависимости на версии других пакетов
(с точностью до release), поэтому есть опасность, что при механическом
переписывании release все просто сломается.
> В том же esound.spec я нашёл такую директиву: %def_without alsa . Можно
> ли в неё вмешаться снаружи? А в release?
rpmbuild -ba <spec> --with alsa
либо занести в ~/.rpmmacros или в любое другое место,
где его увидит rpm, строчки, подобные этим:
%_without_python_auto --without-python_auto
%_with_python22 --with-python22
(См. мои питоньи спеки на http://woland.iae.nsk.su/~alex/python/SPECS)
2ldv: похоже, я нашел баг в обработке with/without. Параметры, указанные
в ~/.rpmmacros имеют приоритет перед теми, которые указаны в командной
строке. Неконсистентно.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20040115/7475ed53/attachment-0009.bin>
Подробная информация о списке рассылки Sisyphus