[tlbuild] sparc-linux (bigendian?) failure in icu

Vladimir Volovich vvv at vsu.ru
Tue May 15 17:07:49 CEST 2012


"KB" == Karl Berry writes:

 KB> The build fails for me on sparc-linux, like this:
 KB> ..
 KB> LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH  ../bin/icupkg -tb /u/guest/karl/tl/Build/source/Work/libs/icu/../../../libs/icu/icu-49.1/data/in/icudt49l.dat ./out/icudt49b.dat
 KB> udata_swapDataHeader(): header size mismatch - headerSize 32768 infoSize 5120 length 1024
 KB> make[6]: *** [out/icudt49b.dat] Error 8
 KB> make[6]: Leaving directory `/home/1007/gu/karl/tl/Build/source/Work/libs/icu/icu-build/data'

FYI, I've got exactly the same failure on AIX (which is bigendian), and
it seems that Peter's guess is correct that the cause is that ICU uses
a weird approach with macros to detect bigendian (in platform.h) [and
other system properties, like existence of system header files], instead
of the autoconf tests.

FWIW, I've solved this problem by running

export CPPFLAGS="-DU_IS_BIG_ENDIAN=1"

before running the Build script. After this, the ICU was build
successfully, and icudt49b.dat was generated as part of the build.

Note that on sparc-solaris (also bigendian) I did not have such problem.
It seems that these macros just don't know about some platforms such as
sparc-linux and powerpc-aix.

On AIX, i've also used -DU_HAVE_STDINT_H=0 -DU_HAVE_INTTYPES_H=1 inside
CPPFLAGS, otherwise there was an error, because AIX 4.3 doesn't have stdint.h.

So you may try the above approach on sparc-linux, if you'd like.

Best wishes,
v.


More information about the tlbuild mailing list