devel/sope: make (stage-qa) now fails with DEVELOPER=yes complaining about iconv dependency

Matthew Seaman matthew at FreeBSD.org
Fri Jul 15 09:27:41 UTC 2016


On 07/15/16 09:37, Walter Schwarzenfeld wrote:
> It is a bug the statement is wrong.
> The error message disappiear  if you add to LIB_DEPENDS
> libiconv.so:converters/libiconv.
> 
> Btw.
> it says
> Error: /usr/local/GNUstep/Local/Library/Libraries/libNGStreams.so.4.9.57
> is linked to /usr/local/lib/libssl.so.38 from security/libressl but it
> is not declared as a dependency
> Warning: you need USES=ssl
> Error: /usr/local/GNUstep/Local/Library/Libraries/libNGStreams.so.4.9.57
> is linked to /usr/local/lib/libcrypto.so.37 from security/libressl but
> it is not declared as a dependency
> Warning: you need USES=ssl
> 
> 
> if I add ssl to USES
> it states
> you may not need USES+=ssl.
> 
> I am not happy with the "new" stage-qa messages.

I agree that this is annoying, and I wish there was some way to tell
stage-qa that the library dependencies are in fact OK.

The problem here is the heuristic used to determine whether there are
any missing library dependencies.  This simply uses readelf(1) to find
out what's required by the dynamic loader for all of the binaries
included in the port.  If it finds that an application 'foo' requires a
shared library libbar it will tell you 'you need USES+=bar'  Much of the
time this is correct, and a handy sanity check.

However, what seems to happen fairly often is that foo only has a direct
dependency on libbaz and libbaz is what links against libbar.  foo
doesn't know anything about functions and objects provided by libbar or
use any of them itself, except through the interface provided by libbaz,
so foo's dependency on libbar is entirely indirect.

In this situation I can't see why the port foo should list an explicit
dependency on libbar; the one it inherits through libbaz seems to me to
express the linkage between foo and libbar in an entirely satisfactory way.

You should only get the 'you may not need USES+=foo' message when you've
added the dependency in the ports Makefile, but none of the resulting
binaries link against libfoo.  I don't see how you are getting the
results you describe there.

	Cheers,

	Matthew


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20160715/8801a30e/attachment.sig>


More information about the freebsd-ports mailing list