ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
From: Alexey Morozov <alex-altlinux@idisys.iae.nsk.su>
To: sisyphus@altlinux.ru
Subject: Re: [sisyphus] разные сборки одного пакета
Date: Thu, 15 Jan 2004 06:23:33 +0600
Message-ID: <20040115002333.GC4034@localhost.localdomain> (raw)
In-Reply-To: <1073913226.2544.56.camel@ildar>

[-- Attachment #1: Type: text/plain, Size: 2976 bytes --]

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 имеют приоритет перед теми, которые указаны в командной
строке. Неконсистентно.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

  parent reply	other threads:[~2004-01-15  0:23 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-01-12 13:13 Ildar Mulyukov
2004-01-12 18:19 ` led
2004-01-13  7:08   ` Низамов Шавкат
2004-01-13  7:59     ` led
2004-01-13  9:51       ` Алексей Любимов
2004-01-13 10:32         ` led
2004-01-14 17:48           ` [sisyphus] " Michael Shigorin
2004-01-13 13:17         ` [sisyphus] " Andrey Rahmatullin
2004-01-13 13:33           ` Serj
2004-01-13 13:47             ` led
2004-01-13 13:58           ` Aleksey Avdeev
2004-01-13 14:33             ` led
2004-01-13 14:44               ` Aleksey Avdeev
2004-01-13 14:55             ` Andrey Rahmatullin
2004-01-13 15:14               ` Aleksey Avdeev
2004-01-13 15:50                 ` Andrey Rahmatullin
2004-01-15  1:15                   ` Vitaly Lipatov
2004-01-15 11:17                     ` [sisyphus][JT] " Andrey Rahmatullin
2004-01-14 17:47         ` [sisyphus] " Michael Shigorin
2004-01-15 13:29           ` led
2004-01-12 18:21 ` [sisyphus] " Dmitry V. Levin
2004-01-15  0:23 ` Alexey Morozov [this message]
2004-01-15  8:25   ` [POLICY] " Michael Shigorin
2004-01-15 11:46   ` Dmitry V. Levin
2004-01-15 14:04     ` [sisyphus] " Michael Shigorin
2004-01-16 11:04     ` [sisyphus] " Alexey Morozov
2004-01-16 11:20       ` Dmitry V. Levin
2004-01-16 12:21         ` [sisyphus] " Michael Shigorin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20040115002333.GC4034@localhost.localdomain \
    --to=alex-altlinux@idisys.iae.nsk.su \
    --cc=sisyphus@altlinux.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Sisyphus discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
		sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
	public-inbox-index sisyphus

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sisyphus


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git