Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perl 5.8.6 build chokes with db 4.3.21 #7720

Closed
p5pRT opened this issue Dec 22, 2004 · 7 comments
Closed

perl 5.8.6 build chokes with db 4.3.21 #7720

p5pRT opened this issue Dec 22, 2004 · 7 comments

Comments

@p5pRT
Copy link

p5pRT commented Dec 22, 2004

Migrated from rt.perl.org#33157 (status was 'resolved')

Searchable as RT33157$

@p5pRT
Copy link
Author

p5pRT commented Dec 22, 2004

From jaearick@colby.edu

Hi,

Perl 5.8.6 build fails with Sleepycat db-4.3.21 on Solaris 9 systems.
I am using Sun's StudioOne (version 8) compiler for both DB and Perl.
Perl 5.8.6 builds with no problems using db-4.2.52.

How Sleepycat db-4.3.21 is configured and installed​:

tar xzvf db-4.3.21.tar.gz
cd db-4.3.21/build_unix
../dist/configure --prefix=/opt/BerkeleyDB.4.3 >& dbconfig.out (attached)
gmake
gmake install
then a symlink for /opt/BerkleyDB -> /opt/BerkleyDB.4.3 is created, because
the library loader info via "crle" is defined as​:

crle -c /var/ld/ld.config -l /usr/lib​:/opt/openssl/lib​:/opt/BerkeleyDB/lib​:/usr/local/lib

The Build (and failure) of perl 5.8.6​:

./Configure -Ui_gdbm -Dprefix=/opt/perl5 \
-Dlocincpth="/opt/openssl/include /opt/BerkeleyDB/include /usr/local/include" \
-Dloclibpth="/opt/openssl/lib /opt/BerkeleyDB/lib /usr/local/lib" \
-Dcf_email="jaearick@​colby.edu" -Dperladmin="jaearick@​colby.edu" \
-Drunnm=false -Dldlibpthname=none -Duseshrplib=true -Dinstallusrbinperl -ders

This results in​:

....
You specified no cc but you seem to have the Workshop compiler
(/opt/SUNWspro/bin/cc) installed, using that.
If you want something else, specify that in the command line,
e.g. Configure -Dcc=gcc

Operating system name? [solaris]
Operating system version? [2.9]
Build Perl for SOCKS? [n]
Use the PerlIO abstraction layer? [y]
Build a threading Perl? [n]
Build Perl for multiplicity? [n]
Use which C compiler? [/opt/SUNWspro/bin/cc]
Checking for GNU cc in disguise and/or its version number...
Now, how can we feed standard input to your C preprocessor...
Directories to use for library searches?
[/usr/lib /usr/ccs/lib /opt/SUNWspro/prod/lib /opt/openssl/lib /opt/BerkeleyDB/lib /usr/local/lib]
What is the file extension used for shared libraries? [so]
Try to use long doubles if available? [n]
Checking for optional libraries...
What libraries to use? [-lsocket -lnsl -ldb -ldl -lm -lc]
What optimizer/debugger flag should be used? [-O]
Any additional cc flags?
[-I/opt/openssl/include -I/opt/BerkeleyDB/include -I/usr/local/include]
Let me guess what the preprocessor flags are...
Any additional ld flags (NOT including libraries)?
[ -L/usr/lib -L/usr/ccs/lib -L/opt/SUNWspro/prod/lib -L/opt/openssl/lib -L/opt/BerkeleyDB/lib -L/usr/local/lib]
Checking your choice of C compiler and flags for coherency...
I've tried to compile and run the following simple program​:

#include <stdio.h>
int main() { printf("Ok\n"); return(0); }

I used the command​:

  /opt/SUNWspro/bin/cc -o try -O -I/opt/openssl/include -I/opt/BerkeleyDB/include -I/usr/local/include -L/usr/lib -L/usr/ccs/lib -L/opt/SUNWspro/prod/lib -L/opt/openssl/lib -L/opt/BerkeleyDB/lib -L/usr/local/lib try.c -lsocket -lnsl -ldb -ldl -lm -lc
  ./try

