Package: simgear Version: 1.0.0-1 Severity: serious simgear is now failing to build on alpha, hppa, and s390 with the following error:
if gcc -DHAVE_CONFIG_H -I. -I. -I../../simgear -I../.. -fPIC -pipe -g -O2 -D_REENTRANT -MT bitslib.o -MD -MP -MF ".deps/bitslib.Tpo" -c -o bitslib.o bitslib.c; \ then mv -f ".deps/bitslib.Tpo" ".deps/bitslib.Po"; else rm -f ".deps/bitslib.Tpo"; exit 1; fi In file included from nasal.h:7, from data.h:4, from bitslib.c:2: naref.h:20:3: error: #error Unrecognized CPU architecture [...] A full build log can be found at <http://buildd.debian.org/fetch.cgi?pkg=simgear&arch=alpha&ver=1.0.0-1&stamp=1198415406&file=log&as=raw>. The reason for this is the following code in naref.h: /* Rather than play elaborate and complicated games with * platform-dependent endianness headers, just detect the platforms we * support. This list is simpler and smaller, yet still quite * complete. */ #if (defined(__x86_64) && defined(__linux__)) || defined(__sparcv9) || \ defined(__powerpc64__) /* Win64 and Irix should work with this too, but have not been * tested */ # define NASAL_NAN64 #elif defined(_M_IX86) || defined(i386) || defined(__x86_64) || \ defined(__ia64__) || defined(_M_IA64) || defined(__ARMEL__) # define NASAL_LE #elif defined(__sparc) || defined(__ppc__) ||defined(__PPC) || \ defined(__mips) || defined(__ARMEB__) # define NASAL_BE #else # error Unrecognized CPU architecture #endif ... which is a cop-out, and a serious regression because the old code built and ran fine on all architectures. The above code should have __alpha__ added to the NASAL_LE list, and __hppa__, __s390__, and __s390x__ added to the NASAL_BE list. BTW, according to data.h, the NASAL_NAN64 option exists to support stupid union tricks: // On 64 bit systems, Nasal non-numeric references are stored with a // bitmask that sets the top 16 bits. As a double, this is a // signalling NaN that cannot itself be produced by normal numerics // code. The pointer value can be reconstructed if (and only if) we // are guaranteed that all memory that can be pointed to by a naRef // (i.e. all memory returned by naAlloc) lives in the bottom 48 bits // of memory. Linux on x86_64, Win64, Solaris and Irix all have such // policies with address spaces: [...] Linux doesn't document this rigorously, but testing // shows that it allows 47 bits of address space (and current x86_64 // implementations are limited to 48 bits of virtual space anyway). So // we choose 48 as the conservative compromise. So this assumes the kernel will never expose more than 48bits of address space to userspace processes -- a short-sighted and groundless assumption, the reason Linux hasn't "documented this rigorously" is because there is no such guarantee. The NASAL_NAN64 option should be thrown out for all Linux variants. -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ [EMAIL PROTECTED] [EMAIL PROTECTED] -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]