The fact that Sage uses fat binary to build its binaries is fine as it is only done by a very small number of very capable developers on an even smaller number of modern physical machines. Maintaining fat binary is not a problem for this restricted pool.
And it is the right thing for Sage to do. The resulting binaries should be much faster than a generic C build! But it is a build-once-use-many technology. Unless individuals are building fat binaries for many users, we absolutely definitely won't be able to support them. If individuals use it for their own individual purposes, they are on their own. Bill. On Sunday, 24 February 2013, leif wrote: > Bill Hart wrote: > >> Yes, it looks like you are right. I've added it to the MPIR todo list >> to fix this in our configure. >> > > Thanks. Let us know when an upstream patch is available. > > (The easiest work-around for the Sage spkg is perhaps just unsetting ABI > if config.guess matches core-*.) > > Not sure which code paths should be selected for the Intel Core (on 32-bit > systems at least "x86"), and whether other CPUs are missing (besides the > Pentium4 Prescott, as mentioned). > > > It is btw reproducible on other (capable, x86/x86_64) systems: > > > $ ../mpir-2.6.0/configure -v --host=core-pc-linux-gnu > ... > checking ABI=standard > checking compiler core-pc-linux-gnu-gcc -O2 ... no > checking compiler gcc -O2 ... yes > checking for core-pc-linux-gnu-gcc... gcc > checking whether the C compiler works... yes > checking for C compiler default output file name... a.out > checking for suffix of executables... > checking whether we are cross compiling... no > ... > using ABI="standard" > CC="gcc -std=gnu99" > CFLAGS="-O2" > CPPFLAGS="" > MPN_PATH=" generic" > ... > > (Note the MPN path.) > > > $ ../mpir-2.6.0/configure -v --host=core-pc-linux-gnu ABI=32 > configure: WARNING: if you wanted to set the --build type, don't use > --host. > If a cross compiler is detected then cross compile mode will be used > checking build system type... bobcat-unknown-linux-gnu > checking host system type... core-pc-linux-gnu > checking for a BSD-compatible install... /usr/bin/install -c > checking whether build environment is sane... yes > checking for core-pc-linux-gnu-strip... no > checking for strip... strip > checking for a thread-safe mkdir -p... /bin/mkdir -p > checking for gawk... gawk > checking whether make sets $(MAKE)... yes > checking whether to enable maintainer-specific portions of Makefiles... no > configure: error: ABI=32 is not among the following valid choices: standard > > > > As for fat binary, sure, if the user requests it, no problem. I don't >> warrant it'll work on arbitrary systems though. I just thought this >> was the default for any Sage build on a 32 bit x86, which would be >> wrong. >> > > Well, we use it when building the Sage binary distributions, too, but > people are encouraged to build from source anyway... (Still many users > seem to prefer just grabbing these, unfortunately.) > > > -leif > > > On 24 February 2013 17:37, leif <not.rea...@online.de> wrote: > > Bill Hart wrote: > > > Is it passing --enable-fat to MPIR's configure? If it is, then it > shouldn't be. > > > > If SAGE_FAT_BINARY=yes (set by the user, on Linux x86/x86_64 only IIRC). > Why shouldn't we? > > > But the real problem here seems to be an upstream (i.e., MPIR) bug: > > While config.guess yields core-pc-linux-gnu on the failing system, > 'core[-*]' isn't handled by MPIR's configure (such that abilist finally > contains only the dummy value, not '32', which we request): > > > ... > > # abilist needs to be non-empty, "standard" is just a generic name here > abilist="standard" > > ... > > case $host in # from config.guess (Sage doesn't configure with --host=... > or the like) > > ... > > # AMD and Intel x86 configurations, including AMD64 > # > # Rumour has it gcc -O2 used to give worse register allocation than just > # -O, but lets assume that's no longer true. > # > # -m32 forces 32-bit mode on a bi-arch 32/64 amd64 build of gcc. -m64 > is > # the default in such a build (we think), so -m32 is essential for > ABI=32. > # This is, of course, done for any $host_cpu, not just x86_64, so we can > # get such a gcc into the right mode to cross-compile to say i486-*-*. > # > # -m32 is not available in gcc 2.95 and earlier, hence cflags_maybe to > use > # it when it works. We check sizeof(long)==4 to ensure we get the right > # mode, in case -m32 has failed not because it's an old gcc, but because > # it's a dual 32/64-bit gcc without a 32-bit libc, or whatever. > # > i?86*-*-* | k[5-8]*-*-* | pentium*-*-* | athlon-*-* | viac3*-*-* | > x86_64-*-* | netburst-*-* | netburstlahf-*-* | k8-*-* | k10-*-* | k102-*-* > | > k103-*-* | core2-*-* | penryn-*-* | nehalem-*-* | westmere-*-* | > sandybridge-*-* | atom-*-* | nano-*-* | bobcat-*-* | bulldozer-*-*) > abilist="32" > cclist="gcc icc cc" > gcc_cflags="-O2 $fomit_frame_pointer" > case $host in > *-*-linux-gnu) > gcc_32_ldflags="-Wl,-z,**noexecstack" ;; > esac > gcc_32_cflags_maybe="-m32" > icc_cflags="-no-gcc" > icc_cflags_optlist="opt" > icc_cflags_opt="-O3 -O2 -O1" > any_32_testlist="sizeof-long-**4" > CALLING_CONVENTIONS_OBJS='**x86call.lo x86check$U.lo' > > ... > > case $host_cpu in > i386*) path="x86/i386 x86" ;; > i486*) path="x86/i486 x86" ;; > i586 | pentium) path="x86/pentium x86" ;; > pentiummmx) path="x86/pentium/mmx x86/pentium x86" ;; > i686 | pentiumpro) path="x86/p6 x86" ;; > pentium2) path="x86/p6/mmx x86/p6 x86" ;; > pentium3) path="x86/p6/p3mmx x86/p6/mmx x86/p6 x86";; > k6[23]) path="x86/k6/k62mmx x86/k6/mmx x86/k6 x86" ;; > k6) path="x86/k6/mmx x86/k6 x86" ;; > athlon | k7 | x86_64 | atom) path="x86/k7/mmx x86/k7 x86" ;; > k102 | k103 | bulldozer) path="x86/k7/mmx/k8/k10/k102 > x86/k7/mmx/k8/k10 x86/k7/mmx/k8 x86/k7/mmx x86/k7 x86" ;; > k10) path="x86/k7/mmx/k8/k10 x86/k7/mmx/k8 > x86/k7/mmx x86/k7 x86" ;; > k8 | bobcat) path="x86/k7/mmx/k8 x86/k7/mmx x86/k7 x86" > ;; > core2 | penryn) path="x86/core2 x86" ;; > i786 | pentium4) path="x86/pentium4/sse2 x86/pentium4/mmx > x86/pentium4 x86" ;; > nehalem | westmere | sandybridge) path="x86/nehalem x86" ;; > prescott | netburst | netburstlahf) path="x86/pentium4/sse2 > x86/pentium4/mmx x86/pentium4 x86" ;; > # VIA/Centaur processors, sold as CyrixIII and C3. > nano | viac32) path="x86/p6/p3mmx x86/p6/mmx x86/p6 x86";; > viac3*) path="x86/pentium/mmx x86/pentium x86";; > *) path="x86" ;; > esac > > ... > > > (There are more case distinctions not matching 'core[-*]'. Looks like > 'prescott-*' was also missing in the /outer/ pattern, whil > > -- You received this message because you are subscribed to the Google Groups "mpir-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to mpir-devel+unsubscr...@googlegroups.com. To post to this group, send email to mpir-devel@googlegroups.com. Visit this group at http://groups.google.com/group/mpir-devel?hl=en. For more options, visit https://groups.google.com/groups/opt_out.