sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.28k stars 438 forks source link

`sagemath` is not available in Fedora 39 #36860

Open FilipLaurentiu opened 8 months ago

FilipLaurentiu commented 8 months ago

Steps To Reproduce

sudo yum install sagemath

Expected Behavior

Install sagemath

Actual Behavior

Sagemath is not available in Fedora 39 repository

Last metadata expiration check: 0:07:16 ago on Mon 11 Dec 2023 01:01:27 PM EET. No match for argument: sagemath Error: Unable to find a match: sagemath

Additional Information

No response

Environment

➜  ~ lsb_release -a
LSB Version:    
Distributor ID: Fedora
Description:    Fedora release 39 (Thirty Nine)
Release:    39
Codename:   ThirtyNine
➜  ~ uname -r
6.6.4-200.fc39.x86_64
➜  ~ sudo yum install sagemath 
Last metadata expiration check: 0:07:16 ago on Mon 11 Dec 2023 01:01:27 PM EET.
No match for argument: sagemath
Error: Unable to find a match: sagemath

Checklist

dimpase commented 8 months ago

This isn't for us, we don't do packaging for distros

enriqueartal commented 8 months ago

When I told fedora developers that there was a problem with their nauty package, they pointed out that sagemath packager had abandoned the project, they wanted to know if some sagemath developer would be interested. I do not know rpm techniques, and actually it is simpler to compile it.

vincentmacri commented 8 months ago

