Subject: Re: hidden dependencies, Act II
To: Johnny C. Lam <lamj@stat.cmu.edu>
From: Todd Vierling <tv@wasabisystems.com>
List: tech-pkg
Date: 06/13/2001 04:55:38
On Wed, 13 Jun 2001, Johnny C. Lam wrote:

: There was a suggestion by Todd Vierling <tv@wasabisystems.com> that we
: try to hack the AC_CHECK_LIB macro in autoconf as an alternative way
: to deal with hidden dependencies.  I've something working that I've
: placed at:

Applause.  I don't have time to look at it at this very moment, but I'll
trust your work on this, since you've been dealing heavily with the
dependency goop recently.  I do promise to look at this soon when my current
overfull plate has shrunk.

Though having autoconf and automake as build time dependencies are a tad
annoying, I believe the ends justify the means here.  Like libtool, autoconf
is a common build tool which can be tailored to help isolate the pkgsrc
build environment.

: (1) Many packages patch only the configure script, or only the
:     Makefile.in file.  These changes get lost when pkgautoreconf (or
:     autoconf) is invoked unless the changes are propagated to the
:     configure.in and Makefile.am files.

...Which means that patches should only patch the configure.in or
Makefile.am files instead, because the generated files will be regen'd
automagically.

: (2) Interactions with automake: if automake is installed, then it's
:     invoked from pkgautoreconf, otherwise pkgautoreconf/autoconf just
:     ignores the fact that automake isn't there and moves on.  I can't
:     see any problems right away, but I've a feeling this behaviour
:     might cause some problems down the road.

This can cause problems where Makefile.am's have to be patched, *but* so
long as a build dependency is marked for automake, all should be fine in
each respective pkg.

: (3) Packages that depend on automake seem to include an explicit
:     dependency on autoconf as well, instead of relying on automake to
:     include the dependency automatically.  All those explicit
:     dependencies on autoconf need to be removed.

Just a matter of cleanliness.

: (4) You need to trawl through the autoconf input files carefully to
:     find out which libraries may need to be found.  Again, package
:     maintainers need to have some more knowledge about how autoconf
:     works.

Actually, the typical situation *should* be that nothing external is used,
meaning only -lc and -lgcc are automatic.  The places where this can trip up
builds are commonly-used extra libs like -lz and -lX11 ... but a careful
watch of the "configure" phase when putting together a pkg should make that
a no-brainer (and point out these often forgotten dependencies which are
only in the base system on some OS's, actually an added benefit).  This is
all Packages.txt documentation fodder.

-- 
-- Todd Vierling <tv@wasabisystems.com>  *  Wasabi NetBSD:  Run with it.
-- NetBSD 1.5 now available on CD-ROM  --  http://www.wasabisystems.com/