From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 16 Dec 2003 15:50:57 +0300 From: "Dmitry V. Levin" To: ALT Linux Sisyphus mailing list Subject: Re: [sisyphus] =?koi8-r?B?78LOwdLV1sXO2SDO?= =?koi8-r?B?z9fZxSDX0sHHySDOwdLPxMEhICh3YXM6IPfP2tfSwd3B0dPY?= ...) Message-ID: <20031216125057.GA5087@basalt.office.altlinux.org> Mail-Followup-To: ALT Linux Sisyphus mailing list References: <20031210160408.GB14643@pyro.hopawar.private.net> <20031210161658.GA6630@basalt.office.altlinux.org> <20031210212018.GA10586@localhost.localdomain> <20031211120211.GA2527@basalt.office.altlinux.org> <20031211135117.GJ14643@pyro.hopawar.private.net> <20031211143042.GA9387@basalt.office.altlinux.org> <20031211151951.GO14643@pyro.hopawar.private.net> <20031215135933.GB20189@basalt.office.altlinux.org> <20031216121648.GD4995@pyro.hopawar.private.net> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="PNTmBPCT7hxwcZjr" Content-Disposition: inline In-Reply-To: <20031216121648.GD4995@pyro.hopawar.private.net> X-fingerprint: 9658 398D 181B 1200 8FC5 26B8 F6F8 846B C1E2 3429 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: Tue, 16 Dec 2003 12:50:57 -0000 Archived-At: List-Archive: --PNTmBPCT7hxwcZjr Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit 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 --PNTmBPCT7hxwcZjr Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3 (GNU/Linux) iD8DBQE/3v+x9viEa8HiNCkRAvKsAJ9SRxYmImaGUNg0zgGUe/5pDN0GpACdG4No XGzRIKw3GWEq8eszn/EMtac= =vAxe -----END PGP SIGNATURE----- --PNTmBPCT7hxwcZjr--