Differences between revisions 1 and 2
Revision 1 as of 2013-06-07 16:41:55
Size: 1950
Editor: felixs
Comment: initial commit
Revision 2 as of 2013-06-08 09:10:25
Size: 1986
Editor: felixs
Comment:
Deletions are marked like this. Additions are marked like this.
Line 20: Line 20:
 * foreign package build scripts need enhancements  * foreign package build scripts will be turned into makefiles defaulting to "install"

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 (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)

  • package dependencies remain make recipes
  • package management can be reused, must be simplified/extended.
  • foreign package build scripts will be turned into makefiles defaulting to "install"
  • 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