Date: Mon, 21 Jul 2014 00:18:09 +0200 From: Baptiste Daroussin <bapt@FreeBSD.org> To: marino@freebsd.org Cc: svn-ports-head@freebsd.org, kwm@FreeBSD.org, Tijl Coosemans <tijl@FreeBSD.org>, svn-ports-all@freebsd.org, ports-committers@freebsd.org Subject: Re: svn commit: r362304 - head/x11-toolkits/pango Message-ID: <20140720221809.GA51456@ivaldir.etoilebsd.net> In-Reply-To: <53CC3EB8.6070802@marino.st> References: <201407200815.s6K8FG8b003096@svn.freebsd.org> <20140720132259.156d687e@kalimero.tijl.coosemans.org> <53CBA770.2010409@marino.st> <20140720113124.GD26778@ivaldir.etoilebsd.net> <20140720165256.1f4d5d07@kalimero.tijl.coosemans.org> <53CBF2D7.4070005@marino.st> <20140720220612.GH26778@ivaldir.etoilebsd.net> <53CC3EB8.6070802@marino.st>
next in thread | previous in thread | raw e-mail | index | archive | help
--IS0zKkzwUGydFO0o Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Jul 21, 2014 at 12:12:08AM +0200, John Marino wrote: > On 7/21/2014 00:06, Baptiste Daroussin wrote: > > On Sun, Jul 20, 2014 at 06:48:23PM +0200, John Marino wrote: > >> > >> > >> On 7/20/2014 16:52, Tijl Coosemans wrote: > >>> On Sun, 20 Jul 2014 13:31:24 +0200 Baptiste Daroussin wrote: > >>>> On Sun, Jul 20, 2014 at 01:26:40PM +0200, John Marino wrote: > >>>>> On 7/20/2014 13:22, Tijl Coosemans wrote: > >>>>>> On Sun, 20 Jul 2014 08:15:16 +0000 (UTC) John Marino wrote: > >>>>>>> Author: marino > >>>>>>> Date: Sun Jul 20 08:15:16 2014 > >>>>>>> New Revision: 362304 > >>>>>>> URL: http://svnweb.freebsd.org/changeset/ports/362304 > >>>>>>> QAT: https://qat.redports.org/buildarchive/r362304/ > >>>>>>> > >>>>>>> Log: > >>>>>>> x11-toolkits/pango: require explicit linking > >>>>>>> =20 > >>>>>>> This new configure argument will list all required libraries in= the > >>>>>>> generated pkgconf files. Before any library indirectly pulled = in, such > >>>>>>> as libm, was not listed. > >>>>>>> =20 > >>>>>>> This fixes numerous regression in dports and it's more correct = anyway. > >>>>>> > >>>>>> No, this is wrong. Each port should link to the libraries it need= s on > >>>>>> its own. No port should rely on other ports to pull in libraries = for > >>>>>> them. > >>>>> > >>>>> Then I guess we really don't need pkgconfig .pc files at all then? > >>>>> (This is the point of .pc files, it tells how to link. libm is dir= ectly > >>>>> used by pango) > >>>>> > >>>>> so no, it is not wrong. The generated pc file was wrong, now it's = not. > >>>>> This is why the configuration argument exists. > >>> > >>> A .pc file normally has 1 library in the Libs field (the library the = =2Epc > >>> file is created for) and 0 items in the Requires field. Dependencies= go > >>> in the Libs.private or Requires.private fields. The only reason to a= dd > >>> dependencies to Libs or Requires is if the headers of the library exp= ose > >>> the API of those dependencies (e.g. the library headers define macros= or > >>> inline functions that expand to calls to functions in a dependency (s= uch > >>> as Gtk macros that expand to Glib function calls)). > >>> > >>> The pango headers don't even include math.h or complex.h so they cann= ot > >>> expose its API. The generated .pc file was correct, now it is wrong. > >>> > >>> The reason the configure argument exists is probably because this is = an > >>> old .pc file from before the .private fields existed. > >> > >> Again, linking libpango without -libm is an error when explicit linking > >> is required (as has been the default on binutils for the last 3 > >> versions). The previous pc did not consider -lm, so it's wrong. > >> > >> The proof is in the pudding. When enabling the explicit linking > >> configure option, it fixed all the explict linking errors seen by ports > >> depending on pango. > >> > >> The is not the only port that sets the explicit-depends configure opti= on > >> either. > >> > >> What is the concern here? Linkers that don't require explicitly > >> specified libraries still link with those libraries through recursive > >> searching. The end result is the same, so I'm not understanding the > >> motivation for this discussion, especially since gnome@ (the maintaine= r) > >> approved the change. > >> > >> John > >> > > Checking on some linux they seems to not have the problem with -lm are = you sure > > that there is no problem with binutils on dragonfly? because checking a= t pango > > headers I cannot see why it would leaking things from libm. > >=20 >=20 > Don't bother with headers. >=20 > > readelf -d /usr/local/lib/libpango-1.0.so >=20 > libm is listed as a required shared library, plain as day. > for non-explicit linking the linker will pick all those up. For > explicit linking, they have to be passed to the linker. Anything linking to libpango will not have to link with libm because of tha= t, that just mean that libpango itself needs to load the libm.so when being lo= aded final binary linking to libpango only needs explicit link to libm only if p= ango headers make the binary to use directly libm symbols which is not the case = here. regards, Bapt --IS0zKkzwUGydFO0o Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEYEARECAAYFAlPMQCEACgkQ8kTtMUmk6EzGmACgqnG0L0gzKZymCJBL8Co9ujEv 4cgAnR0HjpaSneLYjmDHFU32k4v5tRlh =MzZJ -----END PGP SIGNATURE----- --IS0zKkzwUGydFO0o--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140720221809.GA51456>