ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] новые gear + hasher
@ 2008-04-29 10:13 Evgeny Sinelnikov
  2008-04-29 10:17 ` Alexey Gladkov
  2008-04-29 13:05 ` Dmitry V. Levin
  0 siblings, 2 replies; 14+ messages in thread
From: Evgeny Sinelnikov @ 2008-04-29 10:13 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Здравствуйте,

наткнулся на проблему сборки kde-пакетов на новых gear-1.4.0-alt1 +
hasher-1.3.6-alt1 из-под gear. Проблема состоит в том, что не все
сборочные зависимости, в частности kde-common-devel, оказываются
доступными при сборке из-под gear. Две следующие команды отрабатывают
по разному:
1) Не работает так:
gear --commit --hasher -- hsh "/home/sin/hasher-SS"
--apt-config="/etc/apt/apt.conf.SS" --target=i586
--repo-bin="/home/sin/geet/repo/RPMS"
--repo-src="/home/sin/geet/repo/SRPMS" --eager-clean
....
<13>Apr 29 13:47:03 rpmi: cpp4.1-4.1.2-alt2 installed
<13>Apr 29 13:47:05 rpmi: rpm-build-4.0.4-alt92 installed
<86>Apr 29 13:47:08 groupadd[15121]: new group: name=caller, gid=500
<86>Apr 29 13:47:08 useradd[15122]: new user: name=caller, uid=500,
gid=500, home=/, shell=/bin/bash
<86>Apr 29 13:47:08 groupadd[15123]: new group: name=rooter, gid=501
<86>Apr 29 13:47:08 useradd[15124]: new user: name=rooter, uid=501,
gid=501, home=/root, shell=/bin/bash
<86>Apr 29 13:47:08 groupadd[15125]: new group: name=builder, gid=502
<86>Apr 29 13:47:08 useradd[15126]: new user: name=builder, uid=502,
gid=502, home=/usr/src, shell=/bin/bash
warning: Macro %_K_if_ver_lt not found
error: line 9: Unknown tag: %_K_if_ver_lt 2.5.1 2.5
hsh-rebuild: pkg.tar: failed to fetch build dependencies.

2) Но работает так:
hsh "/home/sin/hasher-SS" --apt-config="/etc/apt/apt.conf.SS"
--target=i586 --repo-bin="/home/sin/geet/repo/RPMS"
--repo-src="/home/sin/geet/repo/SRPMS" --eager-clean
/home/sin/RPM/SRPMS/kdelibs-3.5.9-alt4.bld1.src.rpm

-- 
Sin (Sinelnikov Evgeny)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 10:13 [devel] новые gear + hasher Evgeny Sinelnikov
@ 2008-04-29 10:17 ` Alexey Gladkov
  2008-04-29 10:22   ` Evgeny Sinelnikov
  2008-04-29 13:05 ` Dmitry V. Levin
  1 sibling, 1 reply; 14+ messages in thread
From: Alexey Gladkov @ 2008-04-29 10:17 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Evgeny Sinelnikov wrote:
> Две следующие команды отрабатывают по разному:

Разумеется они работают по разному.

> 1) Не работает так:
> gear --commit --hasher -- hsh "/home/sin/hasher-SS"
> --apt-config="/etc/apt/apt.conf.SS" --target=i586
> --repo-bin="/home/sin/geet/repo/RPMS"
> --repo-src="/home/sin/geet/repo/SRPMS" --eager-clean

Покажите BuildRequires* из пакета.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 10:17 ` Alexey Gladkov
@ 2008-04-29 10:22   ` Evgeny Sinelnikov
  2008-04-29 10:31     ` Alexey Gladkov
  0 siblings, 1 reply; 14+ messages in thread
From: Evgeny Sinelnikov @ 2008-04-29 10:22 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[...]
> > 1) Не работает так:
> > gear --commit --hasher -- hsh "/home/sin/hasher-SS"
> > --apt-config="/etc/apt/apt.conf.SS" --target=i586
> > --repo-bin="/home/sin/geet/repo/RPMS"
> > --repo-src="/home/sin/geet/repo/SRPMS" --eager-clean
> >
>
>  Покажите BuildRequires* из пакета.
>

