Subject: Re: hidden dependencies, Act II
To: Bill Sommerfeld <>
From: Todd Vierling <>
List: tech-pkg
Date: 06/15/2001 11:29:21
On Fri, 15 Jun 2001, Bill Sommerfeld wrote:

: I haven't followed this thread in full detail, but it concerned me
: that getting this right requires observing the output of configure.
: This strikes me as error-prone..

The current state of affirs is the error-prone situation, because people
*aren't* observing the output of configure.

The point of frobbing autoconf is so that configure won't pick up any
libraries unless explicitly asked for.  This doesn't necessarily require
watching configure; it rather requires that soneone explicitly enable
libraries that allow certain features of a program to work (...and add the
necessary dependencies which go with it).

:  - at some point in the packaging phase, run "ldd" on the generated
: executables to find the set of shared libraries "imported" by the package.
:  - subtract from this the set of shared libraries exported by the
: transitive closure of the package's dependancies.
:  - if the result is non-empty, suggest dependancies to add and/or
: error out..

This is sort-of what RPM does, but is a bit much (and not the target of the
autoconf changes).  The idea is to make pkgsrc results exactly reproducible,
regardless of what libraries are installed on the build system.

For instance, if the pkg developer has only enough stuff to install package
foo-1.0, he may not notice that it will use gdbm if it's installed.  So a
user, who has gdbm installed, goes to build foo-1.0, and it uses gdbm -- the
pkg build now bombs because the ldd tests fail.  So the user can either add
a gdbm dependency (which may not be the intent!), or hack up configure to
ignore gdbm.

BTW, "foo" in the above can be replaced with "php3".  This was a real-life
example that has already been demonstrated.  8-)

-- Todd Vierling <>  *  Wasabi NetBSD:  Run with it.
-- NetBSD 1.5 now available on CD-ROM  --