[tlbuild] TeX Live 2014 build status report from Utah: [Debian MIPS]
Nelson H. F. Beebe
beebe at math.utah.edu
Thu Apr 10 00:31:37 CEST 2014
Mojca Miklavec responds today to my big build status report:
>> ...
>> > I remain frustrated by having no success whatever on
>> >
>> > * GNU/Linux on MIPS and SPARC,
>>
>> Little or big endian MIPS? (In case that you have debian, what's the
>> output of dpkg-architecture?)
>>
>> 32-bit mipsel (uname returns 64) running Debian worked for me (or at
>> least I hope; I didn't manage to run the whole compilation in one run,
>> but running make again succeeded).
>> ...
My SGI MIPS Debian 6.0.9 system did not have the dpkg-architecture
command, but I found it installed on a Debian 6.0.9 x86-64 system, and
then on the MIPS box did
# apt-get install dpkg-dev
My GNU/Linux SPARC box is Gentoo, and my features package on that
system report big-endian, not little-endian:
http://www.math.utah.edu/pub/features
The newly-installed command on the MIPS box then reports:
% dpkg-architecture | sort
DEB_BUILD_ARCH=mips
DEB_BUILD_ARCH_BITS=32
DEB_BUILD_ARCH_CPU=mips
DEB_BUILD_ARCH_ENDIAN=big
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_GNU_CPU=mips
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=mips-linux-gnu
DEB_HOST_ARCH=mips
DEB_HOST_ARCH_BITS=32
DEB_HOST_ARCH_CPU=mips
DEB_HOST_ARCH_ENDIAN=big
DEB_HOST_ARCH_OS=linux
DEB_HOST_GNU_CPU=mips
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=mips-linux-gnu
I also get these reports:
% cat /proc/cpuinfo
system type : SGI O2
processor : 0
cpu model : Nevada V10.0 FPU V10.0
BogoMIPS : 300.03
wait instruction : yes
microsecond timers : yes
tlb_entries : 48
extra interrupt vector : yes
hardware watchpoint : no
ASEs implemented :
shadow register sets : 1
core : 0
VCED exceptions : not available
VCEI exceptions : not available
% cc hello.c && ./a.out && file a.out
hello, world
a.out: ELF 32-bit MSB executable, MIPS, MIPS-I version 1
(SYSV), dynamically linked (uses shared libs), for GNU/Linux
2.6.18, with unknown capability 0x41000000 = 0xf676e75, with
unknown capability 0x10000 = 0x70401, not stripped
% uname -a
Linux XXXXXXXX 2.6.32-5-r5k-ip32 #1 Tue Sep 24 04:31:29 \
UTC 2013 mips64 GNU/Linux
So, uname thinks this is a 64-bit system, but compilation is by
default in a 32-bit world, and cc reports that -m64 is an unrecognized
option. According to /usr/bin/file, all executables in /bin are also
32-bit ones. [On SGI IRIX, the original O/S on that box, both 32-bit
and 64-bit worlds are fully supported, with 32-bit the default.]
SPARC and MIPS CPUs are either-endian, but GNU/Linux, IRIX, and
Solaris all choose big-endian on MIPS.
Mojca's system name mipsel means little-endian, so that is definitely
a significant difference between our systems.
My TeX Live 2014 build on 32-bit big-endian Debian MIPS fails like
this:
% set path=(/bin /usr/bin)
% env CC=gcc CXX=g++ \
LDFLAGS='-Wl,-rpath,/usr/local/lib -L/usr/local/lib' \
source/Build --disable-luajittex --with-iconv=no
...
[5 hours 22 minutes later]
make[7]: Leaving directory `/local/build/bare/texlive-20140405/source/Work/libs/icu/icu-build/data'
LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH \
../bin/icupkg -tb \
/local/build/bare/texlive-20140405/source/Work/libs/icu/../../../libs/icu/icu-53.1/source/data/in/icudt53l.dat \
./out/icudt53b.dat
udata_swapDataHeader(): header size mismatch - headerSize 32768 infoSize 5120 length 1024
make[6]: *** [out/icudt53b.dat] Error 8
I seem to recall an ICU package endian bug on GNU/Linux SPARC from
previous years of TeX Live builds.
If I search the ICU source tree, I find MANY references to endianness:
% find . -type f | xargs grep -i endian | wc -l
471
Looks just like the Y2K stupidity of failure to localize such
knowledge in a small number of places. Didn't they know about the
hton() and ntoh() macros/functions from TCP/IP programming that hide
endian issues?
If I then look in the output Work tree, I find these settings in
config.h:
% cd /local/build/bare/texlive-20140405/source/Work/
% find . -name config.h | xargs grep -i 'define.*endian'
./libs/cairo/config.h:#define FLOAT_WORDS_BIGENDIAN 1
./libs/cairo/config.h:/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
./libs/cairo/config.h:# if defined __BIG_ENDIAN__
./libs/cairo/config.h:# define WORDS_BIGENDIAN 1
./libs/cairo/config.h:# define WORDS_BIGENDIAN 1
./libs/cairo/config.h:#define WORDS_BIGENDIAN 1
./libs/cairo/config.h:#define FLOAT_WORDS_BIGENDIAN 1
./libs/cairo/config.h:#define WORDS_BIGENDIAN 1
./libs/cairo/config.h:#define FLOAT_WORDS_BIGENDIAN 1
./libs/teckit/config.h:/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
./libs/teckit/config.h:# if defined __BIG_ENDIAN__
./libs/teckit/config.h:# define WORDS_BIGENDIAN 1
./libs/teckit/config.h:# define WORDS_BIGENDIAN 1
./libs/pixman/config.h:/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
./libs/pixman/config.h:# if defined __BIG_ENDIAN__
./libs/pixman/config.h:# define WORDS_BIGENDIAN 1
./libs/pixman/config.h:# define WORDS_BIGENDIAN 1
./libs/zziplib/config.h:/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
./libs/zziplib/config.h:# if defined __BIG_ENDIAN__
./libs/zziplib/config.h:# define WORDS_BIGENDIAN 1
./libs/zziplib/config.h:# define WORDS_BIGENDIAN 1
So, configure has correctly concluded that this is a big-endian
platform.
If I jump back to the ICU source tree, I find:
% find . -name '*.[ch]' | xargs grep -i '#.*define.*little'
./icu-53.1/source/i18n/decNumberLocal.h: #define DECLITEND 1 /* 1=little-endian, 0=big-endian */
./icu-53.1/source/i18n/decContext.c:#define LITEND *mfctop /* named flag; 1=little-endian */
./icu-53.1/source/common/unicode/platform.h:#elif defined(__LITTLE_ENDIAN__) || defined(_LITTLE_ENDIAN)
Perhaps some more detective work might turn up an error in the endian
dependence in the ICU code, if indeed that is the cause of the header
size mismatch error reported above.
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah FAX: +1 801 581 4148 -
- Department of Mathematics, 110 LCB Internet e-mail: beebe at math.utah.edu -
- 155 S 1400 E RM 233 beebe at acm.org beebe at computer.org -
- Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe/ -
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah FAX: +1 801 581 4148 -
- Department of Mathematics, 110 LCB Internet e-mail: beebe at math.utah.edu -
- 155 S 1400 E RM 233 beebe at acm.org beebe at computer.org -
- Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe/ -
-------------------------------------------------------------------------------
More information about the tlbuild
mailing list