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: