Why does security/amavisd-new depend on db3?

Craig Boston craig at yekse.gank.org
Tue Nov 15 06:37:25 PST 2005


On Mon, Nov 14, 2005 at 10:59:44PM -0800, Michael C. Shultz wrote:
> The WITH_BDB_VER=42 only needs to be applied to databases/p5-BerkeleyDB,

In theory, yes, however for dependencies to be registered properly it is
needed for the top level port as well.

Look at line 5012 of bsd.port.mk, where it populates the +CONTENTS file.
PKG_ARGS is defined on line 2052 and issues a "make package-depends"
command, which recursively gown down the ports tree building a list of
dependencies.  However, as previously demonstrated, that list is based on
the _current_ environment of the package that is being installed at that
moment.

> when "portmanager security/amavisd-new" is run ports will build in this order:
> 
> ports/databases/db42			before
> databases/p5-BerkeleyDB		before
> security/amavisd-new 

The behavior can easily be reproduced with manual builds by doing them
in that same order:

cd /usr/ports/databases/p5-BerkeleyDB; make install WITH_BDB_VER=42
cd /usr/ports/security/amavisd-new; make install

The second command will install amavisd-new with an erroneous pkgdep on
bdb3.

Doing with second install with WITH_BDB_VER=42 set will cause it to be
correct.  The first install is unnecessary in this case, but portmanager
would install it separately like that.

ISTM the only way to work around it would be for portmanager to keep
track of which ports were built with what flags, and add those same
flags to any port that depends on them...

Craig


More information about the freebsd-ports mailing list