[sisyphus] Обнаружены новые враги народа! (was: Возвращаясь ...)

Dmitry V. Levin ldv на altlinux.org
Вт Дек 16 15:50:57 MSK 2003


On Tue, Dec 16, 2003 at 06:16:48PM +0600, Alexey Morozov wrote:
> On Mon, Dec 15, 2003 at 04:59:33PM +0300, Dmitry V. Levin wrote:
> > > Я трейсил все это дело, в решающий момент (то есть, в этой самой
> > > проверке, после которой Ваш патч уводит на else continue),
> > > $link_all_deplibs оказывается равным no, причем, даже в случае -static
> > > что, впрочем, не мешает libtool'у все равно зацепить $dependency_libs.
> > Т.е. мой патч не работает?
> Он работает. Но работает не столько потому что Вы патчите libtool.m4, а
> потому что Вы патчите ltmain.sh, не давая ему проскакать по списку
> $dependency_libs (строка 2150 и ниже). А это, кстати, можно сделать, и не
> трогая libtool.m4.

У вас есть патч, который делает это лучше?  Так давайте его сюда.

> P.S. Кстати, есть еще одна довольно-таки неприятная проблема: pkgconfig

Да, конечно.  Но
1. пользователей pkgconfig меньше;
2. нельзя объять необъятное;
3. до исправления pkgconfig очередь тоже дойдёт. :)

> Пример:
> 
> alex на pyro ~/tmp/libtool $ rpm -q libtool_1.5 libgtk+2
> libtool_1.5-1.5-alt10
> libgtk+2-2.2.4-alt4
> alex на pyro ~/tmp/libtool $ libtool --mode=link gcc -g -O -o test test.o
> -lgtk-x11-2.0
> gcc -g -O -o test test.o  -lgtk-x11-2.0
> alex на pyro ~/tmp/libtool $ _
> 
> Все, как видите, вполне корректно, и именно так, как хотелось бы
> (причем, даже если ЕСТЬ .la-файлы, у меня, на самом деле, штатно стоит
> самосборанная libgtk+2, c .la-файлами, отличие только в способе передачи
> аргументов от libtool к gcc).

А в чём, собственно, это отличие?

> Если пользоваться pkgconfig, то все становится
> гораздо грустнее:
> 
> alex на pyro ~/tmp/libtool $ libtool --mode=link gcc -g -O -o test test.o
> `pkg-config --libs gtk+-2.0`
> gcc -g -O -o test test.o -Wl,--export-dynamic  -lgtk-x11-2.0
> -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0
> -lpango-1.0 /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so -ldl
> /usr/lib/libglib-2.0.so
> alex на pyro ~/tmp/libtool $ _
> 
> Видите? Все мучения с выкидыванием "лишних" .la файлов оказались тщетны.
> pkgconfig все равно вычислил всех, на кого так или иначе ссылается
> gtk-x11-2.0 и подсунул соответствующие параметры libtool'у.

$ grep ^Libs: /usr/lib/pkgconfig/gtk+-2.0.pc
Libs: -lgtk-${target}-2.0

$ strace -e trace=open pkg-config --libs gtk+-2.0
[...]
open("/usr/lib/pkgconfig", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) =
3
open("/usr/lib/pkgconfig/gtk+-2.0.pc", O_RDONLY) = 4
open("/usr/lib/pkgconfig/gdk-x11-2.0.pc", O_RDONLY) = 5
open("/usr/lib/pkgconfig/gdk-pixbuf-2.0.pc", O_RDONLY) = 6
open("/usr/lib/pkgconfig/gobject-2.0.pc", O_RDONLY) = 7
open("/usr/lib/pkgconfig/glib-2.0.pc", O_RDONLY) = 8
open("/usr/lib/pkgconfig/gmodule-2.0.pc", O_RDONLY) = 9
open("/usr/lib/pkgconfig/pangoxft.pc", O_RDONLY) = 10
open("/usr/lib/pkgconfig/pango.pc", O_RDONLY) = 11
open("/usr/lib/pkgconfig/pangox.pc", O_RDONLY) = 12
open("/usr/lib/pkgconfig/atk.pc", O_RDONLY) = 13
-Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0

Похоже, достаточно "просто" отучить "pkg-config --libs" от рекурсии,
или, ещё лучше, добавить pkg-config'у новый параметр,
включающий/выключающий эту рекурсию.

P.S. Не пора ли нам с этой темой в devel@?


-- 
ldv
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: отсутствует
Url     : /pipermail/sisyphus/attachments/20031216/4caa8f65/attachment.bin


Подробная информация о списке рассылки Sisyphus