Skip to content
Kwankyu Lee edited this page Feb 12, 2023 · 1 revision

I'll put some info here on what I needed to build Sage on some exotic archs.

Related: #29143 - Add to tox.ini 32-bit linux environments and other architectures supported by docker

Raspberry Pi 4B 2GB running Raspbian Buster

  • Date: 01-01-2020

Building with MAKE='make -j3' make succeeded after a few hick-ups. There was a running sage. Building the docs succeeded. make ptestlong Total time for all tests: 31805.4 seconds cpu time: 40221.9 seconds cumulative wall time: 50534.2 seconds A lot of random(?) time outs and segmentation faults.

In a few days I will build sage on a Raspberry Pi 4B with 4 GB running on a USB-ssd

Raspberry Pi 4B running Raspbian Buster

Building with MAKE='make -j3' make succeeded partially. There was a running sage, building the docs failed.

Raspberry Pi running Ubuntu 16.04

As reported on sage-devel,

Upgrading to gcc-6, g++-6 and gfortran-6 from the ubuntu toolchain ppa and adding some swap made 'make build' work. There's still some error with building the documentation, but that's a separate issue.

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 (it seems to be an fsf gcc-4.7.3 bug, no problem with debian gcc 4.6.4). 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)

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", or GCC_CONFIGURE="--target=sparc64-sun-solaris2.10 --host=sparc64-sun-solaris2.10" to build a 64 bit compiler targetting 64 bit builds, but GCC fails to build, probably in stage 1, looking for sparc64-sun-solaris2.10-gcc. In fact passing --build=sparc64-sun-solaris2.10 and only this does the trick.
  • gf2x fails because of https://gforge.inria.fr/tracker/index.php?func=detail&aid=16531&group_id=1874&atid=6979, see #15273.
  • ATLAS fails, getting "Arithmetic Error" in dR2K.sum when UST2 arch is used, then it falls back to USIV but fails with a mixture of -m64 (because of SAGE64 I guess) and -m32 (why?!? wrong ATLAS setting?) mixture, then falls back to USIII where it succeeded. See http://sourceforge.net/p/math-atlas/support-requests/934/ .
Clone this wiki locally