-
-
Notifications
You must be signed in to change notification settings - Fork 452
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
Long-term task ticket: Support "make install" of the Sage distribution #21495
Comments
comment:1
wow. that's a tremendous effort. i don't think it's really necessary. but even if: why would the next step be "staged installs"? an autotoolized package will work fine after just "make". in contrast, it will not necessarily be functional from within $DESTDIR, that's not the intent of DESTDIR. the package transition from "install to SAGE_LOCAL (during build)" + "unable to install to $prefix" to "dont install during build" + "possibly install to $prefix" can be done one after another. by someone who needs the package installed by sage. for this to make sense, it must be possible to disable packages... that's implemented (drafted) in #14796. think of "patch". as long as nobody wants to install sage on a platform without patch, it will not be necessary to have an installable patch package provided by sage. sage will still work on this platform the traditional way, with patch "installed" to $SAGE_LOCAL, as usual ($PATH will take care of it). my sage-autotools draft also used "staging" for "prepare something that can be used right now before installation". the fallback/transition was "install to SAGE_LOCAL". back then, i only needed ~3 packages installable by sage. the rest was already there (hence "disabled" at top level). i think step 0 is missing. imo it is "implement configure for sagelib". without configure it will be harder to pass things like --with-$program=$somewhere. also sagelib might need (environment?) overrides for several paths. how does "disable packages at top level" sound to you? |
Replying to @mkoeppe:
What is the point of that? |
comment:3
Mostly I want 1 central place where this is discussed to keep productive tickets clear of this discussion. |
comment:4
OK, for the record: I completely disagree with this ticket. |
comment:5
Replying to @dimpase:
You want to install stuff from Of course, I agree that we should support #21479. Maybe if the installation directory becomes configurable, people will start understanding that it really is an installation directory. |
comment:6
exactly. SAGE_LOCAL does not make sense. it is a (historic) workaround, and an implementation detail. not a requirement.
#21479 is ./configure --prefix=SAGE_LOCAL. what should (in your opinion)
? you know i think the answer is "what every other build system would do": build stuff. no other build system requires a writable $prefix for what it does. |
comment:7
Replying to @sagetrac-felixs:
But Sage-the-distribution is not a program, it is a distribution. It doesn't really make sense to "build" Sage-the-distribution. A separate build/install step really only makes sense for individual packages. So the top-level |
comment:8
Replying to @jdemeyer:
Surely, you normally never install stuff from E.g. And BEFORE installing stuff, you want to |
comment:9
it's a software package. and it's not the first software package with subpackages. it's just working differently (for historical reasons). question is how to escape this dilemma. answer is: apply standard practices/terminology. in the meantime, the transition should better not affect any of the users and developers. i don't really grasp why you are against progress. |
comment:10
Replying to @dimpase:
Right, just like |
comment:11
Replying to @sagetrac-felixs:
I am not against progress. I am against pointless changes, especially if those changes make stuff more complicated without any advantage. |
comment:12
Replying to @sagetrac-felixs:
I do not see it as one package with subpackages. It is a collection of packages, installed in a common prefix. |
comment:13
Replying to @jdemeyer:
i did not say that enabling users to install sage is meant to be an advantage for you in particular. look at the packages that you use, without being a developer of that particular package. sure i don't know what they are, statistically it's stuff like an OS kernel, a web browser, a desktop environment, a mail client, some office-suite... endless list. would you say that it's not an advantage to have all these as packages ready in a zillon of distros that you could choose from? (this is again drifting towards being off-topic. maybe it should be relacated to sage-flame) |
comment:14
Replying to @jdemeyer:
what you describe is stuff like "pip" or some "ebuild" package manager, or maybe "apt" (together with the corresponding package directories) sage-the-distribution has its place, but it's nowhere close. in architecure and use it closely resembles a standard package. it's just lacking some functionality |
comment:16
I think I wrote elsewhere before I saw that this ticket already exists, but I'll repeat the basic idea here: I think that in order to support this functionality, what we ought to do is break up all existing This would also ease further elimination of duplication between Some packages can't easily be broken into cleanly separate "build" and "install" steps. I suppose this is the main reason for point 1 in the ticket description. I think "autotoolize" all packages is a big undertaking though, and not even appropriate for truly "all" packages (even excluding Python ones). For those packages that can't be separated, having a single "install" script is probably about as good as we'll get. Where Python packages are concerned, ironically before switching to pip there was a clearer separation--you could |
comment:17
(and to be clear, I agree with felix that "autotoolize all packages", even if you exclude the obvious ones where it doesn't apply, is probably more work than necessary--would be nice to do where it is easy, but I think simply separating build and install steps in the spkgs is an easier way to go) |
comment:18
Replying to @embray:
What do we gain from that? I am totally missing that from the ticket description. Usually, there is a problem that you want to solve and then you look for a solution. So, what exactly is the problem that we are trying to solve here? |
comment:19
It would actually be great if I could test building Sage along with sagelib without having to actually muck with or break things in my existing Sage "installation" (i.e. currently wherever Currently the only alternatives are to constantly muck with environment variables (and inevitably make mistakes) or have about a dozen simultaneous sage source dirs as it seems I currently do... |
comment:20
I strongly recommend not to spend time on this ticket. It is here to centralize discussion that will invariably come up. There are plenty of build tickets which need actual work or review. |
comment:21
Replying to @mkoeppe:
Right now you mean ;)
Agreed--there's lots else to be done before this should be worked on at all,, though I'm all for having the discussion. |
comment:22
One obvious problem with this that I'm surprised hasn't been pointed out yet (unless it has, and I'm missing it--or at least, it hasn't been pointed out in this ticket) is that so many packages in Sage require their dependencies to be installed in order to build. So you can't do a This could be worked around by looking for the dependencies in their temporary build roots, but that could also get tricky fast. The only way this can be made to work is if every package were autotoolized, but that's not going to happen and is beyond the scope of what Sage's packaging system does. I think the work I'm doing now for #22509 will ultimately satisfy my needs for easily building packages without installing them. Right now the install step is still run unconditionally but it will be easy to add a "build only" flag in the appropriate places once this work is done. |
#21479 makes SAGE_LOCAL configurable by "./configure --prefix=SAGE_LOCAL". The default is the "local" subdirectory of the sage source tree (or the separate sage build tree, if using a VPATH configuration - #21469).
On this task ticket, let's organize the steps necessary to support "make install" that is separate from "make".
The comments section of this ticket is also a place for philosophical discussions regarding the nature of build and install directories, etc.
CC: @dimpase @sagetrac-felixs @jdemeyer @mezzarobba
Component: build
Issue created by migration from https://trac.sagemath.org/ticket/21495
The text was updated successfully, but these errors were encountered: