ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <at@altlinux.ru>
To: devel@lists.altlinux.org
Subject: Re: [devel] pkgconfiglib.req
Date: Tue, 28 Aug 2007 23:55:29 +0400
Message-ID: <20070828195529.GH24207@solemn.turbinal> (raw)
In-Reply-To: <20070828171100.GE24207@solemn.turbinal>

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

On Tue, Aug 28, 2007 at 09:11:00PM +0400, Alexey M. Tourbin wrote:
> Иногда бывает так, что с новым devel-пакетом перестает что-то собираться
> из-за добавившихся библиотек для линковки в *.pc файле.  Здесь есть два
> подхода.  Первый подход -- это, если добавленные библиотеки на самом
> деле излишни, то мы получаем ценную информацию, чтобы дать кому-то
> подзатыльник (точнее, чтобы убрать ненужные библиотеки из Libs в новом
> пакете).  С другой стороны, раздача подзатыльников методом поломки
> репозитария не кажется мне вполне технологичным развлечением.
> 
> Второй подход -- это, если добавленные библиотеки на самом деле не
> лишние, добить новых *-devel зависимостей на соответствующие пакеты.
> Кроме всего прочего, этот подход относительно легко перепоручить
> автоматике.
> 
> Поэтому предлагаю замыкать зависимости между *-devel пакетами по
> содержимому поля Libs в *.pc файлах.

Взялся проанализировать содержимое noarch пакетов.

$ pwd
/ALT/Sisyphus/files/noarch/RPMS
$ rpmfile . |grep $'\\.pc\t' 
gnome-doc-utils-0.10.3-alt2.noarch.rpm  /usr/share/pkgconfig/gnome-doc-utils.pc 100644  ASCII text
gnome-doc-utils-0.10.3-alt2.noarch.rpm  /usr/share/pkgconfig/xml2po.pc  100644  ASCII text
gnome-icon-theme-2.18.0-alt1.noarch.rpm /usr/share/pkgconfig/gnome-icon-theme.pc        100644  ASCII English text
gnome-mime-data-2.18.0-alt1.noarch.rpm  /usr/share/pkgconfig/gnome-mime-data-2.0.pc     100644  ASCII text
gtk-doc-1.8-alt1.noarch.rpm     /usr/share/pkgconfig/gtk-doc.pc 100644  ASCII text
i386-mingw32msvc-SDL-devel-1.2.11-alt1.noarch.rpm       /usr/i386-mingw32msvc/lib/pkgconfig/sdl.pc      100644  ASCII text
i386-mingw32msvc-libogg-devel-1.1.2-alt3.noarch.rpm     /usr/i386-mingw32msvc/lib/pkgconfig/ogg.pc      100644  ASCII text
i386-mingw32msvc-libpng-devel-1.2.8-alt2.noarch.rpm     /usr/lib/pkgconfig/i386-mingw32msvc-libpng.pc   120777  symbolic link to `i386-mingw32msvc-libpng12.pc'
i386-mingw32msvc-libpng-devel-1.2.8-alt2.noarch.rpm     /usr/lib/pkgconfig/i386-mingw32msvc-libpng12.pc 100644  ASCII text
i386-mingw32msvc-libssl-devel-0.9.8a-alt1.noarch.rpm    /usr/i386-mingw32msvc/lib/pkgconfig/libcrypto.pc        100644  ASCII text
i386-mingw32msvc-libssl-devel-0.9.8a-alt1.noarch.rpm    /usr/i386-mingw32msvc/lib/pkgconfig/libssl.pc   100644  ASCII text
i386-mingw32msvc-libssl-devel-0.9.8a-alt1.noarch.rpm    /usr/i386-mingw32msvc/lib/pkgconfig/openssl.pc  100644  ASCII text
i386-mingw32msvc-libvorbis-devel-1.1.0-alt2.noarch.rpm  /usr/i386-mingw32msvc/lib/pkgconfig/vorbis.pc   100644  ASCII English text
i386-mingw32msvc-libvorbis-devel-1.1.0-alt2.noarch.rpm  /usr/i386-mingw32msvc/lib/pkgconfig/vorbisenc.pc        100644  ASCII text
i386-mingw32msvc-libvorbis-devel-1.1.0-alt2.noarch.rpm  /usr/i386-mingw32msvc/lib/pkgconfig/vorbisfile.pc       100644  ASCII text
i386-mingw32msvc-libxml2-devel-2.6.20-alt1.noarch.rpm   /usr/i386-mingw32msvc/lib/pkgconfig/libxml-2.0.pc       100644  ASCII text
i386-mingw32msvc-libxslt-devel-1.1.14-alt1.noarch.rpm   /usr/i386-mingw32msvc/lib/pkgconfig/libexslt.pc 100644  ASCII text
i386-mingw32msvc-libxslt-devel-1.1.14-alt1.noarch.rpm   /usr/i386-mingw32msvc/lib/pkgconfig/libxslt.pc  100644  ASCII text
icon-naming-utils-0.8.2-alt1.noarch.rpm /usr/share/pkgconfig/icon-naming-utils.pc       100644  ASCII English text
iso-codes-devel-0.58-alt1.noarch.rpm    /usr/share/pkgconfig/iso-codes.pc       100644  ASCII text
libice-sharp-devel-3.2.0-alt1.noarch.rpm        /usr/lib/pkgconfig/glacier2cs.pc        100644  ASCII text
libice-sharp-devel-3.2.0-alt1.noarch.rpm        /usr/lib/pkgconfig/iceboxcs.pc  100644  ASCII text
libice-sharp-devel-3.2.0-alt1.noarch.rpm        /usr/lib/pkgconfig/icecs.pc     100644  ASCII text
libice-sharp-devel-3.2.0-alt1.noarch.rpm        /usr/lib/pkgconfig/icegridcs.pc 100644  ASCII text
libice-sharp-devel-3.2.0-alt1.noarch.rpm        /usr/lib/pkgconfig/icepatch2cs.pc       100644  ASCII text
libice-sharp-devel-3.2.0-alt1.noarch.rpm        /usr/lib/pkgconfig/icestormcs.pc        100644  ASCII text
xorg-x11-bitmaps-1.0.1-alt2.1.noarch.rpm        /usr/share/pkgconfig/xbitmaps.pc        100644  ASCII text
$

Хочу заметить, что в pkgconfig.req.files отбираются только файлы
в %_libdir/pkgconfig и /usr/share/pkgconfig, так что
/usr/i386-mingw32msvc/**/*.pc не создаст ложных зависимостей,
эти файлы просто не будут обрабатываться.

ОБРАТИМ ВНИМАНИЕ НА ИСПОЛЬЗОВАНИЕ /usr/lib/pkgconfig/ в noarch пакетах.
БУДЕТ ЛИ ЭТО РАБОТАТЬ НА x86_64?

[at@hint1 ~]$ hsh --init
[at@hint1 ~]$ hsh-install libice-sharp-devel
...
[at@hint1 ~]$ hsh-shell --rooter
[root@hint1 .in]# grep -i ^name /usr/lib/pkgconfig/icestormcs.pc
name = icestormcs
Name: ${name}
[root@hint1 .in]# pkg-config --print-errors --modversion icestormcs
Package icestormcs was not found in the pkg-config search path.
Perhaps you should add the directory containing `icestormcs.pc'
to the PKG_CONFIG_PATH environment variable
No package 'icestormcs' found
[root@hint1 .in]# mv /usr/lib/pkgconfig/*.pc /usr/lib64/pkgconfig/
[root@hint1 .in]# pkg-config --print-errors --modversion icestormcs
3.2.0
[root@hint1 .in]# 

ВОТ ТАК ТАК!  В noarch ПАКЕТАХ НЕ ДОЛЖНО БЫТЬ /usr/lib/pkgconfig!
Прошу maintainer'а pkg-config прокомментировать эту ситуацию.

Теперь делаю такой финт ушами чтобы посмотреть что лежит внутри
этих *.pc файлов:

$ rpmfile . |grep $'\\.pc\t' |cut -f1 |sort -u |xargs -n1 -I RPM rpmpeek RPM find ./usr -name '*.pc' -exec egrep -iH '^(req|libs)' {} \;
./usr/share/pkgconfig/xml2po.pc:Requires: libxml-2.0
./usr/share/pkgconfig/gnome-icon-theme.pc:Requires:
./usr/share/pkgconfig/gnome-icon-theme.pc:Libs:
./usr/share/pkgconfig/gnome-mime-data-2.0.pc:Requires:
./usr/share/pkgconfig/gnome-mime-data-2.0.pc:Libs:
./usr/i386-mingw32msvc/lib/pkgconfig/sdl.pc:Requires:
./usr/i386-mingw32msvc/lib/pkgconfig/sdl.pc:Libs: -L${libdir}  -lmingw32 -lSDLmain -lSDL  -mwindows
./usr/i386-mingw32msvc/lib/pkgconfig/ogg.pc:Requires:
./usr/i386-mingw32msvc/lib/pkgconfig/ogg.pc:Libs: -L${libdir} -logg
./usr/lib/pkgconfig/i386-mingw32msvc-libpng12.pc:Libs: -lpng12
./usr/lib/pkgconfig/i386-mingw32msvc-libpng.pc:Libs: -lpng12
./usr/i386-mingw32msvc/lib/pkgconfig/openssl.pc:Requires:
./usr/i386-mingw32msvc/lib/pkgconfig/openssl.pc:Libs: -L${libdir} -lssl -lcrypto -lwsock32 -lgdi32 -lz
./usr/i386-mingw32msvc/lib/pkgconfig/libssl.pc:Requires:
./usr/i386-mingw32msvc/lib/pkgconfig/libssl.pc:Libs: -L${libdir} -lssl -lcrypto -lwsock32 -lgdi32 -lz
./usr/i386-mingw32msvc/lib/pkgconfig/libcrypto.pc:Requires:
./usr/i386-mingw32msvc/lib/pkgconfig/libcrypto.pc:Libs: -L${libdir} -lcrypto -lwsock32 -lgdi32 -lz
./usr/i386-mingw32msvc/lib/pkgconfig/vorbisfile.pc:Requires: vorbis ogg
./usr/i386-mingw32msvc/lib/pkgconfig/vorbisfile.pc:Libs: -L${libdir} -lvorbisfile
./usr/i386-mingw32msvc/lib/pkgconfig/vorbisenc.pc:Requires: vorbis
./usr/i386-mingw32msvc/lib/pkgconfig/vorbisenc.pc:Libs: -L${libdir} -lvorbisenc
./usr/i386-mingw32msvc/lib/pkgconfig/vorbis.pc:Requires: ogg
./usr/i386-mingw32msvc/lib/pkgconfig/vorbis.pc:Libs: -L${libdir} -lvorbis
./usr/i386-mingw32msvc/lib/pkgconfig/libxml-2.0.pc:Requires:
./usr/i386-mingw32msvc/lib/pkgconfig/libxml-2.0.pc:Libs: -L${libdir} -lxml2  -lz  -liconv
./usr/i386-mingw32msvc/lib/pkgconfig/libxslt.pc:Requires: libxml-2.0
./usr/i386-mingw32msvc/lib/pkgconfig/libxslt.pc:Libs: -L${libdir} -lxslt  -L/usr/i386-mingw32msvc/lib -lxml2 -lz -liconv
./usr/i386-mingw32msvc/lib/pkgconfig/libexslt.pc:Requires: libxml-2.0
./usr/i386-mingw32msvc/lib/pkgconfig/libexslt.pc:Libs: -L${libdir} -lexslt -lxslt  -L/usr/i386-mingw32msvc/lib -lxml2 -lz -liconv
./usr/share/pkgconfig/icon-naming-utils.pc:Requires:
./usr/share/pkgconfig/icon-naming-utils.pc:Libs:
./usr/lib/pkgconfig/icestormcs.pc:Libs: -r:${mono_root}/lib/mono/gac/${name}/${version}.0__1f998c50fec78381/${name}.dll
./usr/lib/pkgconfig/icestormcs.pc:Requires: icecs = ${version}
./usr/lib/pkgconfig/icepatch2cs.pc:Libs: -r:${mono_root}/lib/mono/gac/${name}/${version}.0__1f998c50fec78381/${name}.dll
./usr/lib/pkgconfig/icepatch2cs.pc:Requires: icecs = ${version}
./usr/lib/pkgconfig/icegridcs.pc:Libs: -r:${mono_root}/lib/mono/gac/${name}/${version}.0__1f998c50fec78381/${name}.dll
./usr/lib/pkgconfig/icegridcs.pc:Requires: icecs = ${version}
./usr/lib/pkgconfig/icecs.pc:Libs: -r:${mono_root}/lib/mono/gac/${name}/${version}.0__1f998c50fec78381/${name}.dll
./usr/lib/pkgconfig/iceboxcs.pc:Libs: -r:${mono_root}/lib/mono/gac/${name}/${version}.0__1f998c50fec78381/${name}.dll
./usr/lib/pkgconfig/iceboxcs.pc:Requires: icecs = ${version}
./usr/lib/pkgconfig/glacier2cs.pc:Libs: -r:${mono_root}/lib/mono/gac/${name}/${version}.0__1f998c50fec78381/${name}.dll
./usr/lib/pkgconfig/glacier2cs.pc:Requires: icecs = ${version}
./usr/share/pkgconfig/xbitmaps.pc:Libs:
$

