On Fri, Aug 12, 2016 at 6:56 AM, Rainer Orth <r...@cebitec.uni-bielefeld.de> wrote: > Hi Ian, > >>>> this patch broke i386-pc-solaris2.12 and sparc-sun-solaris2.12 >>>> bootstrap, however: in both cases, the 64-bit build of os.lo fails like >>>> this: >>>> >>>> /vol/gcc/src/hg/trunk/local/libgo/go/os/dir.go:82:8: error: reference to >>>> undefined name 'libc_readdir_r' >>>> i := libc_readdir_r(file.dirinfo.dir, entryDirent, pr) >>>> ^ >>>> >>>> Neither dir_largefile.go (which is correctly omitted, being 32-bit only) >>>> nor dir_regfile.go (which is needed here) is included in the >>>> compilation. >>> >>> Sorry, I don't know what I messed up in my testing. I committed the >>> appended patch, which should fix the problem. >> >> I had found a different one to the same effect, but running match.sh >> with yours looked right, too. > > here's another issue found during wider testing: on Solaris 10 with > /bin/ksh as CONFIG_SHELL, the build aborts like this: > > objcopy: 'bufio.o': No such file > Makefile:5072: recipe for target 'bufio.gox' failed > make[4]: *** [bufio.gox] Error 1 > > It turns out that no bufio.o is created indeed: > > /vol/gcc/src/hg/trunk/local/libgo/../install-sh -c -d .; files=`echo | sed > -e 's/[^ ]*\.gox//g' -e 's/[^ ]*\.dep//'`; /bin/ksh ./libtool --tag GO > --mode=compile /var/gcc/regression/trunk/10-gcc/build/./gcc/gccgo > -B/var/gcc/regression/trunk/10-gcc/build/./gcc/ > -B/vol/gcc/i386-pc-solaris2.10/bin/ -B/vol/gcc/i386-pc-solaris2.10/lib/ > -isystem /vol/gcc/i386-pc-solaris2.10/include -isystem > /vol/gcc/i386-pc-solaris2.10/sys-include -minline-all-stringops -g -O2 > -I . -c -fgo-pkgpath=`echo bufio.lo | sed -e 's/.lo$//' -e 's/-go$//'` -o > bufio.lo $files > > The list of input files, output from the likes of > > /bin/ksh /vol/gcc/src/hg/trunk/local/libgo/match.sh --goarch=386 > --goos=solaris --srcdir=/vol/gcc/src/hg/trunk/local/libgo/go/bufio > --extrafiles="" > > is empty. Running match.sh with /bin/ksh -x reveals > > + set -e > + unset LANG > > where the script aborts. It turns out that /bin/ksh errors out on an > unset of a variable that isn't set. > > Maybe one could explicitly set LANG=C here, or use the `portable unset' > used in configure?
That is a shell portability problem I was not aware of. I took your LANG=C suggestion. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline. Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 239442) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -d51890dc96a2a33484623728bdc8ac258645e9cc +24e0c4c98e0614b1892316aca787f1c564f2d269 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/match.sh =================================================================== --- libgo/match.sh (revision 239225) +++ libgo/match.sh (working copy) @@ -10,10 +10,10 @@ set -e -unset LANG +LANG=C LC_ALL=C LC_CTYPE=C -export LC_ALL LC_CTYPE +export LANG LC_ALL LC_CTYPE srcdir="" goarch="" Index: libgo/testsuite/gotest =================================================================== --- libgo/testsuite/gotest (revision 239256) +++ libgo/testsuite/gotest (working copy) @@ -10,9 +10,10 @@ # Makes egrep,grep work better in general if we put them # in ordinary C mode instead of what the current language is. -unset LANG -export LC_ALL=C -export LC_CTYPE=C +LANG=C +LC_ALL=C +LC_CTYPE=C +export LANG LC_ALL LC_CTYPE GC=${GC:-gccgo} GL=${GL:-${GC-gccgo}}