Why does security/amavisd-new depend on db3?

Michael C. Shultz ringworm01 at gmail.com
Tue Nov 15 13:10:48 PST 2005


On Tuesday 15 November 2005 13:00, Scot Hetzel wrote:
> On 11/15/05, Michael C. Shultz <ringworm01 at gmail.com> wrote:
> > On Tuesday 15 November 2005 11:45, Scot Hetzel wrote:
> > > On 11/15/05, Jiawei Ye <leafy7382 at gmail.com> wrote:
> > > > On 11/15/05, Michael C. Shultz <ringworm01 at gmail.com> wrote:
> > > > > The WITH_BDB_VER=42 only needs to be applied to
> > > > > databases/p5-BerkeleyDB,
> > > > >
> > > > > when "portmanager security/amavisd-new" is run ports will build in
> > > > > this order:
> > > > >
> > > > > ports/databases/db42                    before
> > > > > databases/p5-BerkeleyDB         before
> > > > > security/amavisd-new
> > > > >
> > > > > I'm sure there is a simple explanaition for the problem if Jiawei
> > > > > would only post something demonstrating how things are going wrong
> > > > > for him instead of merely describing what he thinks is happening.
> > > > >
> > > > > -Mike
> > > >
> > > > I am trying to, Mike. Now that xorg-clients has a RUN_DEPENDS on
> > > > xterm, which lists xorg-clients as CONFLICT adds a lot to the
> > > > frustration :(
> > >
> > > The problem is rather complex, as there are two problems:
> > >
> > > 1. When using portupgrade, or portmanager they don't check if a
> > > depending port require having a variable set that is defined in these
> > > tools configuration files before upgrading an existing port.
> >
> >        Absolutly wrong, definitely for portmanager and likely for
> >        portupgrade.  The real problem is identified further down in this
> >        thread.
>
> What I was refering to is say you have a Port A, that depends on Port
> B.  Now Port B can depend on either Port C or Port D depending on if a
> WITH_X_VER variable is set.
>
> Now when you do  portupgrade/portmanager for Port A, the WITH_X_VER
> variable is not set in the tools config file for Port A, but is set
> for Port B.  This is what causes the wrong dependancy to be listed in
> the +CONTENT file for Port A.
>
> > > The work arround for this is to add the variable to /etc/make.conf:
> > >
> > > .if ${.CURDIR} == /usr/ports/databases/p5-BerkleyDB
> > > WITH_BDB_VER?=42
> > > .endif
> >
> >        Not nessesary. here is a sample portmanager output
> >        with the following in pm-020.conf
> >
> >        databases/p5-BerkeleyDB|WITH_BDB_VER=42|
> >
> >        Notice specifically:
> >
> > make fetch WITH_BDB_VER=42
> > make WITH_BDB_VER=42
> >
> >        If make fetch/clean/install etc is run portmanager does
> >        apply WITH_BDB_VER=42, test for yourself before saying
> >        such things, please.
>
> What I was refering to was the port that depended on this port was
> listing it's dependancies wrong in the + CONTENTS file. The use of the
> /etc/make.conf entry was a way to get arround this limitation in the
> bsd.port.mk's calculation of the dependancies for the port.
>
> Scot
>
This would still be wrong:

.if ${.CURDIR} == /usr/ports/databases/p5-BerkleyDB
WITH_BDB_VER?=42
 .endi

It is equivalent to:

in pkgtools.conf:
  MAKE_ARGS = {
        'databases/p5-BerkeleyDB' => 'WITH_BDB_VER=42',

in pm-020.conf
databases/p5-BerkeleyDB|WITH_BDB_VER=42|

Maybe you mean to set it as a global
value ie. without the .if ${.CURDIR} == /usr/ports/databases/p5-BerkleyDB
wrapper?  If that were the case it would still have no effect on
security/amavisd-new where the incorrect dependency is being recorded,
see for yourself:

cd /usr/ports/security/amavisd-new
/usr/ports/security/amavisd-new>grep WITH Makefile

.if !defined(WITH_MILTER) || (!exists(/usr/lib/libmilter.a) 
&& !exists(${PREFIX}/lib/libmilter.a))
.if defined(WITH_MILTER) && !defined(AMAVIS_NOAMAVIS)
.if defined(WITH_MYSQL)
.if defined(WITH_PGSQL)
.if defined(WITH_LDAP)




More information about the freebsd-ports mailing list