[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