-
-
Notifications
You must be signed in to change notification settings - Fork 491
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Meta-ticket: Make sage (the distribution) behave like a standard autotools package, to the extent possible #21566
Comments
comment:3
Do you intend Or would sage-the-distribution still always have its private version of everything, so that users would have to choose between installing it and installing sagelib directly (e.g., via pip)? |
comment:4
(Sorry, the comment that was here previously was meant to go on #21507 -- I have too many tabs open) |
comment:5
Replying to @mezzarobba:
That is beyond the scope of this task ticket. But I would be interested in a follow-up ticket to this effect. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
comment:9
Will this also fix how |
comment:10
Replying to @embray:
No, probably not. For this ticket, I want to keep
Not sure about this one. To keep this ticket manageable, I want to change the top-level |
This comment has been minimized.
This comment has been minimized.
comment:11
Replying to @mkoeppe:
I guess it would be fine to make it an optional step. But I don't think it should be a mandatory step for all make targets, and currently it is, or at least seems to be. For example if I run This is especially annoying on Cygwin where |
comment:12
Replying to @embray:
In standard autotools packages, the |
comment:13
True--in that case it should (hopefully) be a moot point. This is currently a huge annoyance for me. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
comment:18
Do we have a ticket somewhere for adding more configure-time checks for system packages? If there is I can't find it. It's a little outside the scope of this ticket but not entirely. There are quite a few system packages installed by sage that could be skipped if we added the appropriate scripts to check for them. |
comment:19
Replying to @embray:
No, we don't. Feel free to open a ticket. I would prefer one ticket for every package, not a single ticket trying to do too much. |
comment:20
I agree--I probably won't even make a ticket for every package right away but I will make a master ticket for coordinating the task, and then open individual tickets for packages that I think are most worth tackling. |
This comment has been minimized.
This comment has been minimized.
comment:22
Would someone who has followed recent build system changes be interested in updating the description of this meta-ticket? |
comment:23
Replying to @mkoeppe:
Which build system changes specifically? I have a few open tickets that are making some not insignificant changes, but they don't terribly change things for this ticket. If anything they will help make it easier to implement the goals of this ticket. There is one small conflict I can see: The work I'm doing in #22509 and in #23160 will mostly supersede the work you already did in #21537. This is because the Right now I'm working toward the goals I outlined here for improving support for building Sage against dependencies from the system. However, I haven't even made tickets for every aspect of that plan yet. All the work I'm currently doing is toward #22509 and #22510 which I see as necessary for saner package management in Sage (they will also be very helpful for work I need to do of making it easier to install optional packages with the Windows installer, but that's otherwise an orthogonal issue). |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
comment:30
Setting new milestone based on a cursory review of ticket status, priority, and last modification date. |
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
then that's the same as doing a sequence of about 100 times:
(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:
make
andmake install
. Ourmake install
is a no-op. ANY discussion of this needs to go to ticket Long-term task ticket: Support "make install" of the Sage distribution #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:
setup.py
,pip
, etc. and eventually even via PyPI. We will NOT turn sagelib to an automake package (which was proposed in Transition to build system for sage (the library) #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.
configure --prefix=SAGE_LOCAL
). Right now it is the subdirectorylocal
ofSAGE_ROOT
.SAGE_LOCAL
, orSAGE_ROOT
(orSAGE_SRC_ROOT
). An exception could perhaps be made for the latter for "debugging" or "source inspection" facilities:autotools
: Don't depend on$SAGE_LOCAL
make V=0
should silence the buildSAGE_ROOT
by more specific environment variablesSAGE_SRC_ROOT/configure --srcdir=SAGE_SRC_ROOT
)./configure CC=/path/to/gcc ...
sage -i SPKG
for optional/experimental packages asconfigure --enable-SPKG && make build
#29113: Reimplementsage -i SPKG
for optional/experimental packages asconfigure --enable-SPKG && make build
(follow-up: Remove ./configure --enable-SPKG options for pip packages (for which this is not implemented) #29626)make V=0
the default by using./configure --enable-silent-rules
#21589: Makemake V=0
the default by./configure --enable-silent-rules
configure
options, 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.
SAGE_LOCAL
directory hierarchy duringmake
, notconfigure
configure.ac
: writebuild/make/Makefile
within anAC_CONFIG_COMMANDS
, not during mainconfigure
Make the separation between sage-the-distribution and sagelib (sage-the-Python-library) clearer. This will be beneficial for distributions such as Debian etc.
src/bin
tobuild/bin
Following are workarounds to enable root-owned installation hierarchies (
prefix
).$SAGE_SUDO
is set, use it whenever we domake install
of a package. Subtickets:spkg-build
andspkg-install
(for SAGE_SUDO) #21726: Support splitting spkg install intospkg-build
andspkg-install
(for SAGE_SUDO)/usr/local
See also:
CC: @vbraun @jdemeyer @kiwifb @embray @dimpase @williamstein @mezzarobba @tobihan @timokau @jhpalmieri @seblabbe
Component: build
Author: Matthias Koeppe
Issue created by migration from https://trac.sagemath.org/ticket/21566
The text was updated successfully, but these errors were encountered: