Subject: libtool problems on Solaris 10?
To: None <tech-pkg@netbsd.org, pkgsrc-users@netbsd.org>
From: Jake Kupersmith <jakerosoft@gmail.com>
List: pkgsrc-users
Date: 10/06/2006 14:21:01
Hi, I have recently been having problems bulding devel/ncurses on two
separate machines running Solaris 10 (one SPARC, one x86).  They are
bothing having the exact same problem and I suspect libtool.

The error occurs while linking the demo program, the very last step of
the build.
The error, "ld: fatal: file ../lib/.libs/libncurses++.so: open failed:
No such file or directory"
A closer look reveals, libncurses++.so.5.0.5 does not exist...

root@frylock /var/db/work/devel/ncurses/work/ncurses-5.5/lib
> ls -la .libs/libncurses++.*
-rw-r--r--   1 root     root      131948 Oct  6 13:54 .libs/libncurses++.a
lrwxrwxrwx   1 root     root          18 Oct  6 13:54
.libs/libncurses++.la -> ../libncurses++.la
-rw-r--r--   1 root     root         899 Oct  6 13:54 .libs/libncurses++.lai
-rw-r--r--   1 root     root         955 Oct  6 13:54
.libs/libncurses++.lai.blsav
lrwxrwxrwx   1 root     root          21 Oct  6 13:54
.libs/libncurses++.so -> libncurses++.so.5.0.5
lrwxrwxrwx   1 root     root          21 Oct  6 13:54
.libs/libncurses++.so.5 -> libncurses++.so.5.0.5

Here is the build log from the point of linking libncurses++

# bmake
...
cd ../lib && /var/db/work/devel/ncurses/work/.wrapper/bin/libtool
--tag=CXX --mode=link /var/db/work/devel/ncurses/work/.wrapper/bin/g++
-O -xtarget=ultra2 -xarch=v8plusa -xtarget=ultra2 -xarch=v8plusa  -o
libncurses++.la ../obj_lo/cursesf.lo ../obj_lo/cursesm.lo
../obj_lo/cursesw.lo ../obj_lo/cursespad.lo ../obj_lo/cursesp.lo
../obj_lo/cursslk.lo ../obj_lo/cursesapp.lo ../obj_lo/cursesmain.lo
-rpath /usr/local/lib  -version-info 5:5 -L../lib -lncurses
*** [buildlink3] Warning: libtool replaced -lncurses with ../lib/libncurses.la
(cd .libs && rm -f libncurses++.so.5 && ln -s libncurses++.so.5.0.5
libncurses++.so.5)
(cd .libs && rm -f libncurses++.so && ln -s libncurses++.so.5.0.5
libncurses++.so)
ar cru .libs/libncurses++.a  ../obj_lo/cursesf.o ../obj_lo/cursesm.o
../obj_lo/cursesw.o ../obj_lo/cursespad.o ../obj_lo/cursesp.o
../obj_lo/cursslk.o ../obj_lo/cursesapp.o ../obj_lo/cursesmain.o
ranlib .libs/libncurses++.a
creating libncurses++.la
(cd .libs && rm -f libncurses++.la && ln -s ../libncurses++.la libncurses++.la)
/var/db/work/devel/ncurses/work/.wrapper/bin/libtool --tag=CXX
--mode=compile /var/db/work/devel/ncurses/work/.wrapper/bin/g++
-I../c++ -I../include -I. -DHAVE_CONFIG_H -I. -I../include
-D__EXTENSIONS__ -I/usr/local/include -O -xtarget=ultra2
-xarch=v8plusa -xtarget=ultra2 -xarch=v8plusa -c ../c++/demo.cc -o
../obj_lo/demo.o
 /var/db/work/devel/ncurses/work/.wrapper/bin/g++ -I../c++
-I../include -I. -DHAVE_CONFIG_H -D__EXTENSIONS__
-I/var/db/work/devel/ncurses/work/.buildlink/include -O
-xtarget=ultra2 -xarch=v8plusa -xtarget=ultra2 -xarch=v8plusa -c
../c++/demo.cc  -DPIC -o ../obj_lo/.libs/demo.o
"../include/ncurses_cfg.h", line 69: Warning (Anachronism): Attempt to
redefine _FILE_OFFSET_BITS without using #undef.
1 Warning(s) detected.
 /var/db/work/devel/ncurses/work/.wrapper/bin/g++ -I../c++
-I../include -I. -DHAVE_CONFIG_H -D__EXTENSIONS__
-I/var/db/work/devel/ncurses/work/.buildlink/include -O
-xtarget=ultra2 -xarch=v8plusa -xtarget=ultra2 -xarch=v8plusa -c
../c++/demo.cc -o ../obj_lo/demo.o >/dev/null 2>&1
/var/db/work/devel/ncurses/work/.wrapper/bin/libtool --tag=CXX
--mode=link /var/db/work/devel/ncurses/work/.wrapper/bin/g++ -o demo
../obj_lo/demo.o -L../lib ../lib/libncurses++.la -L../lib
../lib/libform.la ../lib/libmenu.la ../lib/libpanel.la
../lib/libncurses.la  -Wl,-R/usr/local/lib   -I../c++ -I../include -I.
-DHAVE_CONFIG_H -I. -I../include  -D__EXTENSIONS__
-I/usr/local/include -O -xtarget=ultra2 -xarch=v8plusa -xtarget=ultra2
-xarch=v8plusa
mkdir .libs
/var/db/work/devel/ncurses/work/.wrapper/bin/g++ -o .libs/demo
../obj_lo/demo.o -R/usr/local/lib -I../c++ -I../include -I.
-DHAVE_CONFIG_H -D__EXTENSIONS__
-I/var/db/work/devel/ncurses/work/.buildlink/include -O
-xtarget=ultra2 -xarch=v8plusa -xtarget=ultra2 -xarch=v8plusa
-L/var/db/work/devel/ncurses/work/ncurses-5.5/lib/.libs
-L/var/db/work/devel/ncurses/work/ncurses-5.5/lib
../lib/.libs/libncurses++.so
-L/var/db/work/devel/ncurses/work/.buildlink/lib
../lib/.libs/libform.so ../lib/.libs/libmenu.so
../lib/.libs/libpanel.so
/var/db/work/devel/ncurses/work/ncurses-5.5/lib/.libs/libncurses.so
../lib/.libs/libncurses.so
ld: fatal: file ../lib/.libs/libncurses++.so: open failed: No such
file or directory
ld: warning: file
/var/db/work/devel/ncurses/work/ncurses-5.5/lib/.libs/libncurses.so:
linked to ../lib/.libs/libncurses.so: attempted multiple inclusion of
file
ld: fatal: File processing errors. No output written to .libs/demo
*** Error code 1

Stop.
bmake: stopped in /var/db/work/devel/ncurses/work/ncurses-5.5/c++
*** Error code 1


Also, on the sparc machine..

I recently re-bootstrapped (this month).  Prior to that I was using a
bootstrap from 20060305.  ncurses built fine on the 20060305 pkgsrc.
It was only until after i re-bootstrapped on 20061005 that ncurses
would fail to build.


Thanks and any help you could lend will be greatly appreciated.  I
filed a PR about this a week or two ago.. PR #34581

Jake