From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 15 Jan 2004 06:23:33 +0600 From: Alexey Morozov To: sisyphus@altlinux.ru Subject: Re: [sisyphus] =?koi8-r?B?0sHaztnFINPCz9LL?= =?koi8-r?B?ySDPxM7Px88g0MHLxdTB?= Message-ID: <20040115002333.GC4034@localhost.localdomain> References: <1073913226.2544.56.camel@ildar> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="ZmUaFz6apKcXQszQ" Content-Disposition: inline In-Reply-To: <1073913226.2544.56.camel@ildar> User-Agent: Mutt/1.4i X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.1.3 Precedence: list Reply-To: sisyphus@altlinux.ru List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Jan 2004 00:34:05 -0000 Archived-At: List-Archive: --ZmUaFz6apKcXQszQ Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit 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. Соответственно, Вы можете, там где мэйнтейнер об этом подумал, управлять параметрами пересборки. Вопрос только в том, что на данный момент _нет_ общепринятого набора допустимых опций, и каждый мэйнтейнер волен действовать по своему усмотрению и, зачастую, опции сборки либо пересекаются (--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 --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 имеют приоритет перед теми, которые указаны в командной строке. Неконсистентно. --ZmUaFz6apKcXQszQ Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQFABd2FX5DZdJn19V0RAkH1AKCB6sutuscEMD8xJjG6jUV3wBhsywCfYMnB u9fI76S/v0ezZTUlVtK8kaw= =rJV9 -----END PGP SIGNATURE----- --ZmUaFz6apKcXQszQ--