Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Jun 2010 10:40:08 -0500
From:      Scot Hetzel <swhetzel@gmail.com>
To:        Helmut Schneider <jumper99@gmx.de>, Gabor Kovesdan <gabor@freebsd.org>
Cc:        freebsd-ports@freebsd.org
Subject:   Re: amavisd-new does not compile because of db42
Message-ID:  <AANLkTik07PhAe2uojwOxvHscG31XVTxra4hM9sZB-xTa@mail.gmail.com>
In-Reply-To: <xn0gv99ud2vdc01000@news.gmane.org>
References:  <xn0gv8b8n2ri61n000@news.gmane.org> <xn0gv8ssj2y6ijg001@news.gmane.org> <4C1166C6.600@FreeBSD.org> <xn0gv8t9u2yvk8n002@news.gmane.org> <4C11E9EB.6080101@FreeBSD.org> <xn0gv99ud2vdc01000@news.gmane.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jun 11, 2010 at 4:08 AM, Helmut Schneider <jumper99@gmx.de> wrote:
> Gabor Kovesdan wrote:
>
>> >
>> >=3D=3D=3D> =A0 =A0Running ldconfig
>> > /sbin/ldconfig -m /usr/local/lib
>> >=3D=3D=3D> =A0 =A0Registering installation for db42-4.2.52_5
>> >=3D=3D=3D> =A0 =A0Returning to build of amavisd-new-2.6.4_6,1
>> > Error: shared library "db-4.2.2" does not exist
>> > *** Error code 1
>> >
>> > Stop in /usr/ports/security/amavisd-new.
>> > *** Error code 1
>> >
>> >
>> It seems that it cannot find the library but amavisd-new uses the
>> USE_BDB know from bsd.databases.mk just like quite a bunch of other
>> ports, so the dependency definition is obviously correct. I don't
>> know what causes this error and I haven't got any more PRs from other
>> users. Soon, I'll bump the required version again because after the
>> last change I got some mails that say newer versions operate even
>> better with amavisd-new. I'll just talk to the developer to see,
>> which version would be the optimal one or we can just pull in the
>> latest bdb version. I'd say let's wait for that update and hopefully
>> that will also solve your problem.
>
> # make clean
> =3D=3D=3D> =A0Cleaning for amavisd-new-2.6.4_6,1
> # env make depends
> =3D=3D=3D> =A0 amavisd-new-2.6.4_6,1 depends on shared library: db-4.2.2 =
- found
> [...]
> # env make depends -DWITH_RAR
> =3D=3D=3D> =A0 amavisd-new-2.6.4_6,1 depends on shared library: db-4.2.2 =
- not
> found
> [...]
> #
>
> I then commented out "IA32_BINARY_PORT=3Dyes" from the WITH_RAR section
> in the Makefile and guess what?! :)
>
> # env make depends -DWITH_RAR
> =3D=3D=3D> =A0 amavisd-new-2.6.4_6,1 depends on shared library: db-4.2.2 =
- found
> [...]
> # portupgrade -N amavisd-new\*
> [Updating the pkgdb <format:bdb_btree> in /var/db/pkg ... - 224
> packages found (-0 +1) . done]
> [Gathering depends for security/amavisd-new
> ........................................................................
> ........................................................................
> ........................................................................
> ...... done]
> ---> =A0Installing 'amavisd-new-2.6.4_6,1' from a port
> (security/amavisd-new)
> ---> =A0Building '/usr/ports/security/amavisd-new' with make flags:
> -DWITH_BDB -DWITH_SNMP -DWITH_POF -DWITH_RAR -DWITH_UNRAR -DWITH_UNARJ
> -DWITH_NOMARCH -DWITH_UNZOO -DWITH_TNEF
> =3D=3D=3D> =A0Cleaning for amavisd-new-2.6.4_6,1
> cd /usr/ports/security/amavisd-new && make config;
> [...]
> =3D=3D=3D> =A0 amavisd-new-2.6.4_6,1 depends on shared library: db-4.2.2 =
- found
> [...]
> #
>
> Does that help? :)
>

The use as defined in bsd.port.mk for the IA32_BINARY_PORT variable is
incorrectly being used in the amavisd-new port:

# IA32_BINARY_PORT
#				- Set this instead of ONLY_FOR_ARCHS if the given port
#				  fetches and installs compiled i386 binaries.

When this variable is set it changes how ldconfig searches for
libraries by setting the -32 to ldconfig.  This prevents the port from
properly detecting any 64bit libraries and only looks for 32bit
libraries.  The reason that only db42 is being affected is because
most of the ports dependancies are RUN_DEPENDS.

The correct way to the amavisd-new port would be to change this:

.if defined(WITH_RAR)
IA32_BINARY_PORT=3D	yes
RUN_DEPENDS+=3D	${LOCALBASE}/bin/rar:${PORTSDIR}/archivers/rar
.endif

To this:

.if defined(WITH_RAR)
# support for archivers/rar is broken on ia64
.if ${ARCH} =3D=3D"i386" || ${ARCH} =3D=3D "amd64"
RUN_DEPENDS+=3D	${LOCALBASE}/bin/rar:${PORTSDIR}/archivers/rar
.else
IGNORE=3D archviers/rar is a 32-bit binary port and is not compatible with =
${ARCH}
.endif
.endif

Note:  This may need to be moved after the bsd.port.pre.mk.

Scot



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTik07PhAe2uojwOxvHscG31XVTxra4hM9sZB-xTa>