From owner-svn-ports-all@FreeBSD.ORG Mon Jul 21 10:56:03 2014 Return-Path: Delivered-To: svn-ports-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 35BA98A5; Mon, 21 Jul 2014 10:56:03 +0000 (UTC) Received: from shepard.synsport.net (mail.synsport.com [208.69.230.148]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 34B4624BD; Mon, 21 Jul 2014 10:56:02 +0000 (UTC) Received: from [192.168.0.22] (unknown [130.255.19.191]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by shepard.synsport.net (Postfix) with ESMTP id A5978438BD; Mon, 21 Jul 2014 05:55:40 -0500 (CDT) Message-ID: <53CCF19B.3060906@marino.st> Date: Mon, 21 Jul 2014 12:55:23 +0200 From: John Marino Reply-To: marino@freebsd.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 MIME-Version: 1.0 To: Tijl Coosemans Subject: Re: svn commit: r362304 - head/x11-toolkits/pango 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> <20140721013342.6c17ecdc@kalimero.tijl.coosemans.org> <53CCABFA.7090202@marino.st> <20140721121214.1d1f3ef5@kalimero.tijl.coosemans.org> In-Reply-To: <20140721121214.1d1f3ef5@kalimero.tijl.coosemans.org> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: svn-ports-head@freebsd.org, kwm@FreeBSD.org, Baptiste Daroussin , svn-ports-all@freebsd.org, marino@freebsd.org, ports-committers@freebsd.org X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jul 2014 10:56:03 -0000 On 7/21/2014 12:12, Tijl Coosemans wrote: > On Mon, 21 Jul 2014 07:58:18 +0200 John Marino wrote: >> On 7/21/2014 01:33, Tijl Coosemans wrote: >>>> The is not the only port that sets the explicit-depends configure option >>>> either. >>> >>> Yes I know. It must all be removed. The worst case is the gtk20 port >>> which forces everything that uses gtk20 to link with many Xorg libraries >>> for no reason. >> >> For no reason? >> Pango contains symbols from each of those libraries. If you link pango >> without linking the xorg library, you're going to get a reference error >> if the linker requires explicit linking. > > Pango uses Xorg symbols, so pango must link with Xorg libraries. > Executable X uses Pango symbols, so X must link with Pango libraries. > Executable X does not use Xorg symbols and does not use libm symbols > so it should not be forced to link with Xorg libraries and libm just > because it links with pango libraries. > >> For a linker not requiring explicit linking, it just searches each >> shared library listed in the dynamic symbols section until it finds the >> symbol it's looking for. > > Yes, if executable X did use libm symbols then implicit linking would > find libm via the pango libraries. Explicit linking requires that you > add -lm to the linker command line. > > FreeBSD 10 and up use explicit linking. > >>>> What is the concern here? >>> >>> The concern is overlinking. You are forcing everything that uses pango >>> to link with libm just to fix a few ports that require libm but forget >>> to link with it explicitly. You are also forcing everything that uses >>> pangocairo to link with libfreetype and libfontconfig now. >> >> It's not the port that requires libm, > > Then why are you linking it with libm? > >> it's libpango that references >> libm. > > Correct and therefore libpango must link with libm. It doesn't mean > that everything that links with libpango must also link with libm. Everything that uses a pango function that has a libm symbol must also link with libm. We don't have the granularity down to the function level. We know at least one function needs to link with libm (probably more but we can assume at least one) > root@draco:/usr/local/lib # readelf -a libpango-1.0.so | grep ceil > 00000024ec78 000800000007 R_X86_64_JUMP_SLO 0000000000000000 ceil + 0 > 8: 0000000000000000 305 FUNC GLOBAL DEFAULT UND ceil@FBSD_1.0 (3) And there's one now^ > >> As such, it's pango's responsibility to link libm through the pc >> file. > > No, the .pc file is what other ports use to figure out how to link > with libpango, through the output of "pkgconf --libs pango". You > have now added -lm to that output forcing all ports that use libpango > to link with libm even if they don't contain any libm symbols. As we don't have granularity down to function level, the pc files has to assume the port might reference a function that references a libm symbol. It's certainly wrong to assume it won't. If the port contained a libm symbol then it would need to have -lm LDFLAG on it's own and not rely on it to come from an unrelated library (in this case pango). The -lm flag is for pango, not the individual port. John