Thread: PlPerl compile failure
I am seeing this error in CVS current: gmake -f Makefile all gmake[1]: Entering directory `/usr/var/local/src/gen/pgsql/CURRENT/pgsql/src/pl/plperl' LD_RUN_PATH="" ld -o blib/arch/auto/plperl/plperl.so -shared -x -L/usr/X11/lib -L/usr/local/lib plperl.o eloglvl.o SPI.o-rdynamic -Wl,-rpath,/usr/libdata/perl5/5.00503/i386-bsdos/CORE -L/usr/X11/lib -L/usr/local/lib /usr/libdata/perl5/5.00503/i386-bsdos/auto/DynaLoader/DynaLoader.a-L/usr/libdata/perl5/5.00503/i386-bsdos/CORE -lperl -ldl-lm -lc ld: -r and -shared may not be used together ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ gmake[1]: *** [blib/arch/auto/plperl/plperl.so] Error 1 gmake[1]: Leaving directory `/usr/var/local/src/gen/pgsql/CURRENT/pgsql/src/pl/plperl' gmake: *** [all] Error 2 Can anyone suggest a fix? Everything else compiles fine. I am on BSD/OS. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
That's me fault. I'm reading up on bsdos documentation to see what's the right way to run ld on it. Can you give me output of 'perl -MExtUtils::Embed -e ldopts' and 'perl -V' on your machine? Thanks On Tue, 19 Jun 2001, Bruce Momjian wrote: > I am seeing this error in CVS current: > > gmake -f Makefile all > gmake[1]: Entering directory `/usr/var/local/src/gen/pgsql/CURRENT/pgsql/src/pl/plperl' > > LD_RUN_PATH="" ld -o blib/arch/auto/plperl/plperl.so -shared -x > -L/usr/X11/lib -L/usr/local/lib plperl.o eloglvl.o SPI.o -rdynamic > -Wl,-rpath,/usr/libdata/perl5/5.00503/i386-bsdos/CORE -L/usr/X11/lib > -L/usr/local/lib > /usr/libdata/perl5/5.00503/i386-bsdos/auto/DynaLoader/DynaLoader.a > -L/usr/libdata/perl5/5.00503/i386-bsdos/CORE -lperl -ldl -lm -lc > > ld: -r and -shared may not be used together > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > gmake[1]: *** [blib/arch/auto/plperl/plperl.so] Error 1 > gmake[1]: Leaving directory `/usr/var/local/src/gen/pgsql/CURRENT/pgsql/src/pl/plperl' > gmake: *** [all] Error 2 > > Can anyone suggest a fix? Everything else compiles fine. I am on > BSD/OS. > >
Output attached. > That's me fault. I'm reading up on bsdos documentation to see what's the > right way to run ld on it. > > Can you give me output of 'perl -MExtUtils::Embed -e ldopts' and 'perl -V' > on your machine? > > Thanks > > > > On Tue, 19 Jun 2001, Bruce Momjian wrote: > > > I am seeing this error in CVS current: > > > > gmake -f Makefile all > > gmake[1]: Entering directory `/usr/var/local/src/gen/pgsql/CURRENT/pgsql/src/pl/plperl' > > > > LD_RUN_PATH="" ld -o blib/arch/auto/plperl/plperl.so -shared -x > > -L/usr/X11/lib -L/usr/local/lib plperl.o eloglvl.o SPI.o -rdynamic > > -Wl,-rpath,/usr/libdata/perl5/5.00503/i386-bsdos/CORE -L/usr/X11/lib > > -L/usr/local/lib > > /usr/libdata/perl5/5.00503/i386-bsdos/auto/DynaLoader/DynaLoader.a > > -L/usr/libdata/perl5/5.00503/i386-bsdos/CORE -lperl -ldl -lm -lc > > > > ld: -r and -shared may not be used together > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > gmake[1]: *** [blib/arch/auto/plperl/plperl.so] Error 1 > > gmake[1]: Leaving directory `/usr/var/local/src/gen/pgsql/CURRENT/pgsql/src/pl/plperl' > > gmake: *** [all] Error 2 > > > > Can anyone suggest a fix? Everything else compiles fine. I am on > > BSD/OS. > > > > > > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026 -rdynamic -Wl,-rpath,/usr/libdata/perl5/5.00503/i386-bsdos/CORE -L/usr/X11/lib -L/usr/local/lib /usr/libdata/perl5/5.00503/i386-bsdos/auto/DynaLoader/DynaLoader.a-L/usr/libdata/perl5/5.00503/i386-bsdos/CORE -lperl -ldl-lm -lc Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration: Platform: osname=bsdos, osvers=4.2, archname=i386-bsdos uname='bsdos bsdi.com 4.2 :bsdos_distribution defined: i386' hint=recommended, useposix=true, d_sigaction=define usethreads=undef useperlio=undef d_sfio=undef Compiler: cc='cc', optimize='-O2', gccversion=2.95.2 19991024 (release) cppflags='-I/usr/local/include' ccflags ='-I/usr/local/include' stdchar='char', d_stdstdio=undef, usevfork=false intsize=4, longsize=4, ptrsize=4, doublesize=8 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 alignbytes=4, usemymalloc=n, prototype=define Linker and Libraries: ld='ld', ldflags =' -L/usr/X11/lib -L/usr/local/lib' libpth=/usr/local/lib /usr/shlib /shlib /lib /usr/lib /usr/X11/lib libs=-ldl -lm -lc libc=/shlib/libc.so, so=so, useshrplib=true, libperl=libperl.so Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic -Wl,-rpath,/usr/libdata/perl5/5.00503/i386-bsdos/CORE' cccdlflags='-fPIC', lddlflags='-shared -x -L/usr/X11/lib -L/usr/local/lib' Characteristics of this binary (from libperl): Built under bsdos Compiled at Oct 8 2000 21:58:54 @INC: /usr/libdata/perl5/5.00503/i386-bsdos /usr/libdata/perl5/5.00503 /usr/libdata/perl5/site_perl/i386-bsdos /usr/libdata/perl5/site_perl /usr/libdata/perl5/site_perl/i386-bsdos/include .
Bruce, try the following patch, and let me know. Apparently, on some systems, ExtUtils::Embed and MakeMaker are slightly broken, and its impossible to make a shared library when compiling with both CCDLFLAGS and LDDLFAGS, you have to pick one or the other. Index: Makefile.PL =================================================================== RCS file: /home/cvs/pgsql/pgsql/src/pl/plperl/Makefile.PL,v retrieving revision 1.12.1000.1 diff --unified -r1.12.1000.1 Makefile.PL --- Makefile.PL 2001/06/16 23:18:04 1.12.1000.1 +++ Makefile.PL 2001/06/19 14:10:33 @@ -29,8 +29,11 @@ exit(0);} +my $ldopts=ldopts(); +$ldopts=~s/$Config{ccdlflags}//; +WriteMakefile( 'NAME' => 'plperl', - dynamic_lib => { 'OTHERLDFLAGS' => ldopts() } , + dynamic_lib => { 'OTHERLDFLAGS' => $ldopts } , INC => "$ENV{EXTRA_INCLUDES}", XS => { 'SPI.xs' => 'SPI.c'}, OBJECT => 'plperl.o eloglvl.o SPI.o', On Tue, 19 Jun 2001, Bruce Momjian wrote: > > Output attached. > > > > That's me fault. I'm reading up on bsdos documentation to see what's the > > right way to run ld on it. > > > > Can you give me output of 'perl -MExtUtils::Embed -e ldopts' and 'perl -V' > > on your machine? > > > > Thanks > > > > > > > > On Tue, 19 Jun 2001, Bruce Momjian wrote: > > > > > I am seeing this error in CVS current: > > > > > > gmake -f Makefile all > > > gmake[1]: Entering directory `/usr/var/local/src/gen/pgsql/CURRENT/pgsql/src/pl/plperl' > > > > > > LD_RUN_PATH="" ld -o blib/arch/auto/plperl/plperl.so -shared -x > > > -L/usr/X11/lib -L/usr/local/lib plperl.o eloglvl.o SPI.o -rdynamic > > > -Wl,-rpath,/usr/libdata/perl5/5.00503/i386-bsdos/CORE -L/usr/X11/lib > > > -L/usr/local/lib > > > /usr/libdata/perl5/5.00503/i386-bsdos/auto/DynaLoader/DynaLoader.a > > > -L/usr/libdata/perl5/5.00503/i386-bsdos/CORE -lperl -ldl -lm -lc > > > > > > ld: -r and -shared may not be used together > > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > > gmake[1]: *** [blib/arch/auto/plperl/plperl.so] Error 1 > > > gmake[1]: Leaving directory `/usr/var/local/src/gen/pgsql/CURRENT/pgsql/src/pl/plperl' > > > gmake: *** [all] Error 2 > > > > > > Can anyone suggest a fix? Everything else compiles fine. I am on > > > BSD/OS. > > > > > > > > > > > >
The fix worked. Thanks. Patch applied. > Bruce, try the following patch, and let me know. > > Apparently, on some systems, ExtUtils::Embed and MakeMaker are slightly > broken, and its impossible to make a shared library when compiling with > both CCDLFLAGS and LDDLFAGS, you have to pick one or the other. > > Index: Makefile.PL > =================================================================== > RCS file: /home/cvs/pgsql/pgsql/src/pl/plperl/Makefile.PL,v > retrieving revision 1.12.1000.1 > diff --unified -r1.12.1000.1 Makefile.PL > --- Makefile.PL 2001/06/16 23:18:04 1.12.1000.1 > +++ Makefile.PL 2001/06/19 14:10:33 > @@ -29,8 +29,11 @@ > exit(0); > } > > +my $ldopts=ldopts(); > +$ldopts=~s/$Config{ccdlflags}//; > + > WriteMakefile( 'NAME' => 'plperl', > - dynamic_lib => { 'OTHERLDFLAGS' => ldopts() } , > + dynamic_lib => { 'OTHERLDFLAGS' => $ldopts } , > INC => "$ENV{EXTRA_INCLUDES}", > XS => { 'SPI.xs' => 'SPI.c' }, > OBJECT => 'plperl.o eloglvl.o SPI.o', > > > On Tue, 19 Jun 2001, Bruce Momjian wrote: > > > > > Output attached. > > > > > > > That's me fault. I'm reading up on bsdos documentation to see what's the > > > right way to run ld on it. > > > > > > Can you give me output of 'perl -MExtUtils::Embed -e ldopts' and 'perl -V' > > > on your machine? > > > > > > Thanks > > > > > > > > > > > > On Tue, 19 Jun 2001, Bruce Momjian wrote: > > > > > > > I am seeing this error in CVS current: > > > > > > > > gmake -f Makefile all > > > > gmake[1]: Entering directory `/usr/var/local/src/gen/pgsql/CURRENT/pgsql/src/pl/plperl' > > > > > > > > LD_RUN_PATH="" ld -o blib/arch/auto/plperl/plperl.so -shared -x > > > > -L/usr/X11/lib -L/usr/local/lib plperl.o eloglvl.o SPI.o -rdynamic > > > > -Wl,-rpath,/usr/libdata/perl5/5.00503/i386-bsdos/CORE -L/usr/X11/lib > > > > -L/usr/local/lib > > > > /usr/libdata/perl5/5.00503/i386-bsdos/auto/DynaLoader/DynaLoader.a > > > > -L/usr/libdata/perl5/5.00503/i386-bsdos/CORE -lperl -ldl -lm -lc > > > > > > > > ld: -r and -shared may not be used together > > > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > > > gmake[1]: *** [blib/arch/auto/plperl/plperl.so] Error 1 > > > > gmake[1]: Leaving directory `/usr/var/local/src/gen/pgsql/CURRENT/pgsql/src/pl/plperl' > > > > gmake: *** [all] Error 2 > > > > > > > > Can anyone suggest a fix? Everything else compiles fine. I am on > > > > BSD/OS. > > > > > > > > > > > > > > > > > > > > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026