$ grep "BuildRequires.*" kdelibs.spec
#BuildRequires: XFree86-devel XFree86-libs bzlib-devel doxygen
fontconfig freetype2 gcc-c++ gcc-g77 glib2 kde-settings libalsa-devel
libart_lgpl-devel libarts-devel libarts-qt-devel libcups-devel
libjpeg-devel libldap-devel libpcre-devel libpcsclite-devel
libpng-devel libqt3-devel libssl-devel libstdc++-devel libtiff-devel
libutempter-devel libxml2-devel libxslt-devel menu-devel netpbm
qt3-designer qt3-doc su xml-utils zlib-devel
BuildRequires: xorg-x11-devel bzlib-devel doxygen
BuildRequires: gcc-c++ libalsa-devel
BuildRequires: libart_lgpl-devel libcups-devel
BuildRequires: libjpeg-devel libldap-devel libpcre-devel
BuildRequires: libpng-devel libqt3-devel libssl-devel libstdc++-devel
libtiff-devel
BuildRequires: libutempter-devel libxml2-devel libxslt-devel
menu-devel netpbm libnetpbm-devel
BuildRequires: qt3-doc xml-utils zlib-devel libkrb5-devel libidn-devel
BuildRequires: libkrb5-devel libaspell-devel libacl-devel libattr-devel
BuildRequires: libavahi-qt3-devel pkg-config liblua5-devel libjasper-devel
BuildRequires: glibc-utils glibc-devel
BuildRequires: openexr-devel
BuildRequires: libqt3-devel-cxx = %__gcc_version_base
BuildRequires: libqt3 >= 3.2.0 libqt3-devel >= 3.2.0
BuildRequires: flex su sudo kde-common-devel >= 0.2.0
BuildRequires: libarts-devel >= 1.5.8 libarts-qtmcop-devel >= 1.5.8
BuildRequires: djvu-common libgnutls-devel
BuildRequires: openjade docbook-utils docbook-dtds
#BuildRequires: libqt3-qsa > 3.0 libqt3-qsa-devel > 3.0

kde-common-devel присутствует

-- 
Sin (Sinelnikov Evgeny)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 10:22   ` Evgeny Sinelnikov
@ 2008-04-29 10:31     ` Alexey Gladkov
  2008-04-29 10:48       ` Evgeny Sinelnikov
  0 siblings, 1 reply; 14+ messages in thread
From: Alexey Gladkov @ 2008-04-29 10:31 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Evgeny Sinelnikov wrote:
> kde-common-devel присутствует

Если этот пакет участвует в образовании имени/версии/релиза (поправьте 
меня если ошибаюсь), то такая зависимость должна быть объявлена как:

BuildRequires(pre): kde-common-devel

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 10:31     ` Alexey Gladkov
@ 2008-04-29 10:48       ` Evgeny Sinelnikov
  2008-04-29 10:51         ` Evgeny Sinelnikov
  0 siblings, 1 reply; 14+ messages in thread
From: Evgeny Sinelnikov @ 2008-04-29 10:48 UTC (permalink / raw)
  To: ALT Linux Team development discussions

2008/4/29 Alexey Gladkov <legion@altlinux.ru>:
> Evgeny Sinelnikov wrote:
>
> > kde-common-devel присутствует
> >
>
>  Если этот пакет участвует в образовании имени/версии/релиза (поправьте меня
> если ошибаюсь), то такая зависимость должна быть объявлена как:
>

Я полагаю, что такая вот конструкция:
%_K_if_ver_lt %glibc_core_ver 2.5
%define _keep_libtool_files 0
%endif
не влияет на вычисление NVR, но тем не менее из-за неё возникает вопрос...


>  BuildRequires(pre): kde-common-devel
>

Да, так работает, но есть один момент... некоторые пакеты (например
kdebase, если не ошибаюсь) тоже хотят пресловутый макрос, а вытягивают
его через зависимость на kdelibs-devel


-- 
Sin (Sinelnikov Evgeny)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 10:48       ` Evgeny Sinelnikov
@ 2008-04-29 10:51         ` Evgeny Sinelnikov
  0 siblings, 0 replies; 14+ messages in thread
From: Evgeny Sinelnikov @ 2008-04-29 10:51 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[...]
>
>  >  BuildRequires(pre): kde-common-devel
>  >
>
>  Да, так работает,

Правда после этого возниакет ещё один хвост:
...
<13>Apr 29 14:39:11 rpmi: kde-common-devel-4.0.3-alt1 installed
error: line 44: Version required: Requires: libart_lgpl >=
hsh-rebuild: pkg.tar: failed to fetch build dependencies.


-- 
Sin (Sinelnikov Evgeny)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 10:13 [devel] новые gear + hasher Evgeny Sinelnikov
  2008-04-29 10:17 ` Alexey Gladkov
@ 2008-04-29 13:05 ` Dmitry V. Levin
  2008-04-29 13:22   ` Alexey Gladkov
  1 sibling, 1 reply; 14+ messages in thread
From: Dmitry V. Levin @ 2008-04-29 13:05 UTC (permalink / raw)
  To: ALT Linux Team development discussions

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

On Tue, Apr 29, 2008 at 02:13:29PM +0400, Evgeny Sinelnikov wrote:
> Здравствуйте,
> 
> наткнулся на проблему сборки kde-пакетов на новых gear-1.4.0-alt1 +
> hasher-1.3.6-alt1 из-под gear. Проблема состоит в том, что не все
> сборочные зависимости, в частности kde-common-devel, оказываются
> доступными при сборке из-под gear.

На всякий случай скажу, что новизна hasher/gear на это не влияет.

Всё дело в том, что spec-файлы тех kde-пакетов, о которых идёт речь,
с одной стороны, не обрабатываются с помощью команды
rpmbuild -bs --nodeps --define '_allow_undefined_macros 1'
если в сборочной среде не установлено каких-то kde-специфичных пакетов,
и, с другой стороны, в BuildRequires(pre) не перечислены все эти
kde-специфичные пакеты, необходимые для сборки srpm-пакета.


-- 
ldv

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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 13:05 ` Dmitry V. Levin
@ 2008-04-29 13:22   ` Alexey Gladkov
  2008-04-29 13:25     ` Dmitry V. Levin
  0 siblings, 1 reply; 14+ messages in thread
From: Alexey Gladkov @ 2008-04-29 13:22 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Dmitry V. Levin wrote:
> Всё дело в том, что spec-файлы тех kde-пакетов, о которых идёт речь,
> с одной стороны, не обрабатываются с помощью команды
> rpmbuild -bs --nodeps --define '_allow_undefined_macros 1'
> если в сборочной среде не установлено каких-то kde-специфичных пакетов,
> и, с другой стороны, в BuildRequires(pre) не перечислены все эти
> kde-специфичные пакеты, необходимые для сборки srpm-пакета.

Кстати, требования BuildRequires(pre) у нас не описан ни в gear, ни в 
hasher. Или я что-то упустил?

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 13:22   ` Alexey Gladkov
@ 2008-04-29 13:25     ` Dmitry V. Levin
  2008-04-29 15:05       ` Evgeny Sinelnikov
  0 siblings, 1 reply; 14+ messages in thread
From: Dmitry V. Levin @ 2008-04-29 13:25 UTC (permalink / raw)
  To: ALT Linux Team development discussions

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

On Tue, Apr 29, 2008 at 05:22:24PM +0400, Alexey Gladkov wrote:
> Dmitry V. Levin wrote:
> >Всё дело в том, что spec-файлы тех kde-пакетов, о которых идёт речь,
> >с одной стороны, не обрабатываются с помощью команды
> >rpmbuild -bs --nodeps --define '_allow_undefined_macros 1'
> >если в сборочной среде не установлено каких-то kde-специфичных пакетов,
> >и, с другой стороны, в BuildRequires(pre) не перечислены все эти
> >kde-специфичные пакеты, необходимые для сборки srpm-пакета.
> 
> Кстати, требования BuildRequires(pre) у нас не описан ни в gear, ни в 
> hasher. Или я что-то упустил?

Надо проверить.


-- 
ldv

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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 13:25     ` Dmitry V. Levin
@ 2008-04-29 15:05       ` Evgeny Sinelnikov
  2008-04-29 19:17         ` Sergey Vlasov
  0 siblings, 1 reply; 14+ messages in thread
From: Evgeny Sinelnikov @ 2008-04-29 15:05 UTC (permalink / raw)
  To: ALT Linux Team development discussions

2008/4/29 Dmitry V. Levin <ldv@altlinux.org>:
> On Tue, Apr 29, 2008 at 05:22:24PM +0400, Alexey Gladkov wrote:
>  > Dmitry V. Levin wrote:
>  > >Всё дело в том, что spec-файлы тех kde-пакетов, о которых идёт речь,
>  > >с одной стороны, не обрабатываются с помощью команды
>  > >rpmbuild -bs --nodeps --define '_allow_undefined_macros 1'
>  > >если в сборочной среде не установлено каких-то kde-специфичных пакетов,
>  > >и, с другой стороны, в BuildRequires(pre) не перечислены все эти
>  > >kde-специфичные пакеты, необходимые для сборки srpm-пакета.
>  >
>  > Кстати, требования BuildRequires(pre) у нас не описан ни в gear, ни в
>  > hasher. Или я что-то упустил?
>
>  Надо проверить.
>

Непонятно теперь две вещи...
1) Я полагаю, что требование для BuildRequires(pre) теперь
ужесточается... то есть нужно патчить спеки... Так? Тогда каков
формальный критерий? Если в хешере оно всё равно собирается? не
собирается ведь только в хешере, запущенном из-под gear...

2) Довольно непонятно, почему, при наличии нужных BuildRequires(pre),
возникает это:

...
<13>Apr 29 14:39:11 rpmi: kde-common-devel-4.0.3-alt1 installed
error: line 44: Version required: Requires: libart_lgpl >=
- Hide quoted text -
hsh-rebuild: pkg.tar: failed to fetch build dependencies.

На самом деле конструкция вида:
Requires: libart_lgpl >= %{get_version libart_lgpl}
на сборку влиять не должна...
но на новых gear + hasher оно так себя ведёт...

-- 
Sin (Sinelnikov Evgeny)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 15:05       ` Evgeny Sinelnikov
@ 2008-04-29 19:17         ` Sergey Vlasov
  2008-04-29 19:21           ` Andrey Rahmatullin
  2008-05-06 23:39           ` Dmitry V. Levin
  0 siblings, 2 replies; 14+ messages in thread
From: Sergey Vlasov @ 2008-04-29 19:17 UTC (permalink / raw)
  To: devel

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

On Tue, Apr 29, 2008 at 07:05:05PM +0400, Evgeny Sinelnikov wrote:
> Непонятно теперь две вещи...
> 1) Я полагаю, что требование для BuildRequires(pre) теперь
> ужесточается... то есть нужно патчить спеки... Так? Тогда каков
> формальный критерий? Если в хешере оно всё равно собирается? не
> собирается ведь только в хешере, запущенном из-под gear...

Разница в том, что в традиционном варианте hasher получает на вход
готовый src.rpm, в котором уже присутствуют готовые сборочные
зависимости, а при запуске через gear изначально доступны только файлы
с исходниками и текст spec-файла.  В последнем случае для получения
сборочных зависимостей необходимо выполнить разбор spec-файла
средствами rpmbuild, однако результат этой операции в общем случае
зависит и от среды, в которой запускается rpmbuild - в частности, для
раскрытия некоторых макросов требуется наличие в сборочной среде
определённых пакетов, без которых при попытке разбора spec-файла
возникают ошибки, препятствующие извлечению из него информации о
зависимостях.  Для разрыва этого цикла и создан механизм
BuildRequires(pre) - такие зависимости извлекаются из spec-файла при
помощи sed, и установки полученного из этих строк набора пакетов
должно быть достаточно для выполнения команды вида:

  rpmbuild -bs --nodeps --define '_allow_undefined_macros 1' \
  	(определения _specdir и прочих каталогов) \
	FILE.spec

Формальный критерий необходимости BuildRequires(pre) - невозможность
успешного выполнения указанной команды в сборочном чруте без
предварительной установки туда некоторых пакетов, не входящих в
минимальную сборочную систему.

Обычно встречающиеся случаи, когда требуется BuildRequires(pre):

1) Использование макросов для формирования условных конструкций
   (например, упоминавшийся здесь макрос %_K_if_ver_gt - он
   раскрывается в %if, и при отсутствии определения макроса в
   сборочной среде встречающиеся далее %else или %endif
   рассматриваются как синтаксическая ошибка).

2) Использование макросов для подстановки версий в зависимости (типа
   Requires: PACKAGE >= %{get_version PACKAGE}) - обычно при
   отсутствии указанного пакета в сборочной среде такие макросы
   раскрываются в пустую строку, в результате формируется
   синтаксически неверный параметр тега Requires.  В других случаях
   (если используется макрос без параметров, определённый в пакете,
   который оказался не установлен) в поле версии пакета попадает
   символ '%' из нераскрывшегося макроса, что rpmbuild также считает
   ошибкой.

Если отсутствие определения макроса вызывает только предупреждения, но
не приводит к ошибкам при разборе spec-файла для rpmbuild -bs, пакет,
требуемый для такого макроса, не требуется указывать в
BuildRequires(pre) - достаточно обычной сборочной зависимости.

> 2) Довольно непонятно, почему, при наличии нужных BuildRequires(pre),
> возникает это:
> 
> ...
> <13>Apr 29 14:39:11 rpmi: kde-common-devel-4.0.3-alt1 installed
> error: line 44: Version required: Requires: libart_lgpl >=
> - Hide quoted text -
> hsh-rebuild: pkg.tar: failed to fetch build dependencies.
> 
> На самом деле конструкция вида:
> Requires: libart_lgpl >= %{get_version libart_lgpl}
> на сборку влиять не должна...
> но на новых gear + hasher оно так себя ведёт...

Макрос %{get_version PACKAGE} может быть правильно раскрыт только при
наличии в сборочной среде установленного пакета PACKAGE; если такой
пакет не установлен, в результате раскрытия макроса получается пустая
строка, которая при подстановке в spec-файл даёт синтаксическую
ошибку.  Из-за этого пакеты, упоминаемые в %{get_version ...} и других
подобных макросах, необходимо также перечислять в BuildRequires(pre),
чтобы к моменту разбора spec-файла средствами rpmbuild эти пакеты были
уже установлены.

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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 19:17         ` Sergey Vlasov
@ 2008-04-29 19:21           ` Andrey Rahmatullin
  2008-05-06 23:44             ` Dmitry V. Levin
  2008-05-06 23:39           ` Dmitry V. Levin
  1 sibling, 1 reply; 14+ messages in thread
From: Andrey Rahmatullin @ 2008-04-29 19:21 UTC (permalink / raw)
  To: devel

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

On Tue, Apr 29, 2008 at 11:17:13PM +0400, Sergey Vlasov wrote:
> Формальный критерий необходимости BuildRequires(pre) - невозможность
> успешного выполнения указанной команды в сборочном чруте без
> предварительной установки туда некоторых пакетов, не входящих в
> минимальную сборочную систему.
> 
> Обычно встречающиеся случаи, когда требуется BuildRequires(pre):
Когда это появилось и где описано?

-- 
WBR, wRAR (ALT Linux Team)
Powered by the ALT Linux fortune(8):

[...] любители ругаться не читают документацию :-)\r
		-- aen in devel@\r

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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 19:17         ` Sergey Vlasov
  2008-04-29 19:21           ` Andrey Rahmatullin
@ 2008-05-06 23:39           ` Dmitry V. Levin
  1 sibling, 0 replies; 14+ messages in thread
From: Dmitry V. Levin @ 2008-05-06 23:39 UTC (permalink / raw)
  To: ALT Devel discussion list

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

On Tue, Apr 29, 2008 at 11:17:13PM +0400, Sergey Vlasov wrote:
> On Tue, Apr 29, 2008 at 07:05:05PM +0400, Evgeny Sinelnikov wrote:
> > Непонятно теперь две вещи...
> > 1) Я полагаю, что требование для BuildRequires(pre) теперь
> > ужесточается... то есть нужно патчить спеки... Так? Тогда каков
> > формальный критерий? Если в хешере оно всё равно собирается? не
> > собирается ведь только в хешере, запущенном из-под gear...
> 
> Разница в том, что в традиционном варианте hasher получает на вход
> готовый src.rpm, в котором уже присутствуют готовые сборочные
> зависимости, а при запуске через gear изначально доступны только файлы
> с исходниками и текст spec-файла.  В последнем случае для получения
> сборочных зависимостей необходимо выполнить разбор spec-файла
> средствами rpmbuild, однако результат этой операции в общем случае
> зависит и от среды, в которой запускается rpmbuild - в частности, для
> раскрытия некоторых макросов требуется наличие в сборочной среде
> определённых пакетов, без которых при попытке разбора spec-файла
> возникают ошибки, препятствующие извлечению из него информации о
> зависимостях.  Для разрыва этого цикла и создан механизм
> BuildRequires(pre) - такие зависимости извлекаются из spec-файла при
> помощи sed, и установки полученного из этих строк набора пакетов
> должно быть достаточно для выполнения команды вида:
> 
>   rpmbuild -bs --nodeps --define '_allow_undefined_macros 1' \
>   	(определения _specdir и прочих каталогов) \
> 	FILE.spec
> 
> Формальный критерий необходимости BuildRequires(pre) - невозможность
> успешного выполнения указанной команды в сборочном чруте без
> предварительной установки туда некоторых пакетов, не входящих в
> минимальную сборочную систему.
> 
> Обычно встречающиеся случаи, когда требуется BuildRequires(pre):
> 
> 1) Использование макросов для формирования условных конструкций
>    (например, упоминавшийся здесь макрос %_K_if_ver_gt - он
>    раскрывается в %if, и при отсутствии определения макроса в
>    сборочной среде встречающиеся далее %else или %endif
>    рассматриваются как синтаксическая ошибка).
> 
> 2) Использование макросов для подстановки версий в зависимости (типа
>    Requires: PACKAGE >= %{get_version PACKAGE}) - обычно при
>    отсутствии указанного пакета в сборочной среде такие макросы
>    раскрываются в пустую строку, в результате формируется
>    синтаксически неверный параметр тега Requires.  В других случаях
>    (если используется макрос без параметров, определённый в пакете,
>    который оказался не установлен) в поле версии пакета попадает
>    символ '%' из нераскрывшегося макроса, что rpmbuild также считает
>    ошибкой.
> 
> Если отсутствие определения макроса вызывает только предупреждения, но
> не приводит к ошибкам при разборе spec-файла для rpmbuild -bs, пакет,
> требуемый для такого макроса, не требуется указывать в
> BuildRequires(pre) - достаточно обычной сборочной зависимости.

Ответ получился настолько развёрнутым, что просится в документацию.
Поэтому позволю себе его дополнить.

Действительно, при сборке srpm-пакетов вычисление и установка в чрут
сборочных зависимостей происходит ровно 1 раз, поскольку все сборочные
зависимости явно указаны в заголовке srpm-пакета.
При сборке из gear вычисление в чруте и установку сборочных зависимостей
в чрут приходится выполнять в 3 этапа:
1. извлечение зависимостей вида BuildRequires(pre) из spec-файла sed'ом и
их установка;
2. извлечение сборочных зависимостей из результата препроцессинга spec-файла
(rpmbuild -bE) и их установка;
3. создание srpm-пакета (rpmbuild -bs) и установка сборочных зависимостей
согласно заголовку srpm-пакета.

Таким образом, в BuildRequires(pre) необходимо указывать только такие
основополагающие сборочные зависимости, которые необходимы для корректного
вычисления сборочных зависимостей посредством rpmbuild -bE и rpmbuild -bs.

> > 2) Довольно непонятно, почему, при наличии нужных BuildRequires(pre),
> > возникает это:
> > 
> > ...
> > <13>Apr 29 14:39:11 rpmi: kde-common-devel-4.0.3-alt1 installed
> > error: line 44: Version required: Requires: libart_lgpl >=
> > - Hide quoted text -
> > hsh-rebuild: pkg.tar: failed to fetch build dependencies.
> > 
> > На самом деле конструкция вида:
> > Requires: libart_lgpl >= %{get_version libart_lgpl}
> > на сборку влиять не должна...
> > но на новых gear + hasher оно так себя ведёт...
> 
> Макрос %{get_version PACKAGE} может быть правильно раскрыт только при
> наличии в сборочной среде установленного пакета PACKAGE; если такой
> пакет не установлен, в результате раскрытия макроса получается пустая
> строка, которая при подстановке в spec-файл даёт синтаксическую
> ошибку.  Из-за этого пакеты, упоминаемые в %{get_version ...} и других
> подобных макросах, необходимо также перечислять в BuildRequires(pre),
> чтобы к моменту разбора spec-файла средствами rpmbuild эти пакеты были
> уже установлены.


-- 
ldv

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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] новые gear + hasher
  2008-04-29 19:21           ` Andrey Rahmatullin
@ 2008-05-06 23:44             ` Dmitry V. Levin
  0 siblings, 0 replies; 14+ messages in thread
From: Dmitry V. Levin @ 2008-05-06 23:44 UTC (permalink / raw)
  To: ALT Devel discussion list

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

On Wed, Apr 30, 2008 at 01:21:57AM +0600, Andrey Rahmatullin wrote:
> On Tue, Apr 29, 2008 at 11:17:13PM +0400, Sergey Vlasov wrote:
> > Формальный критерий необходимости BuildRequires(pre) - невозможность
> > успешного выполнения указанной команды в сборочном чруте без
> > предварительной установки туда некоторых пакетов, не входящих в
> > минимальную сборочную систему.
> > 
> > Обычно встречающиеся случаи, когда требуется BuildRequires(pre):
> Когда это появилось и где описано?

BuildRequires(pre) обрабатываются rpmbuild'ом наравне с обычными
BuildRequires.  Дополнительная смысловая нагрузка была возложена на
BuildRequires(pre) для того, чтобы решить задачу сборки пакетов hasher'ом
из gear-репозитория.  Поддержка сборки пакетов hasher'ом из
gear-репозитория впервые появилась 2 года назад в hasher-1.0.30-alt1.

Самое полное описание, насколько мне известно, было в этом списке рассылки.


-- 
ldv

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

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2008-05-06 23:44 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-04-29 10:13 [devel] новые gear + hasher Evgeny Sinelnikov
2008-04-29 10:17 ` Alexey Gladkov
2008-04-29 10:22   ` Evgeny Sinelnikov
2008-04-29 10:31     ` Alexey Gladkov
2008-04-29 10:48       ` Evgeny Sinelnikov
2008-04-29 10:51         ` Evgeny Sinelnikov
2008-04-29 13:05 ` Dmitry V. Levin
2008-04-29 13:22   ` Alexey Gladkov
2008-04-29 13:25     ` Dmitry V. Levin
2008-04-29 15:05       ` Evgeny Sinelnikov
2008-04-29 19:17         ` Sergey Vlasov
2008-04-29 19:21           ` Andrey Rahmatullin
2008-05-06 23:44             ` Dmitry V. Levin
2008-05-06 23:39           ` Dmitry V. Levin

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/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 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

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


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