Whoever is building the binary images could install a compiler into
SAGE_LOCAL with "dpkg-deb -x" or whatever before they start. There's no
need for it to come from an SPKG.
2, 4, 6, and 7 are addressed by Conda, Nix, Guix, Homebrew, or even
Gentoo Prefix.
We ship a
3GB image of an entire operating system. This could be done much easier
by... shipping an image of an entire operating system: QEMU,
VirtualBox, Docker, etc.
You could tar up an entire Gentoo system with
sage installed and it would probably take up less space than our
existing binaries.
I think my only concern with this is (g)fortran. The C/C++ compiler situation seems pretty stable, but doesn’t the fortran problem still exist? I do not use any package managers on my systems, so home-brew and the like aren’t useful to me.
Item #2 happened, incidentally, only because we've copy & pasted so
many packages into sage pretending to be a linux distribution.
Eliminating that problem altogether begins right here, at the root of
the dependency tree.
Since Fortran is pretty central to this discussion, any chance you
could give a quick overview of the extent to which Sage depends on
Fortran in 2021?
I was reading about pyodide [1] recently and they had to work very
hard to build scipy for webassembly without using Fortran.
I imagine things might be better today, due to Flang, which seems to
be a fortran frontend (like Clang) for LLVM. That seems likely to
work well on MacOS.
By the way switching to clang+gfortran-spkg over the gcc-spkg shaved 3 hours of building time of vanilla sage on my previous macbook. That was what took the most time to build by a very wide margin.
I repeat my strong objections to the proposed change -- which does not solve any problems and only creates new ones.1. When you refer to the "huge time sink", I think you are referring to painful memories from some distant past. But we have no current or recent problem with either the gcc or gfortran package. I fixed the last problems with the gfortran package in early 2020; there have not been any problems since.
2. We used the gcc spkg as recently as this Spring, for the 9.3 release, in order to support Fedora 34, which had just switched to gcc 11. No other solution was proposed or feasible at the time because several of our standard packages were not ready for this compiler, and a Sage release was already long overdue.
3. Your claims regarding availability of the tools on users' systems are not substantiated.a) clang/clang++, other than the version on macOS, is NOT supported by the Sage distribution. Only recently we added tests for these compilers (https://trac.sagemath.org/ticket/30835), which revealed build problems that are still unresolved (https://trac.sagemath.org/ticket/32207).
b) Any talk about FreeBSD is unsubstantiated, there is no systematic effort to support it or even test this environment.
c) The use of any Fortran compiler other than homebrew's packaging of gfortran on macOS (and our gfortran spkg) is completely unexplored. Given the instability of homebrew -- as a rolling platform on which it is not possible to install a specific version, it would be reckless to tie ourselves to homebrew's gfortran as the only option. (An effort to support macports in https://trac.sagemath.org/ticket/31505 is stalled.)
d) Our build on top of conda has been broken for months.
4. I want to caution about a single-user-system centric point of view. Non-root users on a multi-user unix system, or on a locked-down corporate laptop CANNOT install a system package. By removing SPKGs and demanding that the corresponding system package is available, we would make the Sage distribution harder to install for users, thus reduce the value that the Sage distribution provides for non-root users.
5. The gcc spkg is specifically used in building the binary distribution. Any discussion of removing the gcc/gfortran spkgs without including a discussion of deployment as the binary package is incomplete. Availability of the compilers at runtime is a key feature that we have advertised through facilities such as the magic %cython directive and others.
6. (As I explained before in https://trac.sagemath.org/ticket/32060#comment:36) There is a crucial distinction between the gcc and the gfortran package: On systems with a too old or otherwise broken gcc, our gcc spkg often cannot be installed, so the gcc spkg is not very useful for dealing with old compilers (but see the successful recent use in the Fedora 34 case mentioned above).On the other hand, on systems with a working gcc but a missing gfortran, building our gfortran spkg is robust, and having it makes our distribution useful for a wider range of users.
7. (As I explained before in https://trac.sagemath.org/ticket/32532#comment:11) in particular, Python users / developers generally have a working gcc (because many Python packages include extension modules that need to be compiled) but they have no need to have gfortran installed. The reason is that the few Python packages that use gfortran (such as scipy) have high-quality deployments of wheels to PyPI, which are widely used. Sage, however, does not yet have a working strategy that would enable us to use wheels from PyPI. As you know, I have been working on a PyPI-based deployment solution for Sage in https://trac.sagemath.org/ticket/29039; this builds everything from source.
Note that Python goes a long way to allow ordinary (non-root) users to install packages, either in a virtual environment or in the user scheme (pip install --user). gfortran, obviously, is not pip-installable -- so Python users would again need root access to install a system package to get the compiler.The project of modularization and PyPI deployment (https://trac.sagemath.org/ticket/29705) is complicated enough. I would appreciate if we do not create artificial obstacles -- removing gfortran or whatever next package you assume is on "everyone's system".
MatthiasOn Thursday, September 23, 2021 at 3:17:29 PM UTC-7 Dima Pasechnik wrote:https://trac.sagemath.org/ticket/32532 proposes to remove these packages as not needed, and a huge time sink for everyone involved.Rationale: nowadays every platform that Sage supports has said tools (or their equivalents - e.g. clang/clang++ in case of macOS and FreeBSD) available, if not outright as a system package, but surely with a very minimal effort.There is no need to carry this baggage forward.Moreover, it seems that Sage is the only Python library/platform around which (potentially) vendors gcc/g++/gfortran.
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/bfd20a60-70d5-49df-bfa3-9d53caa447f7n%40googlegroups.com.
On Fri, 24 Sep 2021, 02:12 Matthias Koeppe, <matthia...@gmail.com> wrote:
I repeat my strong objections to the proposed change -- which does not solve any problems and only creates new ones.
7. (As I explained before in https://trac.sagemath.org/ticket/32532#comment:11) in particular, Python users / developers generally have a working gcc (because many Python packages include extension modules that need to be compiled) but they have no need to have gfortran installed. The reason is that the few Python packages that use gfortran (such as scipy) have high-quality deployments of wheels to PyPI, which are widely used. Sage, however, does not yet have a working strategy that would enable us to use wheels from PyPI. As you know, I have been working on a PyPI-based deployment solution for Sage in https://trac.sagemath.org/ticket/29039; this builds everything from source.
Why does it build everything from source? E.g. numpy doesn't build Fortran compilers.Why do we have to outdo other Python projects here?
I made the point years ago that sagemath should be broken in two:
- sagemath-the-software ;
- sagemath-the-distribution.
This thread is an illustration of why that would simplify matters
On Fri, 24 Sep 2021, 02:12 Matthias Koeppe, <matthia...@gmail.com> wrote:I repeat my strong objections to the proposed change -- which does not solve any problems and only creates new ones.
2. We used the gcc spkg as recently as this Spring, for the 9.3 release, in order to support Fedora 34, which had just switched to gcc 11. No other solution was proposed or feasible at the time because several of our standard packages were not ready for this compiler, and a Sage release was already long overdue.nobody pushes us into not skipping one particular version.I cannot imagine e.g. cpython or scipy delaying a release in such a situation.Besides, building gcc from source is not too hardwith a modern C compiler available.
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/01d0a820-7967-45e8-bd72-f75e3782ebaen%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/bffb95ab-3407-487f-8e19-b8945f7e10c3n%40googlegroups.com.
On Fri, Sep 24, 2021 at 3:54 PM Matthias Koeppe <matthia...@gmail.com> wrote:On Friday, September 24, 2021 at 4:23:32 AM UTC-7 Dima Pasechnik wrote:Why does it build everything from source? E.g. numpy doesn't build Fortran compilers.Why do we have to outdo other Python projects here?I have explained in the paragraph that you quoted (and previously in #32532). Wheels. They have wheels. We don't.Are we supposed to reinvent wheels too (pun intended)?
You never explained why you went with building everything from source, and why you think it's a good idea (I don't think it is).Do explain why we cannot have what they have.
On Fri, Sep 24, 2021 at 4:14 PM Matthias Koeppe <matthia...@gmail.com> wrote:Bizarre that you think that it's easy for users to build gcc from source but it's somehow hard for us to maintain the package that builds gcc from source.Maintaining is a task. Non-maintaining is no task to worry about.What's bizarre about this?
I think my only concern with this is (g)fortran. The C/C++ compiler situation seems pretty stable, but doesn’t the fortran problem still exist? I do not use any package managers on my systems, so home-brew and the like aren’t useful to me.
> On Sep 23, 2021, at 15:17 , Dima Pasechnik <dim...@gmail.com> wrote:
>
> https://trac.sagemath.org/ticket/32532 proposes to remove these packages as not needed, and a huge time sink for everyone involved.
>
> Rationale: nowadays every platform that Sage supports has said tools (or their equivalents - e.g. clang/clang++ in case of macOS and FreeBSD) available, if not outright as a system package, but surely with a very minimal effort.
>
> There is no need to carry this baggage forward.
> Moreover, it seems that Sage is the only Python library/platform around which (potentially) vendors gcc/g++/gfortran.
>
>
>
> --
> You received this message because you are subscribed to the Google Groups "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/CAAWYfq0hsaf3SR-78Wajb_OdYjZq1MyReRH2vcwSO%2BU7CzLtYw%40mail.gmail.com.
--
Justin C. Walker, Curmudgeon-At-Large
Institute for the Absorption of Federal Funds
--------
Men are from Earth.
Women are from Earth.
Deal with it.
--------
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/DCE3ACDD-C65D-40B5-8AD9-409400C863AE%40mac.com.
[Matthias'] Item #2 happened, incidentally, only because we've copy & pasted so
many packages into sage pretending to be a linux distribution.
Eliminating that problem altogether begins right here, at the root of
the dependency tree.
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/22649531-58ee-4cc8-a717-79c1d986b50an%40googlegroups.com.
NumPy/SciPy mailing lists/support forums aren't full of questions on how to install a Fortran compiler, you know.
> > Whoever is building the binary images could install a compiler into
> > SAGE_LOCAL with [some system package command] or whatever before they start. There's no
> > need for it to come from an SPKG.
On Thursday, September 23, 2021 at 9:09:45 PM UTC-7 Michael Orlitzky wrote:[Matthias'] Item #2 happened, incidentally, only because we've copy & pasted so
many packages into sage pretending to be a linux distribution.
Eliminating that problem altogether begins right here, at the root of
the dependency tree.In another post:> [Matthias's items] 2, 4, 6, and 7 are addressed by Conda, Nix, Guix, Homebrew, or even
> Gentoo Prefix. These projects *want* to build entire distributions that
> run out of your home directory.
These two comments together really are the crux of the discussion.If we say that availability of gfortran in any of these user-installable distributions is the solution, then this applies to lots of other spkgs as well --- perhaps to ALL of our non-Python packages.So essentially it is to say, let's stop maintaining the Sage distribution.
This certainly *could* make sense for the project -- but a lot of work is needed to bring missing packages to these distributions: conda-forge does not have all of our optional packages, homebrew is missing a lot of packages. On the Sage side, also working on the tasks https://trac.sagemath.org/ticket/30914 (creating proper upstreams for some Sage-specific packages) will help.The big problem is that the middle ground between "Complete Sage distribution that works in most use cases" and "No Sage distribution" is worse than both of the extremes. By removing spkgs one by one, we would make the Sage distribution less useful.So this is not a meaningful process.
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/323c5a9d-cdd4-42ee-b250-98d2c5caea4bn%40googlegroups.com.
On Fri, Sep 24, 2021 at 4:43 PM Matthias Koeppe <matthia...@gmail.com> wrote:
you are shifting the work from our working spkg-install.in script to handholding users who attempt [install of gcc from source] on the mailing lists.
We spoiled the users, they assumed that Sage is a distribution. Yes, there will be a short while they'll ask - and the answer will be:RTFM/apt-get install gfortran/brew install gcc/...
On Friday, September 24, 2021 at 9:03:20 AM UTC-7 Dima Pasechnik wrote:On Fri, Sep 24, 2021 at 4:43 PM Matthias Koeppe <matthia...@gmail.com> wrote:you are shifting the work from our working spkg-install.in script to handholding users who attempt [install of gcc from source] on the mailing lists.We spoiled the users, they assumed that Sage is a distribution. Yes, there will be a short while they'll ask - and the answer will be:RTFM/apt-get install gfortran/brew install gcc/...You might recall that in 2020 I wrote the system-package recommendation scripts, a virtual beekeeper if you will, to reduce the workload of those answering the repeated questions by users on the mailing list regarding installation problems.
It would be unwise to make changes to the Sage distribution that provoke a new wave of installation problems.
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/6ab95d5b-6e54-4e2a-aaf8-19e6f858c9a9n%40googlegroups.com.
On Fri, 24 Sep 2021, 17:30 Matthias Koeppe, <matthia...@gmail.com> wrote:You might recall that in 2020 I wrote the system-package recommendation scripts
Your recommendations get routinely ignored, as they are recommendations, and not laws - one can proceed to building, and ignore them. On the other hand, if you try to build Sage without any C compiler on the PATH, you'll be forced to install one, in no uncertain terms.
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/24a4706e-aa55-4dc4-aab8-2d1276a20e04n%40googlegroups.com.
On Fri, Sep 24, 2021 at 9:03 AM Dima Pasechnik <dim...@gmail.com> wrote
> We spoiled the users, they assumed that Sage is a distribution. Yes, there will be a short while they'll ask - and the answer will be:
> RTFM [...]
I don't want to do that to our users. Sage was started to compete with [Magma | Mathematica | Maple], so the install process for Sage needed to compete with what [Magma | Mathematica | Maple] offers. A few weeks ago, I was bummed that Ken Ribet [1] was lamenting on Facebook that he does NOT recommend that people install Sage, because it is too confusing or likely to be broken. Something like [2, 3] but for Sage would go a long way to help.
Hopefully going forward, we can spoil users of Sage even more than we already are.
[1] A good example of a representative influential mathematician, e.g., he was the last president of the American Mathematical Society. He uses MacOS.
[2] https://github.com/jupyterlab/jupyterlab_app
[3] https://groups.google.com/g/sage-devel/c/QeYle_D8Otc/m/_5Q8zHPLAwAJ?utm_medium=email&utm_source=footer
--
William (http://wstein.org)
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/CACLE5GB1PuUXJcU-d-PrOsYo1yL3BTeaJPsVsSq-3nGzT9095Q%40mail.gmail.com.
yes, Sage binaries on macOS in particular are total crap - in part thanks to "let's vendor everything moving" approach,
in part thanks to Apple being bad to developers.
Hopefully going forward, we can spoil users of Sage even more than we already are.Sage is trying to bite more than it can chew, and it is badly needs to slim down, before becoming a total crap nobody uses.If one wants to spoil (in the good way) Sage users on macOS, more brew formulas are needed for Sage packages.Then a similar to Sage on Debian Sage package might be possible.This is totally orthogonal to vendoring things needlessly.
Matthias is right that another important big challenge is "pip install sagemath", and it sounds to me like he has a viable |
----
[1] A good example of a representative influential mathematician, e.g., he was the last president of the American Mathematical Society. He uses MacOS.
[2] https://github.com/jupyterlab/jupyterlab_app
[3] https://groups.google.com/g/sage-devel/c/QeYle_D8Otc/m/_5Q8zHPLAwAJ?utm_medium=email&utm_source=footer
--
William (http://wstein.org)
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/CACLE5GB1PuUXJcU-d-PrOsYo1yL3BTeaJPsVsSq-3nGzT9095Q%40mail.gmail.com.
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/CAAWYfq0hT_e-2Mq1B4MVqEq1P5a929HHUo0bq3z-%2BexK36diRA%40mail.gmail.com.
In conflict with all of the above, I also personally wish there were a significantly smaller Sage core with much lessdependencies, and which removes everything from the Sage that annoys Dima, and much more. This is a difficulttechnical challenge, since it would certainly involve changing core parts of the library. E.g., it would be nice to havea working Sage that doesn't depend on Maxima or GAP being present, but still starts up and is generally usefulfor the rest of what Sage does. Creating such a thing involves making significant changes to the assumptions thatcan be made in the Sage library code about what they assume is available by default.
On Fri, Sep 24, 2021 at 9:03 AM Dima Pasechnik <dim...@gmail.com> wrote
> We spoiled the users, they assumed that Sage is a distribution. Yes, there will be a short while they'll ask - and the answer will be:
> RTFM [...]
I don't want to do that to our users. Sage was started to compete with [Magma | Mathematica | Maple], so the install process for Sage needed to compete with what [Magma | Mathematica | Maple] offers.
A few weeks ago, I was bummed that Ken Ribet [1] was lamenting on Facebook that he does NOT recommend that people install Sage,
because it is too confusing or likely to be broken. Something like [2, 3] but for Sage would go a long way to help.Hopefully going forward, we can spoil users of Sage even more than we already are.
[1] A good example of a representative influential mathematician, e.g., he was the last president of the American Mathematical Society. He uses MacOS.
[2] https://github.com/jupyterlab/jupyterlab_app
[3] https://groups.google.com/g/sage-devel/c/QeYle_D8Otc/m/_5Q8zHPLAwAJ?utm_medium=email&utm_source=footer
--
William (http://wstein.org)
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/CACLE5GB1PuUXJcU-d-PrOsYo1yL3BTeaJPsVsSq-3nGzT9095Q%40mail.gmail.com.
I also personally wish there were a significantly smaller Sage core with much lessdependencies, and which removes everything from the Sage that annoys Dima, and much more. This is a difficulttechnical challenge, since it would certainly involve changing core parts of the library. E.g., it would be nice to havea working Sage that doesn't depend on Maxima or GAP being present, but still starts up and is generally usefulfor the rest of what Sage does. Creating such a thing involves making significant changes to the assumptions thatcan be made in the Sage library code about what they assume is available by default.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/CACLE5GBS56zZrDks%2BAU7F9g0yky0MyNv_nUaLXoLY93W%2B2brEg%40mail.gmail.com.
The way to spoil users of Sage on MacOS (or anywhere) is to create a binary installer that work really well,
I guess we already have disentangled R, or else someone would have mentioned that as requiring Fortran?
On OSX I don't feel comfortable recommending anyone to run a script as root so homebrew can barf random files into the filesystem. For security and maintainability we really need to be able to install Sage without having unsigned and effectively unversioned dependencies.
My suggestion would be to replace the toolchain packages with a local conda install, i.e. keep the part where our configure checks if a suitable gcc/gfortran/... is installed. If not then pull down miniconda and install a working toolchain into $SAGE_LOCAL/conda, instead of trying to compile it. That way we can easily offload the toolchain maintenance effort, and keep all the benefits.
On Friday, September 24, 2021 at 12:17:29 AM UTC+2 dim...@gmail.com wrote:https://trac.sagemath.org/ticket/32532 proposes to remove these packages as not needed, and a huge time sink for everyone involved.Rationale: nowadays every platform that Sage supports has said tools (or their equivalents - e.g. clang/clang++ in case of macOS and FreeBSD) available, if not outright as a system package, but surely with a very minimal effort.There is no need to carry this baggage forward.Moreover, it seems that Sage is the only Python library/platform around which (potentially) vendors gcc/g++/gfortran.
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/7ad09b74-dc26-473c-b44f-342ab84e01ddn%40googlegroups.com.
I don't really see how homebrew is different from a rolling Linux distro.
On Sunday, September 26, 2021 at 11:34:33 PM UTC+2 dim...@gmail.com wrote:I don't really see how homebrew is different from a rolling Linux distro.Homebrew doesn't come from the OS vendor. No automatic security updates. There is no package management where the admin can look up if any suspicious file was installed by homebrew. You can't verify that the files in /usr/local are actually from homebrew, and not tampered with. The homebrew installation process is not cryptographically signed. I can go on if you want me to...
Conda, on the other hand, doesn't need root. Its as safe as any other user space app. You don't need admin permissions, and the standard unix permissions prevent you from screwing over other users on the system.
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/0a523dcb-c97b-44f2-90cd-353d88f04a91n%40googlegroups.com.
I assume you are talking about the official binaries that are distributed on Sagemath.org. Fortunately, the Sage binaries onMacOS that are produced by the conda-forge devs are not total crap.
Homebrew need not be installed into /usr/local, and doesn't need root if one chooses not to install there.
--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/67bd3615-2c52-4c19-b68a-70f2187e092cn%40googlegroups.com.