A couple people (including myself) are considering taking over as package maintainers for Sagemath on Fedora (https://discussion.fedoraproject.org/t/will-sagemath-return-to-the-fedora-39-repository/95662/17), but we're currently blocked by Sagemath not supporting Python 3.12, which is what ships with Fedora 39 (and Fedora doesn't allow packages to depend on older versions of Python than what ships with the OS by default).

vincentmacri commented 8 months ago

I think #36023 and #36181 (as well as all the people interested in taking over maintaining it being new to package maintenance) are the main blockers.

dimpase commented 8 months ago

Are you saying that Fedora 39 doesn't carry Python 3.11? Python 3.12.0 is quite buggy. Here is my favourite: https://github.com/python/cpython/issues/112215

OTOH #36023 should not be a big problem - there is a new polymake release which does support newer perl. https://github.com/polymake/polymake/releases/tag/V4.11 Although polymake is an optional package of Sage, it need not be there for Sage to function otherwise.

dimpase commented 8 months ago

Please also note that while Sage's build-in python is quite old, Sage does support Python 3.12, see #36407

FilipLaurentiu commented 8 months ago

I understand the problem. You can close the issue if you decide. I tried to install it using nix. Everything ok but install it with nix I don't have SAGE_ENV variable set and I can't use sage as a kernel for the jupyter notebook

This path doesn't exist for me $SAGE_VENV/share/jupyter/kernels/sagemath Can you help me with this problem?

dimpase commented 8 months ago

This path doesn't exist for me $SAGE_VENV/share/jupyter/kernels/sagemath

please open a new issue, this one is about Fedora 39

vincentmacri commented 8 months ago

Are you saying that Fedora 39 doesn't carry Python 3.11? Python 3.12.0 is quite buggy. Here is my favourite: python/cpython#112215

OTOH #36023 should not be a big problem - there is a new polymake release which does support newer perl. https://github.com/polymake/polymake/releases/tag/V4.11 Although polymake is an optional package of Sage, it need not be there for Sage to function otherwise.

I wasn't aware Sage supported system Python 3.12, that will help build it, but any bugs would be a problem. Do you know what impacts any of those Python 3.12 bugs would have on building and running Sagemath?

Fedora does technically carry Python 3.11, but the Fedora packaging guidelines don't allow packages to depend on Python 3.11 (with exceptions only for some developer tools like pip or tox). Fedora carries Python 3.11 only for users to directly install and use for development work. So for the purposes of packaging Sagemath, it needs to work with Python 3.12.

"Fedora packages MUST NOT depend on other versions of the CPython interpreter than the current python3." https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_python_version_support

In Fedora 39, the current python3 is Python 3.12.

enriqueartal commented 8 months ago

With 10.2 in Fedora 39 ./configure --with-system-python3=force ends with

Given --with-system-python3=force, but no system package could be used.
That's an error.  Please install the indicated package to continue.
(To override this error, use ./configure --without-system-python3)
dimpase commented 8 months ago

With 10.2 in Fedora 39 ./configure --with-system-python3=force ends with

Given --with-system-python3=force, but no system package could be used.
That's an error.  Please install the indicated package to continue.
(To override this error, use ./configure --without-system-python3)

Do you have python3-devel installed?

enriqueartal commented 8 months ago

Yes

dimpase commented 8 months ago

please post top-level config.log

enriqueartal commented 8 months ago

config.log

dimpase commented 8 months ago

Sorry, could you please apply by hand or otherwise the very small patch in https://github.com/sagemath/sage/pull/36407#issuecomment-1852664647 (replace 12->13 in two places) ?

Our QA obviously failed there on #36407 😢

Then you'd need to run ./bootstrap to regenerate ./configure with this change. Sorry again.

enriqueartal commented 8 months ago

This change is not enough, venv remains 3.11; I changed some more files with no success

dimpase commented 8 months ago

I am sorry, the PR #36407 which meant to allow Sage to use system-wide Python 3.12 to be used wasn't complete, as it turns out. Thanks to efforts of @mkoeppe, only he now knows what exactly went wrong, so I have to leave him to help you further.

mkoeppe commented 8 months ago

For the roadmap to 3.12, see the list of PRs in:

tornaria commented 8 months ago

A couple people (including myself) are considering taking over as package maintainers for Sagemath on Fedora (https://discussion.fedoraproject.org/t/will-sagemath-return-to-the-fedora-39-repository/95662/17), but we're currently blocked by Sagemath not supporting Python 3.12, which is what ships with Fedora 39 (and Fedora doesn't allow packages to depend on older versions of Python than what ships with the OS by default).

If all the dependencies are available on fedora (or if you are willing to package all missing dependencies) you can build a package just for sage-the-library which does support python 3.12.

You can see how other distros do, for example:

Roughly speaking, you cd into pkgs/sagemath-standard and build using setuptools, but you need to setup some things before and adjust some things after.

Doing this will not check anything in your system; it's your responsibility as a packager to make sure dependencies are right.

enriqueartal commented 7 months ago

For people interested in packaging sagemath in Fedora, it is possible to compile it with system python 3.12, see https://github.com/sagemath/sage/pull/36869#issuecomment-1875089797 for details and issues.

In order to recognized the system package, I needed to change python-setuptools -> python3-setuptools in build/pkgs/python3/distros/fedora.txt. In order to use the ecm system package, I linked /usr/bin/gmp-ecm to /usr/bin/ecm, I do not know how to do it inside the configure. Finally, to use libbraiding system package, it was necessary to install libbraiding-devel, may be it should be added to build/pkgs/libbraiding/distros/fedora.txt.

dimpase commented 7 months ago

For people interested in packaging sagemath in Fedora, it is possible to compile it with system python 3.12, see #36869 (comment) for details and issues.

In order to recognized the system package, I needed to change python-setuptools -> python3-setuptools in build/pkgs/python3/distros/fedora.txt.

this is a minor issue, as build/pkgs/*/distros/* are just hints for package installations.

In order to use the ecm system package, I linked /usr/bin/gmp-ecm to /usr/bin/ecm, I do not know how to do it inside the configure.

this is something we should looks at - there are more systems where ecm is called gmp-ecm

Finally, to use libbraiding system package, it was necessary to install libbraiding-devel, may be it should be added to build/pkgs/libbraiding/distros/fedora.txt.

sure

mkoeppe commented 7 months ago

I needed to change python-setuptools -> python3-setuptools in build/pkgs/python3/distros/fedora.txt. [...] to use libbraiding system package, it was necessary to install libbraiding-devel, may be it should be added to build/pkgs/libbraiding/distros/fedora.txt.

Thanks, done in #36181 (00e492de2c9, 3f1d890aa6f).

mkoeppe commented 7 months ago

In order to use the ecm system package, I linked /usr/bin/gmp-ecm to /usr/bin/ecm, I do not know how to do it inside the configure.

this is something we should looks at - there are more systems where ecm is called gmp-ecm

See also:

dimpase commented 5 months ago

37011 is ready for review

saraedum commented 5 months ago

@mkoeppe I don't understand what is "disputed" about this issue. (Also, I don't know what this label means on an issue actually.) Could you explain?

dimpase commented 5 months ago

@mkoeppe I don't understand what is "disputed" about this issue. (Also, I don't know what this label means on an issue actually.) Could you explain?

I think that was due to me complaining here about #36407 being misnamed

mkoeppe commented 5 months ago

@saraedum The label "disputed" marks PRs and Issues that have been affected by abusive conduct.

saraedum commented 5 months ago

@mkoeppe that's a surprising definition of "disputed" to me. We'll discuss what this label should be good for in the sage-conduct meeting. Since we have the voting process on PRs that are "disputed" I find it confusing to put this label on issues.

mkoeppe commented 5 months ago

@saraedum People can filter on issues being a PR and even on the status label. I have shared a suitable search link in my post https://groups.google.com/g/sage-devel/c/9dvroyGGlsw

mkoeppe commented 5 months ago

@saraedum The search for the "disputed" label, including for open Issues and Issues/PRs that are closed already, provides our community with the necessary broader context: That the crisis is one of toxicity (to the degree of manipulative and abusive conduct); and the cost and damage of this crisis.

saraedum commented 5 months ago

@saraedum People can filter on issues being a PR and even on the status label. I have shared a suitable search link in my post https://groups.google.com/g/sage-devel/c/9dvroyGGlsw

Sure. I clicked on the disputed label and was suprised that there's also disputed issues. I was expecting that the "dispute" was about whether there is an issue (or whether the issue is invalid) but it seems to be used as a marker about perceived abusive language. That's simply not what I expected this label to be about.

saraedum commented 5 months ago

@saraedum The search for the "disputed" label, including for open Issues and Issues/PRs that are closed already, provides our community with the necessary broader context: That the crisis is one of toxicity (to the degree of manipulative and abusive conduct); and the cost and damage of this crisis.

Since there are four "disputed" issues I don't think that these are relevant if it's about conveying that picture. But anyway, this issue should be about Fedora 39 and not about a meta discussion about the merits of the disputed label. So let's not go any deeper here maybe. I understand now why the disputed label is here and that no vote is needed. That's what I wanted to understand.

saraedum commented 5 months ago

I am removing the disputed label here since there is nothing that requires a vote. Also, as discussed by the sage-conduct committee, we changed the disputed label to make it clear that it is now about PRs looking for a vote.

If you want to point out comments that you think violate our Code of Conduct, then such violations should be reported to the committee. We will then decide whether to hide/delete these comments.