-
-
Notifications
You must be signed in to change notification settings - Fork 654
Description
Executive summary Currently, --prefix
selects the install tree (SAGE_LOCAL
) of sage-the-distribution. But often we want several builds out of (almost) the same source tree.
The vpath
mechanism proposed here selects the build tree (SAGE_ROOT
) of sage-the-distribution. This includes the configuration and build artefacts such as src/build/...
.
VPATH builds are a powerful feature of autotools (and other) build systems. This feature allows the developer to build a package in a separate (initially empty) build directory tree. The source directory tree is only read from (and could even be mounted read-only) and is therefore always clean.
This is a powerful feature for the developer because from the same source tree many different configurations can be built and tested, without having to go through "make distclean" and reconfiguration. The source tree can also be shared, for example using a networked file system between different hosts, running different architectures. Another modern use case involves VMs. For example, Docker allows to mount the source directory from the host in the VM (see #21474).
For Sage, "different configurations" could mean different architectures (via VMs), different sets of installed packages, Py2 vs Py3, etc.
This is how it is used.
cd SAGE_ROOT
autoreconf
and then
mkdir BUILDDIR
cd BUILDDIR
SRCDIR/configure --srcdir=SRCDIR
make
The present patch implements this. BUILDDIR from the above example is reflected in the old environment variable $SAGE_ROOT; this is now to be distinguished from SRCDIR, which is reflected in the new environment variable $SAGE_VPATH. $SAGE_LOCAL defaults to BUILDDIR/local, but can of course be changed using configure --prefix
.
The present patch changes the various places where $SAGE_ROOT is used.
When "./configure" detects a VPATH build, it installs patched copies of sage
, Makefile
and build/make/install
in BUILDDIR.
With the current set of patches, the compilation goes through and gives a working sage
, except for the docbuild.
CC: @sagetrac-felixs @jdemeyer @kiwifb @embray @nexttime @vbraun @dimpase @fchapoton @jhpalmieri
Component: build: configure
Work Issues: merge conflicts
Author: Matthias Koeppe
Branch/Commit: u/mkoeppe/vpath_build @ 05f3a91
Issue created by migration from https://trac.sagemath.org/ticket/21469