Differences between revisions 1 and 3 (spanning 2 versions)
Revision 1 as of 2013-06-07 16:41:55
Size: 1950
Editor: felixs
Comment: initial commit
Revision 3 as of 2017-02-02 04:05:40
Size: 0
Editor: mrennekamp
Comment: archived by mrennekamp
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= reworking the build system for sage ("the distribution") =

== goals ==
 * module build systems seperated from toplevel package/module management
 * make embedded modules usable outside sage ("the distribution")
 * (still) build depends only on (gnu) make and bash
 * allow fallback to system-installed modules/packages. not just for gcc
 * make embedded modules work with other (gnu/linux) software distributions ([[http://www.google-melange.com/gsoc/project/google/gsoc2013/felixs/24001|gsoc project]])
 * VPATH build
 * install/uninstall for all packages within sage
 * allow swich between system-installed and sage-shipped packages
 * parallel build
 * install targets conforming to standard
 * avoid patchbomb (see roadmap)

== implementation ==
 * autotools can do most things. (no, this is not just [[AutoToolsSEP|AutoToolsSEP]])
 * package dependencies remain make recipes
 * package management can be reused, must be simplified/extended.
 * foreign package build scripts need enhancements
 * DESTDIR is used to stage package contents

== open/tricky ==
 * how to upgrade a sage-(local?)-installation?
 * DESTDIR is unsuppported in the current foreign packaging system
 * distutils is used for the python library. patch or rewrite?

== future ==
 * pick minimal set of foreign packages, depending on what is available
 * optionally use portage for package management
 * run from builddir without the need to install (simplifies development, YMMV)

== roadmap ==
 * demonstrate proof-of-concept on top of master
 * switch embedded module build systems to autotools
 * add toplevel configure.ac GNUmakefile.am
 * rework configuration parts into configure.ac
 * rewire toplevel Makefile, wrap functionality if required
 * remove old build system fragments.
 * rearrange/regroup embedded modules (?)
 * add DESTDIR support to foreign modules
 * fix local "installation" and actual installation targets