Task ticket: Make sage (the distribution) behave like a standard autotools package, to the extent possible
|Reported by:||mkoeppe||Owned by:|
|Cc:||vbraun, jdemeyer, fbissey, embray, dimpase, was, mmezzarobba, thansen||Merged in:|
|Report Upstream:||N/A||Work issues:|
Description (last modified by )
The goal of this ticket is to be able to explain to experienced Unix users what sage-the-distribution is, as follows:
If you download sage-the-distribution and do./configure --prefix=/SOMEWHERE && make
then that's the same as doing a sequence of about 100 times:wget SOMEPACKAGE.tar.gz && tar xf SOMEPACKAGE.tar.gz && (cd SOMEPACKAGE \ && ./configure --prefix=/SOMEWHERE && make && make install)
(and about a 50 times
pip install SOMEPACKAGE). sage-the-distribution has figured out the right order of installing these packages, tricky configure options so that everything works, and on top has fixes for various outdated/handwritten/missing build systems of various packages.
Thus it is beyond the scope of this ticket:
- to separate
make install. Our
make installis a no-op. ANY discussion of this needs to go to ticket #21495, not here.
We will implement this goal without sacrificing any of the traditional convenience features that Sage-the-distribution has provided for the casual user (such as
sage -i for installing packages; and that
./configure is an optional step of the installation process).
We have a separate task ticket for the following:
- #21507: Make sagelib (sage-the-Python-library) a normal Python package, installable by
pip, etc. and eventually even via PyPI. We will NOT turn sagelib to an automake package (which was proposed in #14807).
(There will be some interaction with some of the steps of that ticket.)
Included on this ticket are the following steps.
Implement standard features expected of an autotools build system.
- Choosing the installation hierarchy (
configure --prefix=SAGE_LOCAL). Right now it is the subdirectory
- By allowing the user to choose the installation hierarchy, there are new requirements. What is installed there should run without requiring environment variables to be set. It should not refer to the environment variables
SAGE_SRC_ROOT). An exception could perhaps be made for the latter for "debugging" or "source inspection" facilities:
make V=0should silence the build
- #21775: make distclean: Don't delete the install hierarchy (SAGE_LOCAL)
- #21589: Make
make V=0the default by
- #21591: Replace use of
SAGE_ROOTby more specific environment variables
- #21469: Enable VPATH builds (
./configure CC=/path/to/gcc ...
- Various other
configureoptions, to replace use of environment variables that influence the build.
Clean up parts of the build system to make it more standard. This is to make it straightforward for developers familiar with the autotools system to contribute to sage.
- #21532: Create
SAGE_LOCALdirectory hierarchy during
AC_CONFIG_COMMANDS, not during main
Make the separation between sage-the-distribution and sagelib (sage-the-Python-library) clearer. This will be beneficial for distributions such as Debian etc.
- #21559: Move sage-the-distribution scripts from
- #21565: Add src/README.txt and build/README.txt
Following are workarounds to enable root-owned installation hierarchies (