Subject: gnumeric vs perl = libtool vs binutils on NetBSD-current
To: None <pkgsrc-users@NetBSD.org>
From: Thomas Klausner <wiz@NetBSD.org>
List: current-users
Date: 03/12/2006 19:15:17
Hi!

On 3.99.1[56], since the binutils update, gnumeric doesn't compile any long=
er.
The build there fails with:

/bin/sh ../../libtool --tag=3DCC --mode=3Dlink cc  -O2 -I/usr/pkg/include -=
I/usr/include -I/usr/pkg/include/python2.4 -I/usr/include/krb5 -DGLX_GLXEXT=
_LEGACY -I/usr/pkg/include/freetype2 -I/usr/X11R6/include  -Wall -Wmissing-=
prototypes  -Wsign-compare -Wpointer-arith -Wnested-externs -Wchar-subscrip=
ts -Wwrite-strings -Wnested-externs -Wmissing-noreturn -Wstrict-prototypes =
-Wmissing-prototypes -Wmissing-format-attribute -Wmissing-declarations   -L=
/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib/py=
thon2.4/config -Wl,-R/usr/pkg/lib/python2.4/config -L/usr/X11R6/lib -Wl,-R/=
usr/X11R6/lib -o perl_loader.la -rpath /usr/pkg/lib/gnumeric/1.6.2/plugins/=
perl-loader -module -avoid-version -Wl,-R/usr/pkg/lib --whole-archive -shar=
ed  -L/usr/pkg/lib boot.lo perl-loader.lo perl-gnumeric.lo  xsinit.lo -Wl,-=
E  -Wl,-R/usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-multi/CORE -Wl,-R/usr/=
pkg/lib  -L/usr/pkg/lib /usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-multi/a=
uto/DynaLoader/DynaLoader.a -L/usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-m=
ulti/CORE -lperl -lm -lcrypt -lpthread -lm

*** Warning: Linking the shared library perl_loader.la against the
*** static library /usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-multi/auto/D=
ynaLoader/libDynaLoader_pic.a is not portable!
rm -fr  .libs/perl_loader.so
cc -shared  .libs/boot.o .libs/perl-loader.o .libs/perl-gnumeric.o .libs/xs=
init.o  -L/usr/obj/math/gnumeric/work.i386/.buildlink/lib -L/usr/obj/math/g=
numeric/work.i386/.buildlink/lib/python2.4/config -L/usr/obj/math/gnumeric/=
work.i386/.x11-buildlink/lib /usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-mu=
lti/auto/DynaLoader/libDynaLoader_pic.a -L/usr/obj/math/gnumeric/work.i386/=
.buildlink/lib/perl5/5.8.0/i386-netbsd-thread-multi/CORE -lperl -lcrypt -lp=
thread -lm  -Wl,-R/usr/pkg/lib -Wl,-R/usr/pkg/lib/python2.4/config -Wl,-R/u=
sr/X11R6/lib -Wl,-E -Wl,-R/usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-multi=
/CORE -Wl,-soname -Wl,perl_loader.so -o .libs/perl_loader.so
ar cru .libs/perl_loader.a /usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-mult=
i/auto/DynaLoader/libDynaLoader_pic.a  boot.o perl-loader.o perl-gnumeric.o=
 xsinit.o /usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-multi/auto/DynaLoader=
/libDynaLoader_pic.a
ar: /usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-multi/auto/DynaLoader/libDy=
naLoader_pic.a: No such file or directory
*** Error code 1

Stop.

I wonder why libtool converts
	/usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-multi/auto/DynaLoader/DynaLoad=
er.a
to
	/usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-multi/auto/DynaLoader/libDynaL=
oader_pic.a=20

The directory /usr/pkg/lib/perl5/5.8.0/i386-netbsd-thread-multi/auto/DynaLo=
ader/ contains:
-r--r--r--   1 root  wheel  7430 Mar 10 06:54 DynaLoader.a
-r--r--r--   1 root  wheel   181 Mar 10 06:57 autosplit.ix
-r--r--r--   1 root  wheel  1269 Mar 10 06:57 dl_expandspec.al
-r--r--r--   1 root  wheel   505 Mar 10 06:57 dl_find_symbol_anywhere.al
-r--r--r--   1 root  wheel  4296 Mar 10 06:57 dl_findfile.al
-r--r--r--   1 root  wheel     1 Mar 10 06:57 extralibs.ld
which matches the contents of a 5.8.7nb8 binary package for 3.0/i386 I foun=
d on ftp.netbsd.org:
-r--r--r--  1 root     wheel       7430 Jan 15 11:22 lib/perl5/5.8.0/i386-n=
etbsd-thread-multi/auto/DynaLoader/DynaLoader.a
-r--r--r--  1 root     wheel        181 Jan 15 11:26 lib/perl5/5.8.0/i386-n=
etbsd-thread-multi/auto/DynaLoader/autosplit.ix
-r--r--r--  1 root     wheel       1269 Jan 15 11:26 lib/perl5/5.8.0/i386-n=
etbsd-thread-multi/auto/DynaLoader/dl_expandspec.al
-r--r--r--  1 root     wheel        505 Jan 15 11:26 lib/perl5/5.8.0/i386-n=
etbsd-thread-multi/auto/DynaLoader/dl_find_symbol_anywhere.al
-r--r--r--  1 root     wheel       4296 Jan 15 11:26 lib/perl5/5.8.0/i386-n=
etbsd-thread-multi/auto/DynaLoader/dl_findfile.al
-r--r--r--  1 root     wheel          1 Jan 15 11:26 lib/perl5/5.8.0/i386-n=
etbsd-thread-multi/auto/DynaLoader/extralibs.ld

But the build succeeds on 3.0/i386 (judging from the bulk builds),
and gnumeric did build for me on 3.99.15/i386 before I upgraded to
the userland with newer binutils.

So what does libtool do differently with binutils 2.16.1
than with binutils 2.15-20041204?

Cheers,
 Thomas