К счастью, библиотек нигде нет (кроме i386-mingw32msvc и mono).
Однако интересно, что xml2po.pc (gnome-doc-utils) требует libxml-2.0.
Это как раз та проблема семантики pkg-config зависимостей, которую
я недвано упоминал.  По видимому, смысл в том, что gnome-doc-utils
требует пакет xml-utils (который собирается из libxml2).  Но, таким
образом, ЗАВИСИМОСТИ pkg-config НЕ ЯВЛЯЕТСЯ чисто devel ЗАВИСИМОСТЯМИ
для сборки других пакетов.  То есть это плохая, допотопная система
зависимостей, в которой BuildRequires, Requires: lib%name.so.0 и
Requires: lib%name-devel свалено всё в одну кучу.  Единственный
приемлемый способ отражать эту систему зависимостей в rpm, это
переместить все *.pc файлы в *-devel пакеты.  Но и в *-devel
пакетах в Libs находятся левые библиотеки, которые использовались
только для сборки самого этого пакта.  Такие библиотеки нужно переносить
в Libs.private.

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

  reply	other threads:[~2007-08-28 19:55 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-28 17:11 Alexey M. Tourbin
2007-08-28 19:55 ` Alexey Tourbin [this message]
2007-08-28 20:12   ` [devel] /usr/lib/pkgconfig vs noarch Dmitry V. Levin
2007-08-28 20:47     ` Alexey Tourbin
2007-08-28 21:07       ` Alexey Tourbin
2007-08-28 21:32         ` [devel] sisyphus_check noarch Alexey Tourbin
2007-09-01 13:12         ` [devel] /usr/lib/pkgconfig vs noarch Денис Смирнов
2007-08-29 15:56       ` Dmitry V. Levin
2007-08-29 17:05         ` [devel] giter-factory Alexey Tourbin
2007-08-29 19:29           ` Dmitry V. Levin
2007-08-29 19:37             ` Alexey Tourbin
2007-08-29 21:02               ` Alexey Tourbin
2007-08-29 21:11                 ` Dmitry V. Levin
2007-08-29 21:47                   ` Alexey Tourbin
2007-08-29 21:55                     ` Dmitry V. Levin
2007-08-29 22:26                       ` Alexey Tourbin
2007-08-30  8:40                         ` Kirill A. Shutemov
2007-09-01 23:47                       ` Alexey Tourbin
2007-08-30  8:53                 ` Kirill A. Shutemov
2007-09-16 21:13           ` Michael Shigorin
2007-09-16 21:36             ` Alexey Tourbin
2007-09-16 21:32               ` Aleksey Avdeev
2007-09-16 22:15                 ` [devel] giter-factory idea Alexey Tourbin
2007-09-16 23:01                   ` Aleksey Avdeev
2007-09-17  5:42                     ` Alexey Tourbin
2007-09-17 10:41                       ` Aleksey Avdeev
2007-09-18  9:32               ` [devel] giter-factory Michael Shigorin
2007-08-28 20:29   ` [devel] pkgconfiglib.req Alexey I. Froloff
2007-08-28 20:46   ` Alexey Rusakov
2007-08-29 13:51 ` Igor Zubkov
2007-09-16 21:17 ` Michael Shigorin
2007-09-16 22:50   ` Alexey Rusakov
2007-09-17  5:36     ` Alexey Tourbin
2007-09-18 10:09       ` [devel] UQ: git-clone git.alt: unable to chdir or not a git archive Michael Shigorin
2007-09-18 10:09         ` Pavlov Konstantin
2007-09-18 10:15           ` [devel] отбой, спасибо, сам дурак Michael Shigorin
2007-09-18 11:44       ` [devel] pkgconfiglib.req Michael Shigorin
2007-09-18 11:49         ` Alexey Rusakov
2007-09-19 22:22         ` [devel] *.pc -devel Alexey Tourbin

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=20070828195529.GH24207@solemn.turbinal \
    --to=at@altlinux.ru \
    --cc=devel@lists.altlinux.org \
    /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 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