Am 02.05.2011 um 18:20 schrieb Nathan Kunkee:
/bin/sh, the default choice if you just run switch-arch, on OpenSolaris is ksh93, which silently fails on the $...bigendian tests. If I run switch-arch with /usr/xpg4/bin/sh or bash, it works fine and my builds from x86 and sparc are now correct and load. It looks like testing for $KSH_VERSION would be a way to find out if the shell isn't going to work, but I don't know if this would come up enough to warrant adding logic to check it.
Maybe we have a bashism somewhere (should be fixed), or more likely since ksh93 is not fully Posix compatible, we use some Posix features which are not implemented by ksh93 (maybe avoidable). Please send again the output from sh -x for the bigendian test.
As run on my Ultra60 which should set CONFIG_BIG_ENDIAN:
nathan@valhalla:/export/home/nathan/openbios-devel$ LANG=C /bin/sh - x ./config/scripts/switch-arch sparc32
- MOLPATH=/export/home/nathan//mol-0.9.71
- [ xsparc32 = x -o sparc32 = -help ]
- test -f utils/dist/debian/rules
- chmod 755 utils/dist/debian/rules
- chmod 755 config/scripts/switch-arch
- chmod 755 config/scripts/reldir
- test x = x
- archname
- sed -e s/i.86/x86/ -e s/i86pc/x86/ -e s/sun4u/sparc64/ -e 's/sparc
$/sparc32/' -e 's/arm.*/arm/' -e s/sa110/arm/ -e s/x86_64/amd64/ -e 's/Power Macintosh/ppc/'
- uname -m
- HOSTARCH=sparc64
- head VERSION
- VERSION=1.0
- echo 'Configuring OpenBIOS on sparc64 for sparc32'
Configuring OpenBIOS on sparc64 for sparc32
- target_list=''
- target_list=' builtin-sparc32 unix-sparc32'
- arch_list=''
- sed 's/.*-//g'
- echo builtin-sparc32
- arch=sparc32
- test -f config/examples/sparc32_config.xml
- grep -q sparc32
- echo
- arch_list=' sparc32'
- sed 's/.*-//g'
- echo unix-sparc32
- arch=sparc32
- test -f config/examples/sparc32_config.xml
- grep -q sparc32
- echo sparc32
- unix=no
- builtin=no
- plain=no
- mol=no
- briq=no
- pearpc=no
- qemu=no
- xbox=no
- cross=no
- :
- builtin=yes
- :
- [ sparc32 != sparc64 ]
- continue
- BASEARCH=sparc32
- select_prefix sparc
- whence -v sparc-linux-gnu-gcc
- 1> /dev/null 2>& 1
- whence -v sparc-linux-gcc
- 1> /dev/null 2>& 1
- whence -v sparc-elf-gcc
- 1> /dev/null 2>& 1
- whence -v sparc-eabi-gcc
- 1> /dev/null 2>& 1
- whence -v sparc-sun-solaris2.11-gcc
- 1> /dev/null 2>& 1
- return
- CFLAGS='-Wa,-xarch=v8 -Wa,-32 -m32 -mcpu=supersparc -fno-builtin'
- AS_FLAGS='-Wa,-xarch=v8 -Wa,-32'
- uname -s
- [ sparc32 != sparc64 -o SunOS = Darwin ]
- cross=yes
- crosscflags sparc64 sparc32
- local host=sparc64
./config/scripts/switch-arch[22]: local: not found [No such file or directory]
;-)