Version 10 (modified by 9 years ago) (diff) | ,
---|
I'll put some info here on what I needed to build Sage on some exotic archs.
Sage 5.13
Raspberry Pi running Raspbian (armv6 with hard floats)
- Surprisingly ATLAS built without problems, surely because ATLAS tries to be smart only for ARMv7.
- for some libs (I'd say linbox or libmari(e)) the RAM was not large enough, I had to add some swap space.
- libmarie triggers an ICE in GCC. Lowering optimization to "-O0" solves the problem.
- tachyon fails to build but that's just because our install script does not even try.
ARMv7 board running Ubuntu 12.04 (armv7 with hard floats)
- ATLAS has to be tweaked to build with hard floats. Follow instructions at http://math-atlas.sourceforge.net/errata.html#armhardfp. I also had to bypass throttling detection: modify
- pil did not build because of libjpeg misdetection (the lib is installed, the headers aren't, so pil thinks it can include jpeg support but then compiling fails, kind of like #7273). I modified setup.py so that it does not even try to detect libjpeg.
Sun Ultrasparc T1/2 running debian/sparc (64 bit kernel, 32 bit userland, 32 bit Sage build)
- Be sure to export ABI=32 so that MPIR and so on are not too smart and don't try to build 64 bit libs.
- PARI fails to build because it tries to include asm for 64 bit sparc v9 but gcc defaults to 32 bit sparc v8. Passing CFLAGS="-m32 -O3 -Wa,-xarch=v8plus -mcpu=ultrasparc -g" solves this first issue. Then it tries to feed "-mimpure-text" to gcc which is not supported on linux anymore, modify config/get_dlld (this is fixed upstream in rev b2bc4faa4).
- ecl fails after building the minimal initial version of ecl, lwowering the optimization to -O1 solves this.
- tachyon fails for the same stupid reason as on the raspberry pi.
- flint fails because we have to feed gcc with -mno-relax when packing shared obj. Fixed upstream at 38d45090d5e46e7237 and in 2.4.
Sun Ultrasparc T2 running Solaris 10 (64 bit kernel, 32 bit userland, 32 bit Sage build)
- Singular fails to buid because my system is oddly configured and a fix for very old versions of gcc includes some headers it should not. This is fixed upstream.
- FFLAS-FFLAPACK fails to build. (The new?) ATLAS needs to be linked with "-lrt" (realtime lib), see http://trac.sagemath.org/ticket/10508?cversion=1&cnum_hist=415#comment:407.
Sun Ultrasparc T1/2 running debian/sparc (64 bit kernel, 32 bit userland, 64 bit Sage build)
- Be sure to export something like CC="gcc -m64" if your gcc builds 32 bit objects by default. ABI=64 should not hurt.
- PARI tries to feed "-mimpure-text" to gcc which is not supported on linux anymore, modify config/get_dlld (this is fixed upstream in rev b2bc4faa4).
- tachyon fails for the same stupid reason as before.
- flint fails because we have to feed gcc with -mno-relax when packing shared obj. Fixed upstream at 38d45090d5e46e7237 and in 2.4.
- Singular fails, ld complaining about icompatibility between sparcv9 and sparc. -melf64_sparc should be passed to ld, through SLDFLAGS, defined in Singular/configure.in
Sun Ultrasparc T2 running Solaris 10 (64 bit kernel, 32 bit userland, 64 bit Sage build)
- Don't forget to set SAGE64=yes.
- This is not used by gcc, to build gcc pass something like CC="gcc -m64" or CFLAGS="-m64", I also had to pass GCC_CONFIGURE="--target=sparc64-sun-solaris2.10 --host=sparc64-sun-solaris2.10" to build a 64 bit compiler targetting 64 bit builds.
- GCC fails to build, probably in stage 1, looking for sparc64-sun-solaris2.10-gcc.