[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

sage build system project progress



Hi there.

A draft of the build systems for sage is now available on github [1].
The commits are based on the "working" branch, which represents the
current transition from hg to git.

The top level build system now not only disables unneeded packages
automatically (e.g. gcc, iconv), but also allows disabling any package
manually, by configuring with --disable-<packagename>. for this to work,
each package needs to provide its own runtime configuration (currently
hardwired within sage-env). whether or not disabling a package already
makes sense depends mostly on the other packages, for example python can
only be disabled once/because all other packages know where to find
python. *not* disabling a package does not/should not/must not change
anything relative to the current way sage works. I am trying to
non-destructively introduce that infrastructure into Sage [2], but maybe
I am not aware of all implications yet.

It will then be possible to uninstall packages from $SAGE_LOCAL manually
by typing make <packagename>-(un)install. Uninstallation relies on the
capabilities of the spkg-install, and currently more or less works for
rpy2, singular, mpir, sagetex, matplotlib and some others. this is
implemented by replacing the install program (for make-based upstream
build systems) and by overriding parts of the file operation routines
(in the distutils case). whether or not this works can be checked with
the <packagename>-distcheck target, which compares the list of actually
installed files with the list of files the build system claims to have
installed. Once an spkg-install file has been modified/augmented, it
will be easy to export source or binary packages of the corresponding
package.

There is now also a unified build system for sage ("the library"). On a
system that matches all requirements, it should be possible to
build/install the parts within <gitrepo>/src in one go, with
./configure; make (install) (and create tarballs with make dist).
This is pretty much untested, and currently lacks a lot of checks. On
gentoo, or within sage -sh, it might do anything useful already. On
debian, several dependencies are not met yet [3], [4]. some are of the
type "need a patch for sage to work with upstream" (e.g. cliquer), some
are "sage needs support for current upstream" (e.g. singular), but also
there are unresolved license issues (singular), and problems far worse
than that (ecl, maxima, ...).  I could need any help here, and i will
certainly not be able to resolve all of these myself.

I have some hope to run (=pass tests within) a sage-the-distribution
with several packages disabled (lets call it "hybrid-mode" maybe?) on
top of debian some day. this might give an insight on which packages are
not just available, but also work for sage, if they are just installed
in a conventional way. For this I need all packages either within
debian or hybrid-ready one within sage-the-distribution...

regards
felix

[1] git://github.com/felix-salfelder/sage.git
[2] http://trac.sagemath.org/sage_trac/ticket/14804
[3] http://http://wiki.debian.org/DebianScience/Sage
[4] http://people.debian.org/~thansen/debian-sage-status.html


Reply to: