I believe I've now succeeded in building a Mac OS X 10.6 .app version
of Sage 6.3 (with help recorded in a separate thread).
I had to fix a mistake in the file src/bin/sage-bdist (a mistake
that affects the official OS X .app builds), and I also had to
make a few other changes to that file. (Details at the end of
this posting.)
I'd be happy to upload
sage-6.3-x86_64-Darwin-app.dmg
if somebody will tell me how to do it.
I'd also be happy to volunteer to produce future Mac OS X 10.6
.app versions.
I'm a bit unsure that I've done enough to validate the build:
(1) 'make' finishes with no error message at the end
(2) './sage -bdist' finishes with "** BUILD SUCCEEDED **"
(3) the 'file' commands
$ file
Sage-6.3.app/Contents/MacOS/Sage $ file
Sage-6.3.app/Contents/Resources/sage/local/bin/* $ file
Sage-6.3.app/Contents/Resources/sage/local/lib/* show all architectures are 64-bit.
(4)
Sage-6.3.app runs under OS X 10.6.8
(5) a sample workbook executes properly
Is there more that one should do to validate the build?
Is there any way to tell from inside Sage that it is running in
64-bit mode?
The output from '$ ./sage -bdist' showed some strange looking command line options:
-mmacosx-version-min=10.4
and
setenv MACOSX_DEPLOYMENT_TARGET 10.4
and gave a warning:
<built-in>:0: warning: Mac OS X version 10.5 or later is needed for use of the new objc abi
Why do these command line options refer to '10.4'?
==============================================
Procedure for building a Mac OS X 10.6 .app version of Sage 6.3
(1) The file src/bin/sage-bdist contains a mistake:
'ARCHES' should be 'ARCHS'.
The effect of the mistake is that the OS X application is
always built as 32-bit ('i386'). This can be seen by running
$ file
Sage-6.3.app/Contents/MacOS/Sagein the OS X 10.9 .app version currently being distributed
officially.
(2) sage-bdist uses `uname -m` to determine the target
architecture. Some of the older 64-bit Macintoshes can only boot into
a 32-bit system. These machines run 64-bit Sage perfectly well.
They can make and build 64-bit Sage perfectly well. The problem is that
`uname -m` returns 'i386'. I added an environment variable to
override `uname -m` (SAGE_APP_TARGET_ARCH==x86_64).
I also added some code to sage-bdist to append '-app' to the name
of the .dmg file produced.
I also added an environment variable (SAGE_APP_GZ=no) to prevent
the final compression stage, to save time during debugging
sage-bdist.
The procedure that worked for making and building the Mac OS X 10.6 .app
version of Sage 6.3 was:
$ git clone git://
github.com/sagemath/sage.git$ cd sage
$ export MAKE="make -j2"
$ $MAKE
$ cp ../sage-bdist-TARGET_ARCH-app src/bin/sage-bdist
$ git remote add trac git://
trac.sagemath.org/sage.git -t master
$ git fetch trac u/iandrus/trac-16796
$ git checkout FETCH_HEAD
$ export SAGE_APP_TARGET_ARCH=x86_64
$ export SAGE_APP_DMG=yes
$ export SAGE_APP_BUNDLE=yes
$ ./sage -bdist
It produced a somewhat smaller version of Sage 6.3 than the
officially distributed OS X 10.6 version. It looks like the size
difference is due to git stuff. Starting with a fresh clone
seems worthwhile (cloning is a small fraction of the 'make' time.)
Daniel