Differences between revisions 10 and 11
Revision 10 as of 2008-11-14 13:41:56
Size: 12627
Editor: anonymous
Comment: converted to 1.6 markup
Revision 11 as of 2010-08-10 22:09:14
Size: 12534
Editor: BillHart
Comment: Put into pseudo alphabetical order
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
This page is part the [[windows|Sage on Windows port]]. This page is part of the [[windows|Sage on Windows port]].
Line 7: Line 7:
NOTE: [[http://www.apcocoa.org/wiki/ApCoCoALib:CompilationInstructions|Some other useful information]]
 * blas-20070724: works fine with GNU make and Intel Fortran compiler
 * bzip2-1.0.4 - port exists: http://gnuwin32.sourceforge.net/packages/bzip2.htm. Since that port uses MinGW we need to either use MinGW 64 bit or do an MSVC port ourselves. [[a sage without bzip2 would be possible...; saved objects under unix/osx wouldn't load though.]]
 * cddlib-094b.p1: unclear how hard the port will be, but shouldn't be too hard.
 * cvxopt-0.9.p5: Has Windows build support, provides binary packages
 * clisp-2.41.p12: MinGW port exists. Maintainer is receptive for build issues and usually fixes them quickly. [[maxima is often used under windows, so we should figure out their prefered lisp. We only use clisp for maxima.]]
 * conway_polynomials-0.2 - platform independent, i.e. no known Windows specific issues [[trivial -- just a pickle]]
 * cython-0.9.6.12: pure python, no portability issues, might needs some TLC for various config issues [[my impression from cython-devel is that there are already numerous windows users of cython]]
Line 10: Line 15:
 * prereq-0.3 - requires POSIX shell - small build system issues
 * bzip2-1.0.4 - port exists: http://gnuwin32.sourceforge.net/packages/bzip2.htm. Since that port uses MinGW we need to either use MinGW 64 bit or do an MSVC port ourselves. [[a sage without bzip2 would be possible...; saved objects under unix/osx wouldn't load though.]]
 * sage_scripts-2.10.2.alpha0 - requires POSIX shell
 * conway_polynomials-0.2 - platform independent, i.e. no known Windows specific issues [[trivial -- just a pickle]]
 * termcap-1.3.1 - port exists: http://gnuwin32.sourceforge.net/packages/termcap.htm. Since that port uses MinGW we need to either use MinGW 64 bit or do an MSVC port ourselves.
 * readline-5.2.p0 - port exists: http://gnuwin32.sourceforge.net/packages/readline.htm. Since that port uses MinGW we need to either use MinGW 64 bit or do an MSVC port ourselves.
 * pari-2.3.3: Some build support exists in tree, but it is currently broken. Support from the maintainers exists and they are willing to integrate fixes upstream. The main issue is to get the build system play nice for MinGW+MSVC.
 * ntl-5.4.1.p11: works fine with MSVC. Some functions like the time functions use old and crappy Win95+ interfaces. That can be easily fixed. It is very difficult to get fixes merged upstream, but the potential diff is rather small. The build requires Perl for a tuned build [[upstream merging probably isn't as hard as you think. The NTL author is a number theorist that many of "us", e.g,. John Cremona, know well.]]
Line 19: Line 16:
 * graphs-20070722 - graph database, so no porting issues
Line 21: Line 17:
 * examples-2.10.2.alpha0: no compiled code, i.e. no problem
Line 23: Line 20:
 * zlib-1.2.3.p3: port exists: http://gnuwin32.sourceforge.net/packages/zlib.htm Microsoft ships a copy under some name, so we might be able to "just" use the system one.
 * sqlite-3.5.3.p1 - pure Windows port exists (see http://www.sqlite.org/download.html), but we need ???
 * libgpg_error-1.6.p0, libgcrypt-1.4.0.p0, opencdk-0.6.6, gnutls-2.2.1.p1: Shortly the spkgs for libgpg_error, libgcrypt and opencdk will disappear since gnutls now includes copies of them. gnutls has build support for 32 bit MSVC, the feasability of the 64 bit build needs to be investigated. Problems might crop up with inline assembly. [[maybe there is a native windows library that provides similar functionality. This is only needed so Twisted works with Python, and I'm *sure* that is already very well supported.]]
 * libpng-1.2.22.p5: port exists: http://gnuwin32.sourceforge.net/packages/libpng.htm. Since that port uses MinGW we need to either use MinGW 64 bit or do an MSVC port ourselves. In this case it seems likely that somebody else has done a proper Windows port. We might also be able to uses the system's library, but there might be issues with featurs, i.e. IE's libpng is supposed to be fairly bad. [[yep, something builtin to windows might be useful.]]
 * python-2.5.1.p13: excellent support for MSVC, 32 & 64 bit mode. [[yep, very very good support on windows]]
 * flintqs-20070817.p2: is obsolete, but should build fine once FLINT works, C99 mode required
 * genus2reduction-0.3.p1: unclear, don't really see any problem [[easy, probably; it's just math]]
 * gfan-0.2.2.p2: unclear how hard the port will be, but shouldn't be too hard. [[we should upgrade to 0.2.3 first]]. Some more remarks: gfan requires argv[0] to switch to the right computation. I.e. during installation the following is executed: "ln -s gfan gfan_weightvector". This should be portable, but symlinks can be problematic on Windows.
 * gnutls-2.2.1.p1: Shortly the spkgs for libgpg_error, libgcrypt and opencdk will disappear since gnutls now includes copies of them. gnutls has build support for 32 bit MSVC, the feasability of the 64 bit build needs to be investigated. Problems might crop up with inline assembly. [[maybe there is a native windows library that provides similar functionality. This is only needed so Twisted works with Python, and I'm *sure* that is already very well supported.]]
 * f2c-20070816.p0: part of scikits, should work with MSVC
 * fortran-20071120.p3: Use Intel's Fortran compiler. An alternative for 32 bit is g77.
Line 29: Line 27:
 * gap-4.4.10.p2: Depends on sbrk(), currently builds only via Cygwin. [[a cygwin build could be fine for us, since there is no binary linking between sage and gap, and almost certainly there never will be any.]]
Line 31: Line 30:
 * fortran-20071120.p3: Use Intel's Fortran compiler. An alternative for 32 bit is g77.
 * lapack-20071123.p0: Works out of the box with GNU make.
 * givaro-3.2.6.p6: no port exists, C++ code uses templates and it migt. be a little tricky to get right. Upstream welcomes patches [[could be hard.]]
 * graphs-20070722 - graph database, so no porting issues
Line 35: Line 34:
 * givaro-3.2.6.p6: no port exists, C++ code uses templates and it migt. be a little tricky to get right. Upstream welcomes patches [[could be hard.]]
 * f2c-20070816.p0: part of scikits, should work with MSVC
 * blas-20070724: works fine with GNU make and Intel Fortran compiler
 * ipython1-20070130: Windows port exists
 * jmol-11.5.2.p1: pure java, no portability issues, large community of users on Windows
 * lapack-20071123.p0: Works out of the box with GNU make.
 * lcalc-20070107.p1: somewhat crafty C code, ugly hacks in the user interface, but should be portable to MSVC. Builds fine under Cygwin
 * libfplll-2.1.6-20071129.p1: no Windows port, needs some specialized math functions, but should be a relatively easy port. Upstream will likely merge Windows patches [[worry?]]
 * libgpg_error-1.6.p0,
 * libgcrypt-1.4.0.p0
 * linbox-20070915.p5: this will be some heavy lifting, mostly due to some heavy templated code. Upstream is willing to merge and help out.
 * libpng-1.2.22.p5: port exists: http://gnuwin32.sourceforge.net/packages/libpng.htm. Since that port uses MinGW we need to either use MinGW 64 bit or do an MSVC port ourselves. In this case it seems likely that somebody else has done a proper Windows port. We might also be able to uses the system's library, but there might be issues with featurs, i.e. IE's libpng is supposed to be fairly bad. [[yep, something builtin to windows might be useful.]]
Line 39: Line 44:
 * maxima-5.13.0.p2: Should build fine with Clisp, Windows binary package exists.
Line 40: Line 46:
 * moin-1.5.7.p2: python based, should work fine on Windows
 * mpfi-1.3.4-cvs20071125.p5: depends on mpfr and gmp, pure C library. Port is simple and will probably be merged upstream
 * ntl-5.4.1.p11: works fine with MSVC. Some functions like the time functions use old and crappy Win95+ interfaces. That can be easily fixed. It is very difficult to get fixes merged upstream, but the potential diff is rather small. The build requires Perl for a tuned build [[upstream merging probably isn't as hard as you think. The NTL author is a number theorist that many of "us", e.g,. John Cremona, know well.]]
 * opencdk-0.6.6
 * palp-1.1.p1: unclear how hard the port will be, but shouldn't be too hard.
 * pari-2.3.3: Some build support exists in tree, but it is currently broken. Support from the maintainers exists and they are willing to integrate fixes upstream. The main issue is to get the build system play nice for MinGW+MSVC.
Line 41: Line 53:
 * mpfi-1.3.4-cvs20071125.p5: depends on mpfr and gmp, pure C library. Port is simple and will probably be merged upstream  * polybori-0.1-r7: no Windows port, could be tricky, but upstream is willing to cooperate. [[worry??]]
 * prereq-0.3 - requires POSIX shell - small build system issues
Line 43: Line 56:
 * cython-0.9.6.12: pure python, no portability issues, might needs some TLC for various config issues [[my impression from cython-devel is that there are already numerous windows users of cython]]
 * zodb3-3.7.0.p0: mostly python, unknown difficulty to port [[probably easy]]
 * python-2.5.1.p13: excellent support for MSVC, 32 & 64 bit mode. [[yep, very very good support on windows]]
 * python_gnutls-1.1.4.p2: Should work, uses dlopen based mechanism. Is essential to the notebook, but can be dropped in favour of system's OpenSSL compatible library
Line 46: Line 59:
 * python_gnutls-1.1.4.p2: Should work, uses dlopen based mechanism. Is essential to the notebook, but can be dropped in favour of system's OpenSSL compatible library  * r-2.6.1.p14: Existing MinGW port, not too difficult to build. Port to MSVC desired. [[They don't already have a native MSVC port? Wow. That's amazing.]]
 * readline-5.2.p0 - port exists: http://gnuwin32.sourceforge.net/packages/readline.htm. Since that port uses MinGW we need to either use MinGW 64 bit or do an MSVC port ourselves.
 * rpy-1.0.1.p1: Support for MSVC in 32 bit mode with MSVC. No Cygwin support, but patch by Abshoff exists
 * rubiks-20070912.p1: no Windows port, but simple C/C++ code without any POSIX dependencies. Console applications [[easy?]]
 * sage_scripts-2.10.2.alpha0 - requires POSIX shell
 * singular-3-0-4-1-20071209.p4: Cygwin only, but needs even work there to run properly (libSingular) Needs to be ported to MSVC, upstream very willing to help out, but lacks expertise. Various issues like memory managment (omalloc) need to be sovled (malloc fallback), but build system issues and stuff like signals make this a bigger job. I would assume this is one of the two heavy jobs together with pexpect. [[This is probably quite hard. And interesting. At least singular builds under cygwin, which is a good sign, I guess.]]
 * sqlite-3.5.3.p1 - pure Windows port exists (see http://www.sqlite.org/download.html), but we need ???
 * symmetrica-2.0.p1: no Windows port yet, but macro heavy. [[worrisome.]]
 * sympow-1.018.1.p4: tricky code that needs the right FPU flags set. Otherwise no big hurdles to overcome
 * termcap-1.3.1 - port exists: http://gnuwin32.sourceforge.net/packages/termcap.htm. Since that port uses MinGW we need to either use MinGW 64 bit or do an MSVC port ourselves.
Line 49: Line 71:
 * singular-3-0-4-1-20071209.p4: Cygwin only, but needs even work there to run properly (libSingular) Needs to be ported to MSVC, upstream very willing to help out, but lacks expertise. Various issues like memory managment (omalloc) need to be sovled (malloc fallback), but build system issues and stuff like signals make this a bigger job. I would assume this is one of the two heavy jobs together with pexpect. [[This is probably quite hard. And interesting. At least singular builds under cygwin, which is a good sign, I guess.]]
 * symmetrica-2.0.p1: no Windows port yet, but macro heavy. [[worrisome.]]
 * libfplll-2.1.6-20071129.p1: no Windows port, needs some specialized math functions, but should be a relatively easy port. Upstream will likely merge Windows patches [[worry?]]
 * polybori-0.1-r7: no Windows port, could be tricky, but upstream is willing to cooperate. [[worry??]]
 * rpy-1.0.1.p1: Support for MSVC in 32 bit mode with MSVC. No Cygwin support, but patch by Abshoff exists
 * r-2.6.1.p14: Existing MinGW port, not too difficult to build. Port to MSVC desired. [[They don't already have a native MSVC port? Wow. That's amazing.]]
 * rubiks-20070912.p1: no Windows port, but simple C/C++ code without any POSIX dependencies. Console applications [[easy?]]
 * examples-2.10.2.alpha0: no compiled code, i.e. no problem
 * clisp-2.41.p12: MinGW port exists. Maintainer is receptive for build issues and usually fixes them quickly. [[maxima is often used under windows, so we should figure out their prefered lisp. We only use clisp for maxima.]]
 * maxima-5.13.0.p2: Should build fine with Clisp, Windows binary package exists.
 * genus2reduction-0.3.p1: unclear, don't really see any problem [[easy, probably; it's just math]]
 * lcalc-20070107.p1: somewhat crafty C code, ugly hacks in the user interface, but should be portable to MSVC. Builds fine under Cygwin
 * sympow-1.018.1.p4: tricky code that needs the right FPU flags set. Otherwise no big hurdles to overcome
 * cddlib-094b.p1: unclear how hard the port will be, but shouldn't be too hard.
 * gfan-0.2.2.p2: unclear how hard the port will be, but shouldn't be too hard. [[we should upgrade to 0.2.3 first]]. Some more remarks: gfan requires argv[0] to switch to the right computation. I.e. during installation the following is executed: "ln -s gfan gfan_weightvector". This should be portable, but symlinks can be problematic on Windows.
 * flintqs-20070817.p2: is obsolete, but should build fine once FLINT works, C99 mode required
 * palp-1.1.p1: unclear how hard the port will be, but shouldn't be too hard.
 * moin-1.5.7.p2: python based, should work fine on Windows
 * ipython1-20070130: Windows port exists
 * cvxopt-0.9.p5: Has Windows build support, provides binary packages
 * jmol-11.5.2.p1: pure java, no portability issues, large community of users on Windows
 * linbox-20070915.p5: this will be some heavy lifting, mostly due to some heavy templated code. Upstream is willing to merge and help out.
 * gap-4.4.10.p2: Depends on sbrk(), currently builds only via Cygwin. [[a cygwin build could be fine for us, since there is no binary linking between sage and gap, and almost certainly there never will be any.]]
 * zlib-1.2.3.p3: port exists: http://gnuwin32.sourceforge.net/packages/zlib.htm Microsoft ships a copy under some name, so we might be able to "just" use the system one.
 * zodb3-3.7.0.p0: mostly python, unknown difficulty to port [[probably easy]]
Line 89: Line 90:
 * networkx-0.36.p1: pure python, no portability issues
Line 90: Line 92:
 * networkx-0.36.p1: pure python, no portability issues

This page is part of the Sage on Windows port.

Package Analysis

Below you will find a list of packages in Sage as well as remarks on issues that will potentially come up during the Windows port. As we progress we will add detailed problem reports and how we resolved those issues at individual pages.

Packages with upstream MSVC support

  • atlas-3.8.p11: Works find fine, Intel C for better performance preferred

  • ecm-6.1.3: no Windows port, but C, potentially issues with threading. Upstream ecm-6.2 has MSVC project by Brian Gladman - upgrading evm to the 6.2 release is #3237
  • gmp-4.2.1.p12 - port by Brian Gladman exists - http://fp.gladman.plus.com/computing/gmp4win.htm. The main disadvantage is that the build is done via project file. A fallback option is to use the pure C fall back code via MSVC or Intel's C compiler since MSVC doesn't do the right inline assembly. Brian's gmp works perfectly in Win64 mode. good!. MPIR will have full MSVC project support

  • gsl-1.10.p0: port exists: http://gnuwin32.sourceforge.net/packages/gsl.htm. Brian Gladman also maintains a native MSVC port, 32 & 64 bit.

  • libm4ri-20071224.p1: MSVC and SunForte port done by Martin Albrecht and in upstream. Upgrade ticket is #3204

  • mpfr-2.3.1: pure C, Windows make file support welcome upstream, depends on gmp. MSVC project by Brian Gladman exists and is recommended by upstream
  • numpy-20080104-1.0.4.p2: support by enthought, builds out of the box with MSVC + ATLAS
  • scipy-20071020-0.6.p3: support by enthought, builds out of the box with MSVC + ATLAS
  • scipy_sandbox-20071020.p2: support by enthought, builds out of the box with MSVC + ATLAS
  • scons-0.97: works fine on Windows, python based.
  • tachyon-0.98beta.p4: Windows port exists, unsure about MSVC + threading.
  • weave-0.4.9: now part of scikits, works fine with MSVC

Pure Python Packages

  • networkx-0.36.p1: pure python, no portability issues
  • sympy-0.5.7: pure python, no portability issues.

Packages without code

  • doc-2.10.2.alpha0: no compiled code, so no portability issues.