Subject: pkg/33467: [Solaris] C++ shared library compilation is skipped when building databases/db4
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <frederic.touboul@gmail.com>
List: pkgsrc-bugs
Date: 05/12/2006 09:20:01
>Number: 33467
>Category: pkg
>Synopsis: [Solaris] C++ shared library compilation is skipped when building databases/db4
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri May 12 09:20:01 +0000 2006
>Originator: Frederic Touboul
>Release:
>Organization:
>Environment:
SunOS basp 5.9 Generic_118558-26 sun4u sparc SUNW,Ultra-250
>Description:
When trying to install Sleepycat Berkley DB 4.4.20 on Solaris 9, using
the Sun studio 11 compiler, the build fails, with the following error message:
-----
===> Installing for db4-4.4.20
Installing DB include files: /usr/pkg/include/db4 ...
Installing DB library: /usr/pkg/lib ...
cp -p .libs/libdb4-4.4.so.4.0.20 /usr/pkg/lib/libdb4-4.4.so.4.0.20
(cd /usr/pkg/lib && { ln -s -f libdb4-4.4.so.4.0.20 libdb4-4.4.so.4 ||
{ rm -f libdb4-4.4.so.4 && ln -s libdb4-4.4.so.4.0.20 libdb4-4.4.so.4;
}; })
(cd /usr/pkg/lib && { ln -s -f libdb4-4.4.so.4.0.20 libdb4-4.4.so || {
rm -f libdb4-4.4.so && ln -s libdb4-4.4.so.4.0.20 libdb4-4.4.so; }; })
chmod +x /usr/pkg/lib/libdb4-4.4.so.4.0.20
cp -p .libs/libdb4-4.4.lai /usr/pkg/lib/libdb4-4.4.la
cp -p .libs/libdb4_cxx-4.4.so /usr/pkg/lib/libdb4_cxx-4.4.so
cp: cannot access .libs/libdb4_cxx-4.4.so
*** Error code 2
Stop.
bmake: stopped in /usr/pkgsrc/databases/db4/work/db-4.4.20/build_unix
*** Error code 1
[...]
-----
It seems the compilation didn't push through with the C++ shared
library file.
If I compile Berkeley DB 4.4.20 outside pkgsrc it succeeds to produce the C++ libraries, including the problematic libdb4_cxx-4.4.so file. To do so, the following commands are executed:
-----
/usr/bin/sh ./libtool --mode=link CC -avoid-version -O -rpath
/usr/local/BerkeleyDB.4.4/lib -o libdb_cxx-4.4.la [all object files]
CC -G -hlibdb_cxx-4.4.so -o .libs/libdb_cxx-4.4.so [all object files]
CC -xar -o .libs/libdb_cxx-4.4.a [all object files]
-----
The second line in the output above seems to produce
libdb4_cxx-4.4.so. With pkgsrc, this part of the compilation is
different:
-----
/usr/pkgsrc/databases/db4/work/.tools/bin/sh ./libtool --mode=link CC
-avoid-version -O -I/usr/include -rpath /usr/pkg/lib -L/usr/lib
-Wl,-R/usr/lib -Wl,-R/usr/pkg/lib -o libdb4_cxx-4.4.la [all object
files]
ar cru .libs/libdb4_cxx-4.4.a [all object files]
-----
The first line seems to be roughly the same, but the second one is
missing with pkgsrc.
Using pkgsrc-current (as found in ftp://ftp.netbsd.org/pub/NetBSD/packages).
>How-To-Repeat:
Try to build and install databases/db4 on Solaris 9, using the Sun studio 11 compiler.
>Fix: