Differences between revisions 17 and 75 (spanning 58 versions)
Revision 17 as of 2008-03-24 10:24:09
Size: 16550
Comment: add new info about numpy & friends together with Python 2.5.2
Revision 75 as of 2009-05-14 11:57:33
Size: 1566
Comment: add link to Sage 4.0 status page
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
 * Cython {{{ 20:58 < mabshoff> There is also a bug in the way Cython builds its extensions.
20:58 < mabshoff> It needs to use the flags python was build with, not some random stuff people thing
20:58 < mabshoff> think is good.
20:58 < mabshoff> I told Robert about it.
This page is about the seemingly endless port of Sage to 64 bit OSX. Here is a list of build notes for various releases:
Line 8: Line 5:
But:  * [[/sage-4.0|Sage 4.0 notes]]
 * [[/sage-3.4.2|Sage 3.4.2 notes]] - this is outdated
 * [[/sage-3.3|Sage 3.3 notes]] - this is outdated
 * [[/sage-3.2.3|Sage 3.2.3 notes]] - this is outdated
 * [[/sage-3.0.2|Sage 3.0.2 notes]] - this is outdated
Line 10: Line 11:
[06:36] <mabshoff> But it doesn't match the python flags. I checked on it once.
[06:37] <was_> It's distutils.
[06:37] <was_> Cython doesn't have anything to do with the flags.
}}}
Note that it is possible to get Sage working to some extend, but it would be nice to get this port done once and for all. The main problem is for Sage to pass all of its doctests.
Line 15: Line 13:
= Building Python 2.5.2 on OSX = == Build Instructions ==
Line 17: Line 15:
  ./configure --prefix=/Users/mabshoff/python-2.5.2-64 --with-gcc="gcc -m64" --enable-toolbox-glue=false The fortran.spkg shipped with Sage does not work. So, unpack the sources, delete the fortan spkg and drop in
Line 19: Line 17:
make && make install works, but there are various error message from gcc since it fails to build the toolbox glue on OSX, despite the above command disabling it.  http://sage.math.washington.edu/home/mabshoff/spkgs/fortran-OSX64-20090120.spkg
Line 21: Line 19:
= Build Order of packages for 2.10.alpha2 = Then:
Line 23: Line 21:
 * dir-0.1 - sources !solve!
 * prereq-0.3 - sources !solve!
 * sage_scripts-2.10.alpha2 - sources !solve!
 * bzip2-1.0.4 - 32 bit enough? !solve!
 * conway_polynomials-0.2 - database? !solve!
 * gmp-4.2.1.p12 - must be 64 bit !solve!
 * termcap-1.3.1 - must be 64 bit !solve!
 * readline-5.2.p0 - must be 64 bit !solve!
 * pari-2.3.3 - must be 64 bit !solve!
 * ntl-5.4.1.p10 - must be 64 bit !solve!
 * cremona-20071219.p1 - must be 64 bit !solve!
 * graphs-20070722 - sources? !solve!
 * elliptic_curves-0.1 - don't know !solve!
 * extcode-2.10.alpha2 - sources? !solve!
 * flint-1.05 - must be 64 bit !solve!
 * zlib-1.2.3.p3 - must be 64 bit !solve!
 * sqlite-3.5.3.p1 - must be 64 bit !solve!
 * libgpg_error-1.5 - must be 64 bit !solve!
 * libgcrypt-1.2.4 - must be 64 bit !solve!
 * opencdk-0.5.9 - must be 64 bit !solve!
 * gnutls-1.6.3 - must be 64 bit !solve!
 * libpng-1.2.22.p3 - must be 64 bit !solve!
 * python-2.5.1.p11 - must be 64 bit - see above
 * freetype-2.3.5 - must be 64 bit
 * gd-2.0.33.p5 - must be 64 bit - distutils (partially?)
 * gdmodule-0.56.p4 - must be 64 bit - distutils
 *