and I got the following output​:

Undefined first referenced
  symbol in file
fdatasync /opt/BerkeleyDB/lib/libdb.so
ld​: fatal​: Symbol referencing errors. No output written to try
I can't compile the test program.
You have a BIG problem. Shall I abort Configure [y]
Ok. Stopping Configure.

Boom! This is either a bug in Sleepycat DB or a change in it interface
which perl 5.8.6 does not handle correctly.


Jeff A. Earickson, Ph.D
Senior UNIX Sysadmin, Email Guru,
Colby Communications Sports Photographer
Colby College, 4214 Mayflower Hill,
Waterville ME, 04901-8842
phone​: 207-859-4214 **NEW** (fax = 3076)


@p5pRT
Copy link
Author

p5pRT commented Dec 22, 2004

From jaearick@colby.edu

checking build system type... sparc-sun-solaris2.9
checking host system type... sparc-sun-solaris2.9
checking if building in the top-level or dist directories... no
checking if --disable-cryptography option specified... no
checking if --disable-hash option specified... no
checking if --disable-queue option specified... no
checking if --disable-replication option specified... no
checking if --disable-statistics option specified... no
checking if --disable-verify option specified... no
checking if --enable-compat185 option specified... no
checking if --enable-cxx option specified... no
checking if --enable-debug option specified... no
checking if --enable-debug_rop option specified... no
checking if --enable-debug_wop option specified... no
checking if --enable-diagnostic option specified... no
checking if --enable-dump185 option specified... no
checking if --enable-java option specified... no
checking if --enable-mingw option specified... no
checking if --enable-o_direct option specified... no
checking if --enable-posixmutexes option specified... no
checking if --enable-rpc option specified... no
checking if --enable-smallbuild option specified... no
checking if --enable-tcl option specified... no
checking if --enable-test option specified... no
checking if --enable-uimutexes option specified... no
checking if --enable-umrw option specified... no
checking if --with-mutex=MUTEX option specified... no
checking if --with-mutexalign=ALIGNMENT option specified... no
checking if --with-tcl=DIR option specified... no
checking if --with-uniquename=NAME option specified... no
checking for ar... ar
checking for chmod... chmod
checking for cp... cp
checking for ln... ln
checking for mkdir... mkdir
checking for ranlib... ranlib
checking for ranlib... /usr/ccs/bin/ranlib
checking for rm... rm
checking for sh... sh
checking for sh... /bin/sh
checking for strip... strip
checking for strip... /usr/ccs/bin/strip
checking for a BSD-compatible install... ../dist/install-sh -c
checking for cc... cc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... no
checking whether cc accepts -g... yes
checking for cc option to accept ANSI C... none needed
checking for an ANSI C-conforming const... yes
checking whether we are using gcc version 2.96... no
checking whether g++ requires -fhandle-exceptions... no
checking for a sed that does not truncate output... /bin/sed
checking for egrep... egrep
checking for non-GNU ld... /usr/ccs/bin/ld
checking if the linker (/usr/ccs/bin/ld) is GNU ld... no
checking for /usr/ccs/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/ccs/bin/nm -p
checking whether ln -s works... yes
checking how to recognise dependent libraries... pass_all
checking how to run the C preprocessor... cc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... no
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for g77... no
checking for f77... no
checking for xlf... no
checking for frt... no
checking for pgf77... no
checking for fort77... no
checking for fl32... no
checking for af77... no
checking for f90... no
checking for xlf90... no
checking for pgf90... no
checking for epcf90... no
checking for f95... no
checking for fort... no
checking for xlf95... no
checking for ifc... no
checking for efc... no
checking for pgf95... no
checking for lf95... no
checking for gfortran... no
checking whether we are using the GNU Fortran 77 compiler... no
checking whether accepts -g... no
checking the maximum length of command line arguments... 262144
checking command to parse /usr/ccs/bin/nm -p output from cc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if cc static flag works... yes
checking for cc option to produce PIC... -KPIC
checking if cc PIC flag -KPIC works... yes
checking if cc supports -c -o file.o... yes
checking whether the cc linker (/usr/ccs/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... solaris2.9 ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... no
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
configure​: creating libtool
appending configuration tag "CXX" to libtool
appending configuration tag "F77" to libtool
checking SOSUFFIX from libtool... .so
checking MODSUFFIX from libtool... .so
checking JMODSUFFIX from libtool... .so
checking whether stat file-mode macros are broken... no
checking whether time.h and sys/time.h may both be included... yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/fcntl.h usability... yes
checking sys/fcntl.h presence... yes
checking for sys/fcntl.h... yes
checking for struct stat.st_blksize... yes
checking for inttypes.h... (cached) yes
checking for stdint.h... (cached) no
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for off_t... yes
checking for size_t... yes
checking for long long... yes
checking for unsigned long long... yes
checking for char... yes
checking size of char... 1
checking for unsigned char... yes
checking size of unsigned char... 1
checking for short... yes
checking size of short... 2
checking for unsigned short... yes
checking size of unsigned short... 2
checking for int... yes
checking size of int... 4
checking for unsigned int... yes
checking size of unsigned int... 4
checking for long... yes
checking size of long... 4
checking for unsigned long... yes
checking size of unsigned long... 4
checking for long long... (cached) yes
checking size of long long... 8
checking for unsigned long long... (cached) yes
checking size of unsigned long long... 8
checking for size_t... (cached) yes
checking size of size_t... 4
checking for char *... yes
checking size of char *... 4
checking for u_char... yes
checking for u_short... yes
checking for u_int... yes
checking for u_long... yes
checking for u_int8_t... no
checking for u_int16_t... no
checking for int16_t... yes
checking for u_int32_t... no
checking for int32_t... yes
checking for u_int64_t... no
checking for int64_t... yes
checking for ssize_t... yes
checking for uintmax_t... yes
checking for uintptr_t... yes
checking for ANSI C exit success/failure values... yes
checking for library containing fdatasync... -lrt
checking for library containing sched_yield... none required
checking for main in -lpthread... yes
checking for main in -lm... yes
checking for main in -lsocket... yes
checking for main in -lnsl... yes
checking for mutexes... Solaris/lwp
checking for getcwd... yes
checking for getopt... yes
checking for memcmp... yes
checking for memcpy... yes
checking for memmove... yes
checking for raise... yes
checking for strcasecmp... yes
checking for strdup... yes
checking for strerror... yes
checking for strtol... yes
checking for strtoul... yes
checking for _fstati64... no
checking for clock_gettime... yes
checking for directio... yes
checking for fdatasync... yes
checking for ftruncate... yes
checking for getrusage... yes
checking for gettimeofday... yes
checking for getuid... yes
checking for pstat_getdynamic... no
checking for rand... yes
checking for sched_yield... yes
checking for select... yes
checking for snprintf... yes
checking for srand... yes
checking for sysconf... yes
checking for vsnprintf... yes
checking for yield... yes
checking for pread... yes
checking for pwrite... yes
checking for fcntl/F_SETFD... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... 64
checking for _LARGE_FILES value needed for large files... no
checking for mlock... yes
checking for munlock... yes
checking for mmap... yes
checking for munmap... yes
checking for shmget... yes
checking for 64-bit integral type support for sequences... yes
configure​: creating ./config.status
config.status​: creating Makefile
config.status​: creating db_cxx.h
config.status​: creating db_int.h
config.status​: creating include.tcl
config.status​: creating db.h
config.status​: creating db_config.h

@p5pRT
Copy link
Author

p5pRT commented Dec 22, 2004

From mjc@sleepycat.com

Hi Jeff,

My name is Michael Cahill and I am with Sleepycat Software.
We have assigned support request #11677 to track this issue​:

Perl 5.8.6 build fails with Sleepycat db-4.3.21 on Solaris 9 systems.
I am using Sun's StudioOne (version 8) compiler for both DB and Perl.
Perl 5.8.6 builds with no problems using db-4.2.52.

The issue is that starting in version 4.3, Berkeley DB makes use of
fdatasync to improve the performance. This requires the librt library
on Solaris, but the 4.3.21 release did not link that into libdb-4.3.so.
The result is that applications using Berkeley DB 4.3.21 on Solaris must
add "-lrt" to their link commands.

I haven't built Perl from source, but I think this is how to do it​:

  ./Configure -Dlibs="-lrt" ...

The Berkeley DB dependency on librt will be fixed in a
soon-to-be-released update to Berkeley DB.

Regards,
Michael.

--
Michael Cahill Sleepycat Software
mailto​:mjc@​sleepycat.com http​://www.sleepycat.com

@p5pRT
Copy link
Author

p5pRT commented Dec 23, 2004

From jaearick@colby.edu

Thanks fo rthe quick feedback. I'll try this next week after
Christmas break. Happy Holidays!

On Thu, 23 Dec 2004, Michael Cahill wrote​:

Date​: Thu, 23 Dec 2004 09​:43​:24 +1100
From​: Michael Cahill <mjc@​sleepycat.com>
To​: Jeff A. Earickson <jaearick@​colby.edu>
Cc​: perlbug@​perl.org, support@​sleepycat.com
Subject​: Re​: perl 5.8.6 build chokes with db 4.3.21 [#11677]

Hi Jeff,

My name is Michael Cahill and I am with Sleepycat Software.
We have assigned support request #11677 to track this issue​:

Perl 5.8.6 build fails with Sleepycat db-4.3.21 on Solaris 9 systems.
I am using Sun's StudioOne (version 8) compiler for both DB and Perl.
Perl 5.8.6 builds with no problems using db-4.2.52.

The issue is that starting in version 4.3, Berkeley DB makes use of
fdatasync to improve the performance. This requires the librt library
on Solaris, but the 4.3.21 release did not link that into libdb-4.3.so.
The result is that applications using Berkeley DB 4.3.21 on Solaris must
add "-lrt" to their link commands.

I haven't built Perl from source, but I think this is how to do it​:

./Configure -Dlibs="-lrt" ...

The Berkeley DB dependency on librt will be fixed in a
soon-to-be-released update to Berkeley DB.

Regards,
Michael.

--
Michael Cahill Sleepycat Software
mailto​:mjc@​sleepycat.com http​://www.sleepycat.com

@p5pRT
Copy link
Author

p5pRT commented Dec 23, 2004

From @smpeters

[mjc@​sleepycat.com - Wed Dec 22 14​:44​:09 2004]​:

Hi Jeff,

My name is Michael Cahill and I am with Sleepycat Software.
We have assigned support request #11677 to track this issue​:

Perl 5.8.6 build fails with Sleepycat db-4.3.21 on Solaris 9 systems.
I am using Sun's StudioOne (version 8) compiler for both DB and Perl.
Perl 5.8.6 builds with no problems using db-4.2.52.

The issue is that starting in version 4.3, Berkeley DB makes use of
fdatasync to improve the performance. This requires the librt library
on Solaris, but the 4.3.21 release did not link that into libdb-4.3.so.
The result is that applications using Berkeley DB 4.3.21 on Solaris must
add "-lrt" to their link commands.

I haven't built Perl from source, but I think this is how to do it​:

./Configure -Dlibs="-lrt" ...

The Berkeley DB dependency on librt will be fixed in a
soon-to-be-released update to Berkeley DB.

As this is a problem with libdb-4.3 and not Perl, this is resolved.
Please configure Perl as suggested above to work with Sleepycat db-4.3.21.

@p5pRT
Copy link
Author

p5pRT commented Dec 23, 2004

The RT System itself - Status changed from 'new' to 'open'

@p5pRT p5pRT closed this as completed Dec 23, 2004
@p5pRT
Copy link
Author

p5pRT commented Dec 23, 2004

@smpeters - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant