Differences between revisions 68 and 69
Revision 68 as of 2010-05-22 09:31:18
Size: 10158
Editor: DavidKirkby
Comment:
Revision 69 as of 2010-07-19 18:04:46
Size: 9953
Editor: DavidKirkby
Comment:
Deletions are marked like this. Additions are marked like this.
Line 9: Line 9:
Sage will build on Solaris 10 on the SPARC architecture. At the time of writing, version 4.4.2 is the latest, and that builds fine, as have several previous versions of Sage. Solaris 10 on SPARC should be officially supported on version 5.0 of Sage. '''There are some web pages which say the latest version of Sage to build on Solaris is 4.3.0.1. These are outdated. I will get them corrected asap''' Sage has been reliably on Solaris 10 on the SPARC architecture since around the start of 2010. '''There are some web pages which say the latest version of Sage to build on Solaris is 4.3.0.1. These are outdated. I will get them corrected asap'''
Line 117: Line 117:
It's advisable not to attempt a parallel build.

Running Sage on Sun's Solaris operating system.

This page, which is primarily maintained by David Kirkby, describes the current status of Sage on the various versions of Solaris and on various hardware (SPARC and x86).

A Solaris server running a slightly modified version of the Sage 4.3 source code can be found at http://t2nb.math.washington.edu:8000/ That's a Sun T5240 kindly donated by Sun, but installed in a Solaris zone. This should be considered experimental at this point in time. It was first set up on the 27th December 2009.

Solaris 10 on SPARC hardware.

Sage has been reliably on Solaris 10 on the SPARC architecture since around the start of 2010. There are some web pages which say the latest version of Sage to build on Solaris is 4.3.0.1. These are outdated. I will get them corrected asap

Sage has been built on several Solaris 10 SPARC systems, ranging from old machines to current models and from the first release of Solaris 10 (03/2005 edition) to the latest (05/2009 edition). So Sage should build on your Solaris 10 SPARC machine. Specific hardware/software combinations on which Sage has been built are

  • Sun T5240 CoolThreads server with:

    • 2 x 1167 MHz T2+ Coolthreads processors
    • 16 cores
    • 128 threads
    • 32 GB RAM
    • Solaris 10 update 6 (05/2009 edition).
  • A Sun Blade 2000 workstation with:
    • 2 x 1200 MHz UltraSPARC III+ processors.
    • 8 GB RAM
    • Solaris 10 update 7 (05/2009 release) which at the time of writing (December 2009) is the latest release of Solaris 10.
  • Sun Netra T1 server with:
    • 1 x 500 MHz UltraSPARC-IIe processor
    • 1536 MB RAM
    • Solaris 10 03/2005 (the very first Solaris 10 release).
  • A Sun Blade 1000 workstation with:
    • 2 x 900 MHz UltraSPARC III+ processors.
    • 2 GB RAM
    • Solaris 10 03/2005 (the very first Solaris 10 release).

Sage will run in a Solaris zone, so if you want to make a public access server, with negligible security risks, then you can do so.

There are a problems with the build on Solaris 10, all of which we hope to resolve.

  • Only GCC >= 4.0.1 can be used to build Sage. Supporting Sun Studio is an aim, but it's unlikely to happen soon.

  • Open Solaris x64 in 64-bit mode is expected to be supported some time during 2010. Both David Kirkby and Jaap Spies are working on getting this to work.

Solaris 10 on x86 hardware.

This has not been tested, but Sage 4.3 would have a high probability of working. You will need all the tricks described below for Solaris 10 on SPARC and possibly some others too. Let us know if you try it by subscribing to the sage-devel mailing list at http://groups.google.com/group/sage-devel

Open Solaris (also known as Solaris 11) on SPARC hardware

This has not been tested and will almost certainly not work. We are afraid to say nobody currently developing Sage uses Open Solaris on SPARC hardware. Given the number of users of Open Solaris on SPARC hardware is so small, it is doubtful much effort will be put into a port. But if others wish to submit patches, they can do.

Open Solaris (also known as Solaris 11) on x86 hardware

Unfortunately, as of December 27th 2009, the latest release of Sage will not build on Open Solaris. There are several issues which we are actively working on resolving.

How to build Sage on Solaris 10 with SPARC hardware

As stated above, this should work, but the process is not as simple as one might like it to be.

Stage `1 - make sure you have a suitable gcc, if not build one or download one

Sage has been built with gcc 4.4.1 and 4.4.2, but should work with any gcc >= 4.0.1 that includes support for C, C++ and Fortran. Although I've not used it myself, many say gcc 4.3.4 is the most stable gcc.

Solaris 10 only ships with an old version of gcc (3.4.3), which is not built with Fortran support. Sage needs a newer version of gcc than that, and it must be configured to support Fortran. (I believe the binary from Sunfreeware does not support Fortran). If you do not have gcc >= 4.0.1 with Fortran support, you will need to:

Very old releases of releases of Solaris 10 ship with a pretty broken gcc in /usr/sfw/bin. You might need to apply patch 123647 on old (pre 2007) releases before you can even build a later gcc. Exactly how old, and what version of the patch is not known, but anything released during mid-2008 or later should be fine. It is highly recommended that you configure gcc >4.0.1 to use both the Sun linker and Sun assembler, though Sage should build if the GNU tools are used. A configuration which is known to work is:

drkirkby@kestrel:~$ gcc -v
Using built-in specs.
Target: sparc-sun-solaris2.10
Configured with: ../gcc-4.4.2/configure --prefix=/opt/kirkby/gcc-4.4.2/ 
--with-gmp=/usr/local/ --with-mpfr=/usr/local 
--with-build-time-tools=/usr/ccs/bin --enable-languages=c,c++,fortran
Thread model: posix
gcc version 4.4.2 (GCC) 

Stage 2 Set up a build environment.

This is a bit tricky. It's easier to do than explain, but I'll try to explain how to do it.

Sage needs the GNU versions of make and tar to build. They must be called make and tar too, and not gmake or gtar. You do not need particularly new versions of these tools, so those in /usr/sfw/bin will be fine. It is suggested you do this as follows

$ mkdir $HOME/bins-for-sage
$ cp /usr/sfw/bin/gmake $HOME/bins-for-sage/make
$ cp /usr/sfw/bin/gtar $HOME/bins-for-sage/tar

When gcc is configured, it can be built to use either the Sun or the GNU linker and assembler. Lots of code in Sage builds shared libraries, which need appropriate compiler and linker options. , All the options for building shared libraries are different between the GNU and Sun linkers. The sage build process makes the assumption that whatever linker gcc is configured to use, will be the first linker in your pathr So if you use the GNU linker (not recommended), which is likely to be installed somewhere like /usr/local/bin, then it's essential that /usr/local/bin is your path before /usr/ccs/bin. Conversely, if your gcc is configured to use the Sun linker (which we recommend), then it's essential that /usr/ccs/bin is in your path before anywhere that might contain a GNU linker.

The easiest way to find out what linker your gcc uses is to type

kirkby@t2:[~] $ gcc -v
Using built-in specs.
Target: sparc-sun-solaris2.10
Configured with: ../gcc-4.4.1/configure --prefix=/usr/local/gcc-4.4.1-sun-linker/ 
--with-as=/usr/ccs/bin/as --without-gnu-as 
--with-ld=/usr/ccs/bin/ld --without-gnu-ld --enable-languages=c,c++,fortran 
--with-mpfr-include=/usr/local/include --with-mpfr-lib=/usr/local/lib 
--with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib 
CC=/usr/sfw/bin/gcc CXX=/usr/sfw/bin/g++
Thread model: posix
gcc version 4.4.1 (GCC) 

Note in the above the linker is /usr/ccs/bin/ld.

Sage uses the Fortran compiler, which itself uses a library called libgfortran.so The location of libgfortran.so which will be in the lib directory under the prefix were gcc was installed. (so in the above case, there will be the file /usr/local/gcc-4.4.1-sun-linker/lib/libgfortran.so) Next type:

$ export SAGE_FORTRAN=/usr/local/gcc-4.4.1-sun-linker/bin/gfortran
$ export SAGE_FORTRAN_LIB=usr/local/gcc-4.4.1-sun-linker/lib/libgfortran.so

Stage 3 Type 'make' and wait for Sage to build

$ make

Building Sage will take a long time, particularly on the sun4v machines, as one part of sage (ATLAS) spends ages tuning itself to run on sun4v machines. It has some defaults for sun4u, but not sun4v. We hope to get some defaults into ATLAS at some point, which should dramatically reduce the time to build Sage on sun4v machines. Some very rough estimates of build times for Solaris hardware are:

Hardware

Time to build (days)

Sun Blade 2000, 2 x 1.2 GHz

1

Sun T5240, 16 core, 1167 MHz

1.5

Sun Netra T1, 500 MHz

3-4

As you can see, building Sage is not quick!!

Stage 4. Start using Sage!

kirkby@t2:[~/sage-4.3] $ ./sage
----------------------------------------------------------------------
| Sage Version 4.3-patched-for-Solaris(SPARC), Built 2009-12-26      |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
Setting permissions of DOT_SAGE directory so only you can read and write it.
sage: notebook()
The notebook files are stored in: sage_notebook.sagenb



Please choose a new password for the Sage Notebook 'admin' user.
Do _not_ choose a stupid password, since anybody who could guess your password
and connect to your machine could access or delete your files.
NOTE: Only the md5 hash of the password you type is stored by Sage.
You can change your password by typing notebook(reset=True).

Enter new password: ******
Retype new password: ******

Please login to the notebook with the username 'admin' and the above password.
Password changed for user 'admin'.
**************************************************
*                                                *
* Open your web browser to http://localhost:8000 *
*                                                *
**************************************************

Open your browser at http://localhost:8000 where hopefully you should be able to create accounts and start using sage. Sage is a complex bit of Software, so do not expect to learn to use it in 5 minutes.