Differences between revisions 4 and 5
Revision 4 as of 2008-05-16 15:29:26
Size: 12293
Comment: cleaned up formatting
Revision 5 as of 2008-05-16 15:30:20
Size: 12291
Comment: some more formatting fixes
Deletions are marked like this. Additions are marked like this.
Line 26: Line 26:
 * 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.]]
 * 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.]]
Line 39: Line 38:
 * 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.]]
 * 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.]]

This page is part the [:windows: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.

NOTE: [http://www.apcocoa.org/wiki/ApCoCoALib:CompilationInstructions Some other useful information]

yes, this is the biggie. note that pexpect *does* sort of work under cygwin, which might be relevant. Also, instead of porting pexpect, it might be possible to simply do something completely different than accomplishes much the same thing. pexpect was the way to go with Python and Unix -- in windows perhaps there is a totally different approach to interprocess communication that would work better? It's possibly OK if this means rewriting SAGE_ROOT/devel/sage/sage/interfaces/* for this new approach. This definitely needs to be investigated. Some of the programs Sage interfaces with have native "client server" archicture, and that could perhaps be used instead. E.g., Maple and Mathematica do. Maxima almost certainly doesn't...

  • mpfi-1.3.4-cvs20071125.p5: depends on mpfr and gmp, pure C library. Port is simple and will probably be merged upstream
  • pycrypto-2.0.1.p1: unclear how hard the port will be, but shouldn't be too hard. maybe trivial??

  • 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

  • sympy-0.5.7: pure python, no portability issues.
  • zodb3-3.7.0.p0: mostly python, unknown difficulty to port probably easy

  • networkx-0.36.p1: pure python, no portability issues
  • quaddouble-2.2.p7: MSVC project exists, need to investigate 64 bit build
  • 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
  • twistedweb2-20070619.p0 - python, is supported, relevant to notebook
  • twisted-2.5.0.p9 - python, is supported, relevant to notebook
  • 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.

  • scons-0.97: works fine on Windows, python based.
  • 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?

  • libm4ri-20071224.p1: no Windows port, maintainer will accept Windows port
  • ecm-6.1.3: no Windows port, but C, potentially issues with threading worrisome.

  • 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.

  • weave-0.4.9: now part of scikits, works fine with MSVC
  • 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
  • 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
  • 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
  • tachyon-0.98beta.p4: Windows port exists, unsure about MSVC + threading.
  • 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.

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