[sisyphus] Обнаружены новые враги народа! (was: Возвращаясь ...)
Dmitry V. Levin
=?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Вт Дек 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
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20031216/4caa8f65/attachment-0009.bin>
Подробная информация о списке рассылки Sisyphus