fortran-20071120.p3 - must be 64 bit - build gcc 4.2.2 gfortran from source
 * lapack-20071123.p0 - must be 64 bit
 * atlas-3.8.p7 - skipped anyway
 * gsl-1.9 - must be 64 bit
 * iml-1.0.1.p8 - must be 64 bit
 * ipython-0.8.1.p1 - python? - distutils?
 * givaro-3.2.6.p5 - must be 64 bit
 * linbox-20070915.p3 - must be 64 bit
 * f2c-20070816 - must be 64 bit
 * blas-20070724 - must be 64 bit
 * numpy-20080104-1.0.4.p1 - must be 64 bit - distutils
 * matplotlib-0.91.1.p1 - must be 64 bit - distutils
 * mercurial-0.9.5.p0 - must be 64 bit
 * mpfr-2.3.0.p0 - integarted into mpfr-2.3.0.p1
 * pexpect-2.0.p1 - must be 64 bit - distutils
 * mpfi-1.3.4-cvs20071125.p4 - must be 64 bit
 * pycrypto-2.0.1.p1 - python - distutils
 * cython-0.9.6.9 - python - distutils
 * sympy-0.5.7 - python - distutils
 * zodb3-3.7.0 - python only? - distutils
 * networkx-0.35.1 - pure python - distutils
 * quaddouble-2.2.p7 - must be 64 bit
 * python_gnutls-1.1.1 - python - distutils
 * twistedweb2-20070619 - python only? - distutils
 * twisted-2.5.0.p8 - python only? - distutils
 * singular-3-0-4-1-20071209.p3 - must be 64 bit
 * scons-0.97 - python only - distutils
 * symmetrica-2.0.p0 - must be 64 bit
 * libfplll-2.1.6-20071129 - must be 64 bit
 * polybori-0.1-r6 - must be 64 bit
 * rpy-1.0.1.p0 - must be 64 bit
 * r-2.6.1.p7 - must be 64 bit
 * rubiks-20070912.p0 - must be 64 bit
 * libm4ri-20071224 - must be 64 bit
 * sage-2.10.alpha2 - must be 64 bit
 * doc-2.10.alpha2 - doc
 * examples-2.10.alpha2 - doc
 * gap-4.4.10.p0 - 32 bit enough for now
 * clisp-2.41.p12 - 32 bit enough for now
 * maxima-5.13.0.p2 - 32 bit enough for now
 * genus2reduction-0.3 - depends on libpari, so needs to be 64 bits
 * lcalc-20070107.p0 - depends on libpari, so needs to be 64 bits
 * sympow-1.018.1.p3 - 32 bit enough for now
 * cddlib-094b.p0 - 32 bit enough for now
 * gfan-0.2.2.p2 - 32 bit enough for now
 * ecm-6.1.3 - 32 bit enough for now
 * tachyon-0.98beta.p3 - 32 bit enough for now
 * weave-0.4.9 - 32 bit enough for now
 * flintqs-20070817.p1 - 32 bit enough for now
 * palp-1.1 - 32 bit enough for now
 * moin-1.5.7.p2 - python
 * ipython1-20070130 - python
 * scipy-20071020-0.6.p2 - python only?
 * scipy_sandbox-20071020 - python only?
 * cvxopt-0.9.p5 - no clue
 * jmol-11.5.2 - java
 * export SAGE64=yes
 * make
