pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Pkgsrc under Solaris 11 Express



On 12/4/2010 1:43 PM, John Ruschmeyer wrote:
I'm trying to build some packages using pkgsrc under Solaris 11 Express (SPARC mostly, but I'm seeing the same problems with x86). I am using the version of gcc-3 which is available in the Solaris IPS repository along with the Gnu binutils which are also loaded.

Bootstrap of pkgsrc seems to go fine and the first few packages (perl, digest, pcre, etc.) seem to build fine. I hit a snag, though, when something wanted to build devel/glib2. A transcript of the build ends with the following:

gmake[4]: Entering directory `/usr/pkgsrc/devel/glib2/work/glib-2.24.2/glib'
/usr/pkg/bin/pdksh ../libtool  --tag=CC   --mode=link gcc  -O -I/usr/include -I/usr/pkg/include -Wall  -version-info 2400:2:2400 -export-dynamic  -export-symbols-regex "^g.*" -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -o libglib-2.0.la -rpath /usr/pkg/lib garray.lo gasyncqueue.lo gatomic.lo gbacktrace.lo gbase64.lo gbitlock.lo gbookmarkfile.lo gbuffer.lo gcache.lo gchecksum.lo gcompletion.lo gconvert.lo gdataset.lo gdate.lo gdir.lo gerror.lo gfileutils.lo ghash.lo ghook.lo ghostutils.lo giochannel.lo gkeyfile.lo glist.lo gmain.lo gmappedfile.lo gmarkup.lo gmem.lo gmessages.lo gnode.lo goption.lo gpattern.lo gpoll.lo gprimes.lo gqsort.lo gqueue.lo grel.lo grand.lo gregex.lo gscanner.lo gsequence.lo gshell.lo gslice.lo gslist.lo gstdio.lo gstrfuncs.lo gstring.lo gtestutils.lo gthread.lo gthreadpool.lo gtimer.lo gtree.lo guniprop.lo gutf8.lo gunibreak.lo gunicollate.lo gunidecomp.lo gurifuncs.lo gutils.lo gvariant.lo gvariant-core.lo gvariant-parser.lo gvariant-serialiser.lo gvarianttypeinfo.lo gvarianttype.lo gprintf.lo libcharset/libcharset.la  giounix.lo gspawn.lo  -liconv  -Wl,-R/usr/pkg/lib -L/usr/pkg/lib -lpcre   -lintl  -lnsl -lsocket
libtool: link: rm -fr  .libs/libglib-2.0.exp
libtool: link: nm -p  .libs/garray.o .libs/gasyncqueue.o .libs/gatomic.o .libs/gbacktrace.o .libs/gbase64.o .libs/gbitlock.o .libs/gbookmarkfile.o .libs/gbuffer.o .libs/gcache.o .libs/gchecksum.o .libs/gcompletion.o .libs/gconvert.o .libs/gdataset.o .libs/gdate.o .libs/gdir.o .libs/gerror.o .libs/gfileutils.o .libs/ghash.o .libs/ghook.o .libs/ghostutils.o .libs/giochannel.o .libs/gkeyfile.o .libs/glist.o .libs/gmain.o .libs/gmappedfile.o .libs/gmarkup.o .libs/gmem.o .libs/gmessages.o .libs/gnode.o .libs/goption.o .libs/gpattern.o .libs/gpoll.o .libs/gprimes.o .libs/gqsort.o .libs/gqueue.o .libs/grel.o .libs/grand.o .libs/gregex.o .libs/gscanner.o .libs/gsequence.o .libs/gshell.o .libs/gslice.o .libs/gslist.o .libs/gstdio.o .libs/gstrfuncs.o .libs/gstring.o .libs/gtestutils.o .libs/gthread.o .libs/gthreadpool.o .libs/gtimer.o .libs/gtree.o .libs/guniprop.o .libs/gutf8.o .libs/gunibreak.o .libs/gunicollate.o .libs/gunidecomp.o .libs/gurifuncs.o .libs/gutils.o .libs/gvariant.o .libs/gvariant-core.o .libs/gvariant-parser.o .libs/gvariant-serialiser.o .libs/gvarianttypeinfo.o .libs/gvarianttype.o .libs/gprintf.o .libs/giounix.o .libs/gspawn.o   libcharset/.libs/libcharset.a | sed -n -e 's/^.*[  ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[         ][      ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | /usr/pkg/bin/nbsed 's/.* //' | sort | uniq > .libs/libglib-2.0.exp
libtool: link: /usr/xpg4/bin/grep -E -e "^g.*" ".libs/libglib-2.0.exp" > ".libs/libglib-2.0.expT"
libtool: link: mv -f ".libs/libglib-2.0.expT" ".libs/libglib-2.0.exp"
libtool: link: gcc -shared  .libs/garray.o .libs/gasyncqueue.o .libs/gatomic.o .libs/gbacktrace.o .libs/gbase64.o .libs/gbitlock.o .libs/gbookmarkfile.o .libs/gbuffer.o .libs/gcache.o .libs/gchecksum.o .libs/gcompletion.o .libs/gconvert.o .libs/gdataset.o .libs/gdate.o .libs/gdir.o .libs/gerror.o .libs/gfileutils.o .libs/ghash.o .libs/ghook.o .libs/ghostutils.o .libs/giochannel.o .libs/gkeyfile.o .libs/glist.o .libs/gmain.o .libs/gmappedfile.o .libs/gmarkup.o .libs/gmem.o .libs/gmessages.o .libs/gnode.o .libs/goption.o .libs/gpattern.o .libs/gpoll.o .libs/gprimes.o .libs/gqsort.o .libs/gqueue.o .libs/grel.o .libs/grand.o .libs/gregex.o .libs/gscanner.o .libs/gsequence.o .libs/gshell.o .libs/gslice.o .libs/gslist.o .libs/gstdio.o .libs/gstrfuncs.o .libs/gstring.o .libs/gtestutils.o .libs/gthread.o .libs/gthreadpool.o .libs/gtimer.o .libs/gtree.o .libs/guniprop.o .libs/gutf8.o .libs/gunibreak.o .libs/gunicollate.o .libs/gunidecomp.o .libs/gurifuncs.o .libs/gutils.o .libs/gvariant.o .libs/gvariant-core.o .libs/gvariant-parser.o .libs/gvariant-serialiser.o .libs/gvarianttypeinfo.o .libs/gvarianttype.o .libs/gprintf.o .libs/giounix.o .libs/gspawn.o  -Wl,--whole-archive libcharset/.libs/libcharset.a -Wl,--no-whole-archive  -Wl,-rpath -Wl,/usr/pkgsrc/devel/glib2/work/.buildlink/lib -Wl,-rpath -Wl,/usr/pkgsrc/devel/glib2/work/.buildlink/lib -L/usr/pkgsrc/devel/glib2/work/.buildlink/lib /usr/pkgsrc/devel/glib2/work/.buildlink/lib/libpcre.so /usr/pkgsrc/devel/glib2/work/.buildlink/lib/libintl.so /usr/pkgsrc/devel/glib2/work/.buildlink/lib/libiconv.so -lc -lnsl -lsocket -lc  -Wl,-R/usr/pkg/lib   -Wl,-soname -Wl,libglib-2.0.so.0 -Wl,-retain-symbols-file -Wl,.libs/libglib-2.0.exp -o .libs/libglib-2.0.so.0.2400.2
ld: fatal: file .libs/libglib-2.0.exp: unknown file type
ld: fatal: file processing errors. No output written to .libs/libglib-2.0.so.0.2400.2
collect2: ld returned 1 exit status
gmake[4]: *** [libglib-2.0.la] Error 1
gmake[4]: Leaving directory `/usr/pkgsrc/devel/glib2/work/glib-2.24.2/glib'
gmake[3]: *** [all-recursive] Error 1
gmake[3]: Leaving directory `/usr/pkgsrc/devel/glib2/work/glib-2.24.2/glib'
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory `/usr/pkgsrc/devel/glib2/work/glib-2.24.2/glib'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/usr/pkgsrc/devel/glib2/work/glib-2.24.2'
gmake: *** [all] Error 2
*** Error code 2

Stop.
bmake: stopped in /usr/pkgsrc/devel/glib2
*** Error code 1

From a quick web search, I get the impression that the problem may be that the wrong linker is being invoked. Since this is a Solaris system, it has both /usr/gnu/bin/ld and /usr/ccs/bin/ld (the latter actually being a symlink to /usr/bin/ld).

At this point, I've tried a number of ways to force the use of /usr/gnu/bin/ld, including setting the LD environment variable at bootstrap and before building glib2, rebuilding libtool with LD set and adding "TOOLS_PLATFORM.ld?=             /usr/gnu/bin/ld" to /usr/pkg/etc/mk.conf.

At this point, I'm a bit lost. Does anybody have any advice?

Thanks...
John
I just answered this question on this list like 2 days ago as I was having it also. The problem is that its interpreting the libtool output with solaris ld. -Wl,-retain-symbols-file -Wl,.libs/libglib-2.0.exp gets interpreted as -r -e tain-symbols-file libglib-2.0.exp. If the gnu linker is used this problem does not occure and the glib2 build will finish with success. If you wish to use the glib2 compiler then libtool needs to be informed.

Can anyone confirm if netbsd is using its own libtool? I see it compiles a libtool. It seems as if this is the case. A libtool dev on their mailing list responded saying libtool thinks its using the wrong ld. I couldn't confirm this as I didn't know if netbsd pkgsrc was using the libtool it bootstraps. I'm somehow guessing it does.

* Solaris libtool: libtool --config shows ld as /usr/ccs/bin/ld
* Netbsd libtool: libtool --config shows ld as just 'ld' which seemingly would catch $PATH and resolve to /usr/gnu/bin/ld
* gcc -print-prog-name=ld assuming solaris respository /usr/gnu/bin/gcc has an output for 'gcc -print-prog-name=ld' as /usr/ccs/bin/ld

blastwave and opencsw gcc have a 'gcc -print-prog-name=ld' of simply 'ld' and would catch search path too.

The only logical explanation is that NetBSD is using its own libtool which is confirming its 'ld' as gnu ld.

bsd.pkg.use.mk:PKG_LIBTOOL?=            ${LOCALBASE}/bin/libtool
 
And so its confirmed.

Thanks,

Noah McNallie






Home | Main Index | Thread Index | Old Index