Line 107: Line 24:
== Known Problems ==
Line 108: Line 26:
= Build Notes =
{{{
Sage 2.10.alpha2 port to 64 bit OSX:
 * Sage 3.4.2: Builds out of the box, but needs various patches to start up and pass all but one doctest - see [[/sage-3.4.2|Sage 3.4.2 notes]].
 * Sage 3.4.1:
  * FLINT.spkg fails to build due to buglet in spkg-check. A fix is at #5817
  * segfaults at startup due to libSingular problems - same issue as above. Relevant ticket: #5839. This ticket does not fix the problem, but exposes other race conditions in the dealloc code in libSingular on x86-64, i.e. sage.math
 * Sage 3.4: segfaults at startup due to libSingular problems (it is basically the same segfault that happened on exit in Sage 3.3)
Line 112: Line 32:
prereq-0.3: == spkg status ==
Line 114: Line 34:
if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   SAGE_OPT="-O2 -g -m64 " && export SAGE_OPT
fi

More changes in spkg/base/bzip2-1.0.4-install

#####################################################################
gmp-4.2.1.p12: broken, need to update to 4.2.2, skip patching

add ABI=64, otherwise set ABI=32

Maybe: Our gmp 4.2.1 is FUBAR, i.e. Cygwin problems

Important: add extern __inline__ gmp-h.in fix for Darwin

#####################################################################
termcap-1.3.1:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   CFLAGS="-O2 -g -m64 " && export CFLAGS
fi

Note: Fix dylib build on OSX!

#####################################################################
readline-5.2.p0:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   CFLAGS="-O2 -g -m64 " && export CFLAGS
fi

Note: Fix dylib build on OSX!

#####################################################################
pari-2.3.3:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   CFLAGS="-g -m64 " && export CFLAGS
fi

        GP/PARI CALCULATOR Version 2.3.3 (released)
   i386 running darwin (x86-64/GMP kernel) 64-bit version
  compiled: Jan 13 2008, gcc-4.0.1 (Apple Inc. build 5465)
   (readline not compiled in, extended help available)


#####################################################################
ntl-5.4.1.p10

in build():

     if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
         CFLAGS=" -m64 $CFLAGS"
         CXXFLAGS=" -m64 $CXXFLAGS"
     fi

libntl.dylib is 32 bits. In patches/ntl_makefile add "-m64":
libntl.dylib: $(OBJ)
        $(CXX) -m64 -fPIC -dynamiclib -undefined dynamic_lookup -o libntl.dylib $(OBJ) $(GMP_LIBDIR) $(GMP_LIB)

#####################################################################
cremona-20071219.p1:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
    echo "64 bit MacIntel build"
    PICFLAG=-m64
    export PICFLAG
fi

OPTFLAG overwrites CC and CXX

#####################################################################
flint-1.05

spkg-install:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   FLINT_TUNE=" -fPIC -m64"
fi

In the dylib Darwin case:

    if ["$SAGE64" = "yes" ]; then
       $MAKE libflint.dylib64
    else
       $MAKE libflint.dylib
    fi

in src/makefile add

libflint.dylib64: $(FLINTOBJ)
        $(CC) -m64 -single_module -fPIC -dynamiclib -o libflint.dylib $(FLINTOBJ) $(LIBS)

spkg-check:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   FLINT_TUNE=" -fPIC -m64"
fi


#####################################################################
zlib-1.2.3.p3:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   CFLAGS=" -m64 $CFLAGS -fPIC -g -I\"$SAGE_LOCAL/include\""
else
   CFLAGS="$CFLAGS -fPIC -g -I\"$SAGE_LOCAL/include\""
fi
export CFLAGS

#####################################################################
sqlite-3.5.3.p1:

bsd:standard mabshoff$ tar xjf sqlite-3.5.3.p1.spkg
tar: sqlite-3.5.3.p1/src/test: time stamp 2038-01-18 19:14:07 is 947212601 s in the future

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   CFLAGS="-O2 -g -m64 "; export CFLAGS
   CXXFLAGS="-O2 -g -m64 "; export CXXFLAGS
fi

#####################################################################
plibgpg_error-1.5

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   CFLAGS="-O2 -g -m64 "; export CFLAGS
   CXXFLAGS="-O2 -g -m64 "; export CXXFLAGS
fi

#####################################################################
libgcrypt-1.2.4

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   CFLAGS="-O2 -g -m64 "; export CFLAGS
   CXXFLAGS="-O2 -g -m64 "; export CXXFLAGS
fi

#####################################################################
opencdk-0.5.9

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   CFLAGS="-O2 -g -m64 "; export CFLAGS
   CXXFLAGS="-O2 -g -m64 "; export CXXFLAGS
fi

#####################################################################
gnutls-1.6.3

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   CFLAGS="-O2 -g -m64 "; export CFLAGS
   CXXFLAGS="-O2 -g -m64 "; export CXXFLAGS
fi

#####################################################################
libpng-1.2.22.p3:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   CFLAGS=" -m64 $CFLAGS -fPIC -g -I\"$SAGE_LOCAL/include\""
else
   CFLAGS="$CFLAGS -fPIC -g -I\"$SAGE_LOCAL/include\""
fi
export CFLAGS

Note: gd-2.0.35 requires a dynamic libpng12.dylib

#####################################################################
python:


Makefile.pre.in: add "-m64" to LDFLAGS

export EXTRA_CFLAGS="-m64"
./configure --prefix="$SAGE_LOCAL" --without-libpng --enable-unicode=ucs4 --disable-toolbox-glue

posixmodule.c: setpgrp shit - unsolved - ifdef around it.

in local/lib/python2.5/config/Makefile: add -m64 to OPT
#####################################################################
freetype-2.3.5:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   CFLAGS="-O2 -g -m64 "; export CFLAGS
   CXXFLAGS="-O2 -g -m64 "; export CXXFLAGS
fi

#####################################################################
gd-2.0.33.p5:

Update to 2.0.35

# needed to pick up zlib.h
if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   CFLAGS=" -m64 $CFLAGS -fPIC -g -I\"$SAGE_LOCAL/include\" -I$SAGE_LOCAL/include/freetype2/"
else
   CFLAGS="$CFLAGS -fPIC -g -I\"$SAGE_LOCAL/include\" -I$SAGE_LOCAL/include/freetype2/"
fi
export CFLAGS

Makefile.am: add "-m64"

#####################################################################
fortran-20071120.p3:

gfortran 4.2.2 compiled from scratch.

Add "-m64" to sage_fortran options, link x86_64 libgfortran.dylib

#####################################################################
iml-1.0.1.p8
if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   CFLAGS="-O2 -g -m64 "; export CFLAGS
   CPPFLAGS="-O2 -g -m64 "; export CPPFLAGS
fi

#####################################################################
givaro-3.2.6.p5:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   CFLAGS="-O2 -g -m64 "; export CFLAGS
   CPPFLAGS="-O2 -g -m64 "; export CPPFLAGS
fi

#####################################################################
linbox-20070915.p3:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   CFLAGS="-O2 -g -m64 "; export CFLAGS
   CXXFLAGS="-O2 -g -m64 "; export CXXFLAGS
   CPPFLAGS="-O2 -g -m64 "; export CPPFLAGS
fi

#####################################################################
f2c-20070816:

uncomment "CFLAGS = -O" in f2c/makefile
uncomment "CFLAGS = -O -fPIC" in libf2c/makefile

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   CFLAGS="-O2 -g -m64 "
else
   CFLAGS="-fPIC"
fi

Dual architecture static lib is created, but f2c works

#####################################################################
mpfr-2.3.0.p0:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   CFLAGS="-O2 -g -m64 "; export CFLAGS
   CXXFLAGS="-O2 -g -m64 "; export CXXFLAGS
   CPPFLAGS="-O2 -g -m64 "; export CPPFLAGS
fi

#####################################################################
mpfi:

if [ `uname` = "Darwin" -a "$SAGE64" = "yes" ]; then
   echo "64 bit MacIntel"
   CFLAGS="-O2 -g -m64 "; export CFLAGS
   CXXFLAGS="-O2 -g -m64 "; export CXXFLAGS
   CPPFLAGS="-O2 -g -m64 "; export CPPFLAGS
fi


#####################################################################
quaddouble-2.2.p7:

CXXFLAGS='-fPIC -O3 -Dx86 -m64'
export CXXFLAGS

#####################################################################
twisted-2.5.0.p8: depends on pymactoolbox.h?

gcc -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -m64 -I/Users/mabshoff/sage-2.10.alpha2/local/include/python2.5 -c twisted/internet/cfsupport/cfsupport.c -o build/temp.macosx-10.3-i386-2.5/twisted/internet/cfsupport/cfsupport.o -w
In file included from twisted/internet/cfsupport/cfsupport.c:8:
/Users/mabshoff/sage-2.10.alpha2/local/include/python2.5/pymactoolbox.h:138: error: syntax error before ‘Track’
/Users/mabshoff/sage-2.10.alpha2/local/include/python2.5/pymactoolbox.h:140: error: syntax error before ‘Movie’
/Users/mabshoff/sage-2.10.alpha2/local/include/python2.5/pymactoolbox.h:142: error: syntax error before ‘MovieController’
/Users/mabshoff/sage-2.10.alpha2/local/include/python2.5/pymactoolbox.h:146: error: syntax error before ‘UserData’
/Users/mabshoff/sage-2.10.alpha2/local/include/python2.5/pymactoolbox.h:148: error: syntax error before ‘Media’
error: command 'gcc' failed with exit status 1
Error: Subprocess exited with result 1 for project core
Error installing Twisted networking framework

real 0m5.832s
user 0m1.288s
sys 0m0.744s
sage: An error occurred while installing twisted-2.5.0.p8
Please email sage-devel http://groups.google.com/group/sage-devel
explaining the problem and send the relevant part of
of /Users/mabshoff/sage-2.10.alpha2/install.log. Describe your computer, operating system, etc.
If you want to try to fix the problem, yourself *don't* just cd to
/Users/mabshoff/sage-2.10.alpha2/spkg/build/twisted-2.5.0.p8 and type 'make'.
Instead type "/Users/mabshoff/sage-2.10.alpha2/sage -sh"
in order to set all environment variables correctly, then cd to
/Users/mabshoff/sage-2.10.alpha2/spkg/build/twisted-2.5.0.p8
(When you are done debugging, you can type "exit" to leave the
subshell.)
make[1]: *** [installed/twisted-2.5.0.p8] Error 1

#####################################################################
singular-3-0-4-1-20071209.p3:

CXXFLAGS="$CXXFLAGS -fPIC -O3 -g -m64"; export CXXFLAGS
CFLAGS="$CFLAGS -fPIC -O3 -g -m64"; export CFLAGS
CPPFLAGS="$CXXFLAGS -fPIC -O3 -g -m64"; export CPPFLAGS

#####################################################################
symmetrica-2.0:

Add -m64 in patches/makefile in three places

#####################################################################
polybori:

64 bit MacIntel
Starting build...
Running build_polybori...
scons: Reading SConscript files ...
KeyError: 'PYTHONHOME':
  File "/Users/mabshoff/sage-2.10.alpha2/spkg/standard/polybori-0.1-r6/src/PolyBoRi-0.1/SConstruct", line 105:
    env=Environment(ENV = {'PATH': os.environ['PATH']}, options=opts,tools = tools, toolpath = '.')
  File "/Users/mabshoff/sage-2.10.alpha2/local/lib/scons-0.97/SCons/Environment.py", line 779:
    options.Update(self)
  File "/Users/mabshoff/sage-2.10.alpha2/local/lib/scons-0.97/SCons/Options/__init__.py", line 145:
    execfile(filename, values)
  File "custom.py", line 13:
    PYPREFIX=os.environ['PYTHONHOME']
  File "/Users/mabshoff/sage-2.10.alpha2/local/lib/python2.5/UserDict.py", line 22:
    raise KeyError(key)
Error building PolyBoRi.


#####################################################################
sage -b: devel/sage/c_lib/SConstruct

## We want the debug and optimization flags, since debug symbols are so useful, etc.
env.Append( CFLAGS="-O2 -g -m64" )
env.Append( CXXFLAGS="-O2 -g -m64" )


#####################################################################
}}}

== libm4fri ==
{{{
CFLAGS="$CFLAGS -fPIC $INCLUDES -L$SAGE_LOCAL/lib -m64"
CXXFLAGS="$CXXFLAGS -fPIC $INCLUDES -L$SAGE_LOCAL/lib -m64"
CPPFLAGS="$INCLUDES -m64"
}}}


#####################################################################


== numpy, scipy & friends ==

With Python 2.5.2. compiler with {{{--with-gcc="gcc -m64"}}} numpy builds fine. More investigation is needed here.

== Done (incomplete list) ==

 * gsl-1.10
 * libfplll
The following has been moved to a subpage [[/spkgfixes|here]].

OSX 64-bit

This page is about the seemingly endless port of Sage to 64 bit OSX. Here is a list of build notes for various releases:

Note that it is possible to get Sage working to some extend, but it would be nice to get this port done once and for all. The main problem is for Sage to pass all of its doctests.

Build Instructions

The fortran.spkg shipped with Sage does not work. So, unpack the sources, delete the fortan spkg and drop in

Then:

  • export SAGE64=yes
  • make

Known Problems

  • Sage 3.4.2: Builds out of the box, but needs various patches to start up and pass all but one doctest - see Sage 3.4.2 notes.

  • Sage 3.4.1:
    • FLINT.spkg fails to build due to buglet in spkg-check. A fix is at #5817
    • segfaults at startup due to libSingular problems - same issue as above. Relevant ticket: #5839. This ticket does not fix the problem, but exposes other race conditions in the dealloc code in libSingular on x86-64, i.e. sage.math
  • Sage 3.4: segfaults at startup due to libSingular problems (it is basically the same segfault that happened on exit in Sage 3.3)

spkg status

The following has been moved to a subpage here.