Skip to content
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

Preliminary steps to save the CI infrastructure #39009

Open
wants to merge 34 commits into
base: develop
Choose a base branch
from

Conversation

kwankyu
Copy link
Collaborator

@kwankyu kwankyu commented Nov 20, 2024

To improve the situation with the CI infrastructure, this PR:

  • added comments untangling obscure code in CI-related files, for those poor guys who ever attempt to read the files for whatever reasons.

  • while doing the cosmetic changes, a bug (about -uninstall targets) was found build/make/Makefile.in, which is fixed here.

    to test, do

    $ ./configure --enable-dot2tex | grep dot2tex
    $ make build | grep dot2tex
    $ ./configure --disable-dot2tex | grep dot2tex
    $ make build | grep dot2tex
    
  • fixed some jobs in the CI-linux workflow that fail because of duplicate artifact names.

  • removed ubuntu-lunar, ubuntu-mantic, conda-forge-python3.11, ubuntu-bionic-gcc_8-i386, debian-bullseye-i386 from the list of the default systems that CI runs for. This is how to properly modify the list:

    • first edit tox.ini (find DEFAULT_SYSTEM_FACTORS)
    • run tox -e update_docker_platforms
    • commit the changes
  • removed old versions of linuxmint and added new versions.

  • "optional" and "experimental" jobs now run upon "standard" docker images, instead of "maximal" ones, to avoid "out of runner space" error.

  • renamed "Reusable workflow for Docker-based portability CI" to "Workflow for Linux portability CI" for short name and made it runnable through github interface to facilitate testing specific platform.

    test: https://github.com/kwankyu/sage/actions/workflows/docker.yml

  • added helpful comments and updated the developer doc

  • reimplemented .ci/write-dockerfile.sh so that simplified Dockerfile is generated for present and future stability

  • turned off failing jobs in "CI Linux incremental"

  • removed seemingly useless subprojects/factory directory to eliminate certain git warnings.

test CI run: https://github.com/kwankyu/sage/actions/runs/13431349016
compare with the status quo: https://github.com/sagemath/sage/actions/runs/13252848846

  • turned off "standard-sitepackegs" and "standard-constraints_pkgs-norequirements" jobs as they fail on (almost) all platforms.

test CI run after the above change: https://github.com/kwankyu/sage/actions/runs/13467567390

test CI with a PR: kwankyu#81

The main objective of this PR is to solve issues with the workflow "CI Linux" such that a failure on a platform reveals solely some problem of sage built on the platform, but not a problem of the CI infrastructure. After this PR, hopefully, each of failing platforms should be tackled individually. If a platform fails, perhaps we should

  1. decide first whether to support the platform or not.
  2. if the platform is supported, open a github issue for it.
  3. if the platform is not supported, then remove it from the "master list of supported linux platforms" in tox.ini.
  4. if a supported platform constantly fails but no PR for the issue is present, then we may turn it off (by commenting it out) until fixed.

Only decent platforms according to the CI results should be listed in https://github.com/sagemath/sage/wiki/Sage-10.6-Release-Tour#availability-and-installation-help.

📝 Checklist

  • The title is concise and informative.
  • The description explains in detail what this PR is about.
  • I have linked a relevant issue or discussion.
  • I have created tests covering the changes.
  • I have updated the documentation and checked the documentation preview.

⌛ Dependencies

@kwankyu kwankyu changed the title Add comments untangling complicated code Add comments untangling obscure code in a few build-related files Nov 20, 2024
Copy link

github-actions bot commented Nov 20, 2024

Documentation preview for this PR (built with commit ff02cd0; changes) is ready! 🎉
This preview will update shortly after each push to this PR.

@kwankyu kwankyu force-pushed the p/add-comments-to-scripts branch from ff6bdcd to 7da5efe Compare November 20, 2024 13:47
@kwankyu kwankyu changed the title Add comments untangling obscure code in a few build-related files Add comments untangling obscure code in a few CI-related files Nov 21, 2024
@kwankyu kwankyu force-pushed the p/add-comments-to-scripts branch from db666ee to 6df7a6a Compare February 13, 2025 08:35
@kwankyu kwankyu changed the title Add comments untangling obscure code in a few CI-related files Add comments untangling obscure code in CI-related files Feb 13, 2025
@kwankyu kwankyu changed the title Add comments untangling obscure code in CI-related files Preliminary steps to save the CI infrastructure Feb 13, 2025
@kwankyu kwankyu marked this pull request as ready for review February 13, 2025 10:12
@kwankyu kwankyu mentioned this pull request Feb 13, 2025
5 tasks
@dimpase dimpase added the disputed PR is waiting for community vote, see https://groups.google.com/g/sage-devel/c/IgBYUJl33SQ label Feb 13, 2025
@dimpase
Copy link
Member

dimpase commented Feb 13, 2025

before proceeding it's good to decide whether we rather go with the other PR

@kwankyu kwankyu marked this pull request as draft February 15, 2025 00:39
@user202729
Copy link
Contributor

Minimal configurations are simply misleading here, as no-one in their right minds builds compilers and Python from source.

I thought minimal requires _prereq, and _prereq for many operating systems (e.g. https://github.com/sagemath/sage/blob/develop/build/pkgs/_prereq/distros/arch.txt https://github.com/sagemath/sage/blob/develop/build/pkgs/_prereq/distros/fedora.txt ) are already installing gcc and python?
Then why is it still rebuilding them from source?


By the way, @dimpase, do you think it makes sense to support building packages which are more obscure than compilers or python, e.g. gap or fplll from source on operating systems that has them in system packages?

(personal experience, though this is a long time ago I might have misremember the exact detail, I moved to meson already: there's a time where my operating system upgrades GAP to 2.14, but sage is still on GAP 2.13, so it cannot use system GAP and have to build from source — even though I have system GAP package installed.)

@kwankyu
Copy link
Collaborator Author

kwankyu commented Feb 20, 2025

I thought minimal requires _prereq, and _prereq for many operating systems (e.g. https://github.com/sagemath/sage/blob/develop/build/pkgs/_prereq/distros/arch.txt https://github.com/sagemath/sage/blob/develop/build/pkgs/_prereq/distros/fedora.txt ) are already installing gcc and python?

Yes, minimal installs the system packages of _prereq if they are not already present.

@tobiasdiez
Copy link
Contributor

"optional" and "experimental" jobs now run upon "standard" docker images, instead of "maximal" ones, to avoid "out of runner space" error.

This is not a good fix in my opinion. "maximal" means that optional sage packages are installed from the system package manager before configure + make; this is what the documentation recommends and should be tested in CI.

Moreover, I find this PR very hard to review since it does many different things at the same time. I suggest you split it in multiple smaller PRs.

@kwankyu
Copy link
Collaborator Author

kwankyu commented Feb 20, 2025

"optional" and "experimental" jobs now run upon "standard" docker images, instead of "maximal" ones, to avoid "out of runner space" error.

This is not a good fix in my opinion. "maximal" means that optional sage packages are installed from the system package manager before configure + make; this is what the documentation recommends and should be tested in CI.

There is no change in "maximal" job.

In my opinion, the purpose of "optional" job is to test optional sage packages. No? So at least optional packages should be installed before test. On "maximal" docker image, they have no chance to be installed.

Moreover, I find this PR very hard to review since it does many different things at the same time. I suggest you split it in multiple smaller PRs.

I made many small changes, as in PR description, for one goal, to make the CI infrastructure in good shape. I see no point in splitting it.

@dimpase
Copy link
Member

dimpase commented Feb 20, 2025

You just ran out of arguments ...

Right. I have no arguments for you.

so I convinced you that minimal configs must be removed, right?

@dimpase
Copy link
Member

dimpase commented Feb 20, 2025

Minimal configurations are simply misleading here, as no-one in their right minds builds compilers and Python from source.

I thought minimal requires _prereq, and _prereq for many operating systems (e.g. https://github.com/sagemath/sage/blob/develop/build/pkgs/_prereq/distros/arch.txt https://github.com/sagemath/sage/blob/develop/build/pkgs/_prereq/distros/fedora.txt ) are already installing gcc and python?
Then why is it still rebuilding them from source?

none of the minimal configurations installs gfortan. This is just sabotage, aimed at keeping Sage in its present hard to install, user unfriendly, monster shape.

Then, prereqs are only for building Sage, not for running it.

Some time ago it turned out that a certain utility, needed for a minimal Debian config, became a part of a Debian package not listed among the minimal config packages.
My obvious proposal for a fix was just to add it to the minimal config.
The solution currently in Sage, accepted instead of mine? Reimplement the needed functionality as a shell script. Why? Because "minimality". Do you understand now why this project has to change direction here?


By the way, @dimpase, do you think it makes sense to support building packages which are more obscure than compilers or python, e.g. gap or fplll from source on operating systems that has them in system packages?

(personal experience, though this is a long time ago I might have misremember the exact detail, I moved to meson already: there's a time where my operating system upgrades GAP to 2.14, but sage is still on GAP 2.13, so it cannot use system GAP and have to build from source — even though I have system GAP package installed.)

Only truly obscure packages should be a part of Sage, apart from sagelib itself.

Sage should not be a replacement of a missing macOS package system, and Sage should not be held hostage of laziness of macOS folks, who can't be bothered to supply missing in Homebrew formulas for e.g. GAP (GAP does have an unofficial Homebrew formula, it's unfortunately missing libgap).

@kwankyu
Copy link
Collaborator Author

kwankyu commented Feb 20, 2025

You just ran out of arguments ...

Right. I have no arguments for you.

so I convinced you that minimal configs must be removed, right?

No. I think that you are in a "religious war against the minimal configs", which is off topic for this PR.

Further discussion with you on the off-topic just ruins the purpose of this PR setting up the crumbling CI infrastructure right.

@kwankyu
Copy link
Collaborator Author

kwankyu commented Feb 20, 2025

none of the minimal configurations installs gfortan.

If you believe gfortran to be in _prereq, which defines the minimal configurations, then just open up your own PR to do that.

The present PR has nothing to do with the exact list of the prerequisites, that is a minimal set of system packages required to build sage from source. This topic belongs to the sage build system, not the CI infrastructure.

@user202729
Copy link
Contributor

Only truly obscure packages should be a part of Sage, apart from sagelib itself.

Sage should not be a replacement of a missing macOS package system, and Sage should not be held hostage of laziness of macOS folks, who can't be bothered to supply missing in Homebrew formulas for e.g. GAP (GAP does have an unofficial Homebrew formula, it's unfortunately missing libgap).

Just checking if I understood you correctly:

  • Does the current "rebuild-from-source if system package not present" workaround provide GAP on Mac? (If I understood correctly at least it does so without further user intervention, even though it takes a long time to rebuild from source?)
  • In your suggested proposal, Sage does not provide GAP in its distribution, then the user would have to figure out how to install GAP themselves from the unofficial formula?

Some time ago it turned out that a certain utility, needed for a minimal Debian config, became a part of a Debian package not listed among the minimal config packages.
My obvious proposal for a fix was just to add it to the minimal config.
The solution currently in Sage, accepted instead of mine? Reimplement the needed functionality as a shell script. Why? Because "minimality". Do you understand now why this project has to change direction here?

Maybe there's some misunderstanding here. Just because the build is called minimal doesn't mean it need to reimplement everything from scratch like this.

Let's define minimal to mean "minimal supported configuration" and standard to mean "maximal supported configuration (without optional packages)". As long as these two differs, you need two differently-named configurations, and I think minimal and standard are fine names for them.

@dimpase
Copy link
Member

dimpase commented Feb 21, 2025

Only truly obscure packages should be a part of Sage, apart from sagelib itself.

Sage should not be a replacement of a missing macOS package system, and Sage should not be held hostage of laziness of macOS folks, who can't be bothered to supply missing in Homebrew formulas for e.g. GAP (GAP does have an unofficial Homebrew formula, it's unfortunately missing libgap).

Just checking if I understood you correctly:

  • Does the current "rebuild-from-source if system package not present" workaround provide GAP on Mac? (If I understood correctly at least it does so without further user intervention, even though it takes a long time to rebuild from source?)
  • In your suggested proposal, Sage does not provide GAP in its distribution, then the user would have to figure out how to install GAP themselves from the unofficial formula?

no, why? We'll tell the user to run

brew install foobar/gap

along with a host of other brew install....

Some time ago it turned out that a certain utility, needed for a minimal Debian config, became a part of a Debian package not listed among the minimal config packages.
My obvious proposal for a fix was just to add it to the minimal config.
The solution currently in Sage, accepted instead of mine? Reimplement the needed functionality as a shell script. Why? Because "minimality". Do you understand now why this project has to change direction here?

Maybe there's some misunderstanding here.

There is no misunderstanding.
mkoeppe literally implemented a part of functionality of this utility, pkill, because otherwise it would have to come from a package which, oh horror, installs a few other utilities....
See #36726

Now @kwankyu wants to preserve all these spaghetti, even though mkoeppe is gone and people don't see much point in preserving all that.

Just because the build is called minimal doesn't mean it need to reimplement everything from scratch like this.

Let's define minimal to mean "minimal supported configuration" and standard to mean "maximal supported configuration (without optional packages)". As long as these two differs, you need two differently-named configurations, and I think minimal and standard are fine names for them.

Why on Earth do you need to even think about that "minimal" thing? Why not just tell the user to install "standard" in no uncertain terms?

This is much easier for the user and for support.

@user202729
Copy link
Contributor

user202729 commented Feb 21, 2025

Why on Earth

would you avoid phrases that may be perceived as aggression, thanks.


tell the user to install "standard"

I don't have a conceptual objection to this, but what's the availability of various packages on various systems?

This is all packages, sorted by decreasing availability:

[pkgs]$ { for x in *; do echo "$(cat $x/type 2> /dev/null) $x $(ls $x/distros 2>/dev/null | wc -l)" $(ls $x/distros 2> /dev/null); done; } | sort -k3 -n -r | sort -k1,1 -s | sed 's/\.txt//g'
base configure 0
experimental lie 6 debian gentoo macports nix opensuse repology
experimental surf 4 debian fedora opensuse repology
experimental polylib 3 macports opensuse repology
experimental cocoalib 3 fedora freebsd repology
experimental barvinok 3 freebsd opensuse repology
experimental r_jupyter 1 repology
experimental modular_decomposition 1 repology
experimental deformation 1 repology
experimental awali 1 repology
experimental gap3 0
optional sbcl 14 alpine arch conda debian fedora freebsd gentoo homebrew macports nix openbsd opensuse repology void
optional libxml2 14 alpine arch debian fedora freebsd gentoo homebrew macports nix opensuse pyodide repology slackware void
optional _develop 14 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse repology slackware void
optional r 13 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse repology void
optional llvm 13 alpine arch debian fedora freebsd gentoo homebrew macports nix openbsd opensuse slackware void
optional github_cli 13 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse repology void
optional free_fonts 13 alpine arch conda debian fedora freebsd gentoo macports nix openbsd opensuse repology void
optional ffmpeg 13 alpine arch conda debian fedora freebsd homebrew macports nix opensuse pyodide repology void
optional _bootstrap 13 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse slackware void
optional pandoc 12 alpine arch conda debian fedora freebsd gentoo homebrew macports opensuse repology void
optional onetbb 12 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse void
optional libgraphviz 12 alpine arch conda debian fedora freebsd homebrew macports nix opensuse repology void
optional imagemagick 12 alpine arch conda debian fedora freebsd homebrew macports nix opensuse repology void
optional graphviz 12 alpine arch conda debian fedora freebsd homebrew macports nix opensuse repology void
optional perl_term_readline_gnu 11 alpine arch cpan debian fedora freebsd gentoo macports opensuse repology void
optional pdf2svg 11 alpine arch conda debian fedora freebsd homebrew macports nix opensuse repology
optional git 11 arch conda debian fedora freebsd homebrew macports opensuse repology slackware void
optional texlive 10 alpine arch debian fedora gentoo macports opensuse repology slackware void
optional libjpeg 10 alpine arch debian fedora gentoo homebrew nix opensuse slackware void
optional isl 10 conda debian fedora freebsd gentoo homebrew macports opensuse repology void
optional igraph 10 arch conda debian fedora freebsd gentoo homebrew macports repology void
optional cbc 10 arch conda debian fedora freebsd gentoo homebrew nix repology void
optional texttable 9 arch conda debian fedora gentoo macports opensuse repology void
optional symengine 9 arch conda freebsd gentoo homebrew macports nix opensuse repology
optional _sagemath 9 arch conda debian fedora freebsd homebrew nix repology void
optional lrslib 9 arch conda debian fedora freebsd gentoo nix opensuse repology
optional texlive_luatex 8 alpine arch debian fedora gentoo macports opensuse repology
optional jmol 8 arch conda fedora macports nix opensuse repology void
optional gdb 8 alpine conda fedora homebrew macports opensuse repology void
optional dsdp 8 arch conda debian fedora freebsd gentoo macports repology
optional ccache 8 arch conda fedora homebrew macports opensuse repology void
optional 4ti2 8 arch conda debian fedora freebsd gentoo opensuse repology
optional valgrind 7 alpine fedora homebrew macports opensuse repology void
optional rubiks 7 arch conda debian fedora freebsd nix repology
optional python_igraph 7 arch conda debian fedora freebsd macports repology
optional polymake 7 arch debian fedora homebrew nix opensuse repology
optional perl_cpan_polymake_prereq 7 alpine cpan debian fedora freebsd gentoo void
optional pari_seadata 7 arch conda fedora freebsd opensuse repology void
optional pari_galpol 7 arch conda fedora freebsd opensuse repology void
optional normaliz 7 arch conda debian fedora gentoo opensuse repology
optional libogg 7 conda fedora homebrew macports opensuse repology void
optional gp2c 7 debian fedora freebsd gentoo opensuse repology void
optional e_antic 7 arch conda debian fedora freebsd opensuse repology
optional bliss 7 alpine arch conda fedora gentoo opensuse repology
optional sqlalchemy 6 conda fedora macports opensuse repology void
optional pycosat 6 alpine arch conda fedora freebsd repology
optional pari_elldata 6 arch conda freebsd opensuse repology void
optional libnauty 6 debian fedora homebrew macports repology void
optional fricas 6 debian freebsd gentoo macports opensuse repology
optional xindy 5 debian fedora macports opensuse repology
optional symengine_py 5 arch conda freebsd gentoo repology
optional sirocco 5 arch conda fedora opensuse repology
optional pybtex 5 conda fedora macports opensuse repology
optional perl_mongodb 5 cpan debian fedora freebsd gentoo
optional pari_nftables 5 conda freebsd opensuse repology void
optional nibabel 5 conda fedora macports opensuse repology
optional libsemigroups 5 conda fedora freebsd opensuse repology
optional latte_int 5 arch conda fedora opensuse repology
optional dot2tex 5 arch conda fedora macports repology
optional soplex 4 conda fedora freebsd repology
optional qepcad 4 debian fedora macports repology
optional pyx 4 macports opensuse repology void
optional pygraphviz 4 conda fedora macports repology
optional pycryptosat 4 conda fedora homebrew repology
optional mcqd 4 arch fedora opensuse repology
optional kissat 4 fedora gentoo nix repology
optional jupyter_jsmol 4 arch conda freebsd repology
optional coxeter3 4 arch fedora opensuse repology
optional biopython 4 conda fedora macports repology
optional tdlib 3 arch fedora repology
optional singular_jupyter 3 conda fedora repology
optional scip 3 conda fedora repology
optional saclib 3 debian fedora repology
optional _recommended 3 debian homebrew macports
optional pysingular 3 conda fedora repology
optional pynormaliz 3 arch conda repology
optional plantri 3 arch fedora repology
optional pari_jupyter 3 conda fedora repology
optional meataxe 3 arch fedora repology
optional _gcc9 3 debian homebrew opensuse
optional _gcc11 3 debian homebrew opensuse
optional _gcc10 3 debian homebrew opensuse
optional gap_packages 3 conda fedora repology
optional gap_jupyter 3 conda fedora repology
optional csdp 3 arch fedora repology
optional buckygen 3 arch opensuse repology
optional benzene 3 arch opensuse repology
optional pyscipopt 2 conda freebsd
optional pandoc_attributes 2 conda repology
optional notedown 2 conda repology
optional mpfrcx 2 opensuse repology
optional jupymake 2 fedora repology
optional _gcc8 2 debian opensuse
optional frobby 2 fedora repology
optional topcom 1 repology
optional tides 1 repology
optional surface_dynamics 1 repology
optional slabbe 1 repology
optional scs 1 conda
optional sage_numerical_backends_gurobi 1 repology
optional sage_numerical_backends_cplex 1 repology
optional sage_numerical_backends_coin 1 repology
optional sagemath_sirocco 1 conda
optional sagemath_bliss 1 conda
optional rst2ipynb 1 repology
optional qdldl_python 1 conda
optional pyppeteer 1 conda
optional polytopes_db_4d 1 repology
optional p_group_cohomology 1 repology
optional osqp_python 1 conda
optional ore_algebra 1 repology
optional mathics 1 conda
optional lidia 1 repology
optional kenzo 1 repology
optional glucose 1 repology
optional _gcc12 1 debian
optional ecos_python 1 conda
optional database_symbolic_data 1 repology
optional database_stein_watkins_mini 1 repology
optional database_stein_watkins 1 repology
optional database_odlyzko_zeta 1 repology
optional database_mutation_class 1 repology
optional database_kohel 1 repology
optional database_jones_numfield 1 repology
optional database_cremona_ellcurve 1 repology
optional d3js 1 repology
optional cvxpy 1 conda
optional cunningham_tables 1 repology
optional snappy 0
optional scip_sdp 0
optional sage_sws2rst 0
optional sagemath_tdlib 0
optional sagemath_repl 0
optional sagemath_objects 0
optional sagemath_meataxe 0
optional sagemath_mcqd 0
optional sagemath_environment 0
optional sagemath_doc_pdf 0
optional sagemath_coxeter3 0
optional sagemath_categories 0
optional sage_flatsurf 0
optional python_flint 0
optional phitigra 0
optional papilo 0
optional msolve 0
optional modular_resolution 0
optional matroid_database 0
optional hypothesis 0
optional gitpython 0
optional database_knotinfo 0
optional database_cubic_hecke 0
optional cylp 0
optional clarabel 0
optional auditwheel_or_delocate 0
optional admcycles 0
 palettable 1 fedora
 pint 1 fedora
 _python3.10 8 arch conda debian fedora freebsd homebrew macports opensuse
 _python3.11 9 arch conda debian fedora freebsd homebrew macports opensuse void
 _python3.12 8 arch conda debian fedora freebsd homebrew macports opensuse
 _python3.9 8 arch conda debian fedora freebsd homebrew macports opensuse
standard gsl 15 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse pyodide repology slackware void
standard sqlite 14 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse repology slackware void
standard openssl 14 alpine arch conda debian fedora freebsd homebrew macports nix opensuse pyodide repology slackware void
standard openblas 14 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse pyodide repology void
standard libgd 14 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse repology slackware void
standard glpk 14 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse pyodide repology void
standard cmake 14 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse repology slackware void
standard suitesparse 13 alpine arch conda debian fedora freebsd gentoo homebrew macports opensuse pyodide repology void
standard qhull 13 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse repology void
standard _prereq 13 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse slackware void
standard pari 13 alpine arch conda debian fedora freebsd gentoo homebrew macports nix opensuse repology void
standard libatomic_ops 13 alpine arch conda debian fedora freebsd gentoo homebrew macports opensuse repology slackware void
standard gmp 13 alpine conda debian fedora freebsd gentoo homebrew macports opensuse pyodide repology slackware void
standard gc 13 alpine arch conda debian fedora freebsd gentoo homebrew macports opensuse repology slackware void
standard boost_cropped 13 arch conda debian fedora freebsd homebrew macports nix opensuse pyodide repology slackware void
standard zeromq 12 alpine arch conda debian fedora freebsd gentoo homebrew macports opensuse repology void
standard readline 12 arch conda debian fedora freebsd homebrew macports nix opensuse repology slackware void
standard ppl 12 arch conda debian fedora freebsd gentoo homebrew macports nix opensuse repology void
standard patch 12 alpine arch conda debian fedora freebsd homebrew macports opensuse repology slackware void
standard mpfr 12 alpine conda debian fedora freebsd gentoo homebrew opensuse pyodide repology slackware void
standard mpc 12 alpine conda debian fedora freebsd gentoo homebrew nix opensuse pyodide repology void
standard maxima 12 arch conda debian fedora freebsd gentoo homebrew macports nix opensuse repology void
standard gfortran 12 alpine arch conda debian fedora freebsd homebrew macports opensuse repology slackware void
standard flint 12 alpine conda debian fedora freebsd gentoo homebrew macports nix opensuse repology void
standard ecl 12 alpine arch conda debian fedora freebsd gentoo homebrew macports nix repology void
standard cddlib 12 arch conda debian fedora freebsd gentoo homebrew macports nix opensuse repology void
standard zlib 11 alpine conda debian fedora homebrew macports opensuse pyodide repology slackware void
standard tox 11 arch conda debian fedora freebsd gentoo homebrew macports repology slackware void
standard sphinx 11 arch conda debian fedora freebsd gentoo homebrew macports opensuse repology void
standard singular 11 arch conda debian fedora freebsd gentoo homebrew macports nix repology void
standard ntl 11 conda debian fedora freebsd gentoo homebrew macports nix opensuse repology void
standard ninja_build 11 arch conda debian fedora freebsd gentoo homebrew macports opensuse repology void
standard ncurses 11 alpine conda debian fedora freebsd homebrew macports opensuse repology slackware void
standard meson 11 alpine arch debian fedora freebsd gentoo homebrew nix opensuse repology slackware
standard liblzma 11 alpine conda debian fedora homebrew macports opensuse pyodide repology slackware void
standard libffi 11 alpine conda debian fedora freebsd homebrew macports opensuse repology slackware void
standard ipython 11 arch conda debian fedora freebsd gentoo homebrew macports opensuse repology void
standard freetype 11 alpine conda debian freebsd homebrew macports nix opensuse repology slackware void
standard cython 11 arch conda debian fedora freebsd gentoo homebrew macports opensuse repology void
standard curl 11 alpine conda debian fedora freebsd homebrew macports opensuse repology slackware void
standard xz 10 alpine conda debian fedora homebrew macports opensuse repology slackware void
standard tzlocal 10 arch conda debian fedora freebsd gentoo macports opensuse repology void
standard tinycss2 10 alpine arch conda debian fedora freebsd gentoo macports opensuse void
standard tachyon 10 arch conda debian fedora freebsd gentoo nix opensuse repology void
standard sphinxcontrib_websupport 10 alpine arch conda debian fedora freebsd gentoo macports opensuse repology
standard setuptools_scm 10 arch conda debian fedora freebsd gentoo macports opensuse repology void
standard scipy 10 arch conda debian fedora gentoo homebrew macports opensuse repology void
standard pygments 10 arch conda debian fedora gentoo homebrew macports opensuse repology void
standard prompt_toolkit 10 arch conda debian fedora freebsd gentoo macports opensuse repology void
standard primesieve 10 alpine arch conda debian fedora gentoo homebrew opensuse repology void
standard planarity 10 arch conda debian fedora freebsd gentoo nix opensuse repology void
standard pkgconfig 10 arch conda debian fedora freebsd gentoo macports opensuse repology void
standard pkgconf 10 arch conda debian fedora freebsd homebrew macports opensuse repology void
standard pip 10 arch conda debian fedora freebsd gentoo macports opensuse repology void
standard patchelf 10 debian fedora freebsd gentoo homebrew macports nix opensuse repology void
standard numpy 10 arch conda debian fedora gentoo homebrew macports opensuse repology void
standard nauty 10 arch conda debian fedora freebsd homebrew nix opensuse repology void
standard m4rie 10 arch conda debian fedora freebsd gentoo nix opensuse repology void
standard m4ri 10 arch conda debian fedora freebsd gentoo nix opensuse repology void
standard linbox 10 arch conda debian fedora freebsd gentoo nix opensuse repology void
standard libhomfly 10 arch conda debian fedora freebsd gentoo nix opensuse repology void
standard libbraiding 10 arch conda debian fedora freebsd gentoo nix opensuse repology void
standard ipykernel 10 arch conda debian fedora freebsd gentoo macports opensuse repology void
standard info 10 conda debian fedora gentoo homebrew macports nix opensuse repology void
standard iml 10 arch conda debian fedora freebsd gentoo nix opensuse repology void
standard gmpy2 10 arch conda debian fedora freebsd gentoo macports opensuse repology void
standard gfan 10 arch conda debian fedora freebsd gentoo nix opensuse repology void
standard fplll 10 arch conda debian fedora freebsd gentoo homebrew opensuse repology void
standard fflas_ffpack 10 arch conda debian fedora freebsd gentoo nix opensuse repology void
standard fastjsonschema 10 alpine arch conda debian fedora freebsd gentoo macports opensuse void
standard dateutil 10 arch conda debian fedora freebsd gentoo macports opensuse repology void
standard cycler 10 arch conda debian fedora freebsd gentoo macports opensuse repology void
standard cliquer 10 arch conda debian fedora freebsd gentoo nix opensuse repology void
standard brial 10 arch conda debian fedora freebsd gentoo nix opensuse repology void
standard beautifulsoup4 10 alpine arch conda debian fedora gentoo macports opensuse repology void
standard widgetsnbextension 9 arch conda fedora freebsd gentoo macports opensuse repology void
standard wheel 9 arch conda debian fedora gentoo macports opensuse repology void
standard webencodings 9 arch conda debian fedora gentoo macports opensuse repology void
standard sympy 9 arch conda debian fedora gentoo macports opensuse repology void
standard sympow 9 arch conda debian fedora gentoo nix opensuse repology void
standard symmetrica 9 arch conda debian fedora freebsd gentoo nix repology void
standard sphinxcontrib_serializinghtml 9 arch conda fedora freebsd gentoo macports opensuse repology void
standard sphinxcontrib_qthelp 9 arch conda fedora freebsd gentoo macports opensuse repology void
standard sphinxcontrib_htmlhelp 9 arch conda fedora freebsd gentoo macports opensuse repology void
standard sphinxcontrib_devhelp 9 arch conda fedora freebsd gentoo macports opensuse repology void
standard six 9 arch conda debian fedora gentoo macports opensuse repology void
standard setuptools 9 arch conda debian fedora gentoo macports opensuse repology void
standard requests 9 arch conda debian fedora gentoo macports opensuse repology void
standard pytz 9 arch conda debian fedora gentoo macports opensuse repology void
standard python3 9 alpine debian fedora freebsd homebrew macports opensuse repology void
standard ptyprocess 9 arch conda fedora freebsd gentoo macports opensuse repology void
standard primecount 9 arch conda debian fedora gentoo homebrew opensuse repology void
standard pillow 9 arch conda debian fedora gentoo macports opensuse repology void
standard pickleshare 9 arch conda debian fedora gentoo macports opensuse repology void
standard pexpect 9 arch conda fedora freebsd gentoo macports opensuse repology void
standard pandocfilters 9 arch conda debian fedora gentoo macports opensuse repology void
standard packaging 9 arch conda debian fedora gentoo macports opensuse repology void
standard networkx 9 arch conda debian fedora gentoo macports opensuse repology void
standard mpfi 9 conda debian freebsd gentoo homebrew nix opensuse repology void
standard matplotlib 9 arch conda debian fedora gentoo macports opensuse repology void
standard lrcalc 9 arch conda debian fedora freebsd gentoo nix repology void
standard libpng 9 alpine conda freebsd homebrew macports opensuse repology slackware void
standard lcalc 9 arch conda debian fedora freebsd gentoo nix repology void
standard jsonschema 9 arch conda debian fedora gentoo macports opensuse repology void
standard importlib_metadata 9 arch conda debian fedora freebsd gentoo opensuse repology void
standard givaro 9 conda debian fedora freebsd gentoo nix opensuse repology void
standard giac 9 arch conda debian fedora freebsd nix opensuse repology void
standard gf2x 9 alpine arch conda debian fedora freebsd opensuse repology void
standard gengetopt 9 alpine conda debian fedora gentoo homebrew nix repology void
standard eclib 9 arch conda debian fedora freebsd gentoo nix repology void
standard decorator 9 arch conda debian fedora gentoo macports opensuse repology void
standard cvxopt 9 arch conda debian fedora freebsd gentoo macports opensuse repology
standard certifi 9 arch conda debian fedora gentoo macports opensuse repology void
standard bzip2 9 alpine conda debian fedora homebrew opensuse repology slackware void
standard bleach 9 arch conda debian fedora gentoo macports opensuse repology void
standard babel 9 arch conda debian fedora gentoo macports opensuse repology void
standard urllib3 8 arch conda debian fedora freebsd gentoo opensuse void
standard typing_extensions 8 arch conda debian fedora freebsd gentoo opensuse void
standard sphinxcontrib_jsmath 8 arch conda freebsd gentoo macports opensuse repology void
standard sphinxcontrib_applehelp 8 arch conda freebsd gentoo macports opensuse repology void
standard rw 8 arch conda debian fedora freebsd nix repology void
standard pyparsing 8 arch conda fedora freebsd gentoo opensuse repology void
standard mpmath 8 arch conda debian fedora gentoo opensuse repology void
standard meson_python 8 alpine arch debian fedora freebsd gentoo opensuse void
standard jinja2 8 conda debian fedora gentoo macports opensuse repology void
standard gcc 8 arch debian fedora freebsd homebrew opensuse repology void
standard gap 8 arch conda debian fedora freebsd gentoo nix repology
standard ecm 8 conda debian fedora freebsd macports nix repology void
standard docutils 8 conda fedora gentoo homebrew macports opensuse repology void
standard wcwidth 7 conda fedora gentoo macports opensuse repology void
standard tornado 7 conda fedora gentoo macports opensuse repology void
standard sphinx_copybutton 7 alpine arch conda fedora freebsd gentoo void
standard send2trash 7 conda fedora gentoo macports opensuse repology void
standard rpy2 7 arch conda debian freebsd macports opensuse repology
standard pyzmq 7 arch conda fedora gentoo opensuse repology void
standard pycparser 7 conda fedora gentoo macports opensuse repology void
standard pybind11 7 conda fedora gentoo homebrew macports repology void
standard py 7 arch conda debian fedora gentoo opensuse void
standard prometheus_client 7 conda fedora gentoo macports opensuse repology void
standard pplpy 7 arch conda fedora freebsd gentoo repology void
standard pluggy 7 arch conda debian fedora gentoo opensuse void
standard pari_galdata 7 arch conda fedora freebsd opensuse repology void
standard palp 7 arch conda debian fedora nix repology void
standard notebook 7 arch conda fedora gentoo macports repology void
standard markupsafe 7 conda fedora gentoo macports opensuse repology void
standard jupyter_core 7 conda fedora gentoo macports opensuse repology void
standard jupyter_client 7 conda fedora gentoo macports opensuse repology void
standard idna 7 arch conda debian fedora gentoo opensuse void
standard cffi 7 conda fedora gentoo macports opensuse repology void
standard calver 7 alpine arch freebsd gentoo macports opensuse void
standard argon2_cffi_bindings 7 alpine arch fedora freebsd gentoo macports opensuse
standard zipp 6 conda fedora gentoo macports repology void
standard trove_classifiers 6 alpine arch fedora freebsd gentoo macports
standard traitlets 6 conda gentoo macports opensuse repology void
standard sphinx_basic_ng 6 arch conda debian fedora freebsd gentoo
standard snowballstemmer 6 conda gentoo macports opensuse repology void
standard pyrsistent 6 conda fedora gentoo macports repology void
standard parso 6 conda fedora gentoo macports repology void
standard nbformat 6 conda fedora gentoo opensuse repology void
standard nbconvert 6 conda fedora gentoo opensuse repology void
standard mathjax 6 conda fedora gentoo opensuse repology void
standard kiwisolver 6 conda fedora gentoo macports repology void
standard jupyter_sphinx 6 arch conda fedora freebsd macports opensuse
standard jupyterlab 6 conda fedora homebrew macports repology void
standard jedi 6 conda fedora gentoo macports repology void
standard ipywidgets 6 conda fedora gentoo macports repology void
standard ipython_genutils 6 conda fedora gentoo macports repology void
standard imagesize 6 conda fedora gentoo macports repology void
standard furo 6 arch conda debian fedora freebsd gentoo
standard entrypoints 6 conda fedora gentoo macports repology void
standard defusedxml 6 conda fedora gentoo macports repology void
standard terminado 5 conda gentoo macports repology void
standard pytest 5 conda fedora macports repology void
standard pyproject_metadata 5 arch debian fedora gentoo void
standard pyproject_hooks 5 arch debian fedora gentoo void
standard pyproject_api 5 arch debian fedora gentoo void
standard pari_seadata_small 5 arch conda freebsd repology void
standard mistune 5 conda fedora gentoo repology void
standard jupyterlab_widgets 5 arch freebsd macports opensuse repology
standard ipympl 5 arch conda freebsd macports repology
standard iniconfig 5 arch debian fedora gentoo void
standard execnet 5 arch debian fedora gentoo void
standard attrs 5 conda gentoo macports repology void
standard argon2_cffi 5 conda gentoo macports repology void
standard alabaster 5 conda gentoo opensuse repology void
standard tomli 4 conda fedora gentoo void
standard pythran 4 conda fedora gentoo void
standard nest_asyncio 4 conda fedora gentoo void
standard nbclient 4 conda fedora gentoo void
standard matplotlib_inline 4 conda fedora gentoo void
standard jupyterlab_pygments 4 conda fedora gentoo void
standard iconv 4 homebrew macports pyodide repology
standard gast 4 conda fedora gentoo void
standard flit_core 4 conda fedora gentoo void
standard conway_polynomials 4 arch conda gentoo repology
standard charset_normalizer 4 conda fedora gentoo void
standard beniget 4 conda fedora gentoo void
standard virtualenv 3 conda fedora void
standard stack_data 3 conda fedora gentoo
standard pure_eval 3 conda fedora gentoo
standard primecountpy 3 conda fedora gentoo
standard polytopes_db 3 arch conda repology
standard ply 3 conda gentoo void
standard platformdirs 3 conda fedora gentoo
standard pathspec 3 conda fedora gentoo
standard importlib_resources 3 conda debian gentoo
standard hatchling 3 conda fedora gentoo
standard graphs 3 arch conda repology
standard fpylll 3 conda gentoo repology
standard fonttools 3 conda fedora gentoo
standard executing 3 conda fedora gentoo
standard editables 3 conda fedora gentoo
standard cysignals 3 conda gentoo repology
standard cypari 3 conda gentoo repology
standard cppy 3 conda fedora gentoo
standard combinatorial_designs 3 arch conda repology
standard appnope 3 conda macports repology
standard tzdata 2 conda fedora
standard threejs 2 conda repology
standard soupsieve 2 conda fedora
standard sagetex 2 conda repology
standard pytz_deprecation_shim 2 conda fedora
standard pytest_xdist 2 conda fedora
standard memory_allocator 2 conda gentoo
standard lrcalc_python 2 conda fedora
standard filelock 2 conda void
standard elliptic_curves 2 conda repology
standard distlib 2 conda void
standard contourpy 2 fedora gentoo
standard asttokens 2 conda gentoo
standard appdirs 2 conda void
standard sagenb_export 1 repology
standard sagelib 1 repology
standard sage_docbuild 1 repology
standard python_build 1 conda
standard debugpy 1 conda
standard websocket_client 0
standard webcolors 0
standard uri_template 0
standard types_python_dateutil 0
standard sphinx_inline_tabs 0
standard sniffio 0
standard sage_setup 0
standard sagemath_doc_html 0
standard sage_conf 0
standard rfc3986_validator 0
standard rfc3339_validator 0
standard referencing 0
standard pyyaml 0
standard python_json_logger 0
standard pytest_mock 0
standard psutil 0
standard pplpy_doc 0
standard overrides 0
standard notebook_shim 0
standard jupyter_server_terminals 0
standard jupyter_server 0
standard jupyter_lsp 0
standard jupyterlab_server 0
standard jupyterlab_mathjax2 0
standard jupyter_events 0
standard jsonschema_specifications 0
standard jsonpointer 0
standard json5 0
standard isoduration 0
standard httpx 0
standard httpcore 0
standard h11 0
standard gnumake_tokenpool 0
standard gnulib 0
standard fqdn 0
standard exceptiongroup 0
standard comm 0
standard colorama 0
standard chardet 0
standard cachetools 0
standard async_lru 0
standard arrow 0
standard anyio 0

which fraction of these do you propose to support building from source, and which fraction do you propose to require the user to install by system package manager? (if you're proposing requiring some package to be system-package-manager-only, it would be time to discuss which.)
How about e.g. this one

standard mistune 5 conda fedora gentoo repology void

I suppose if I'm on Arch, I'd still need to build it from source?

@kwankyu
Copy link
Collaborator Author

kwankyu commented Feb 21, 2025

There is no misunderstanding. mkoeppe literally implemented a part of functionality of this utility, pkill, because otherwise it would have to come from a package which, oh horror, installs a few other utilities.... See #36726

Now @kwankyu wants to preserve all these spaghetti, even though mkoeppe is gone and people don't see much point in preserving all that.

Big no. Let me repeat. I don't care what is in "_prereq" as far as it contains reasonable minimal requirements that we can request users to install before starting to build sage from source.

Go ahead and make your own PR to define your own version of minimal configuration and seek approval.

In the other PR, just admit that distinction of "minimal", "standard" , and "maximal"configurations is a good idea.

Why on Earth do you need to even think about that "minimal" thing? Why not just tell the user to install "standard" in no uncertain terms?

Do you want "minimal" = "standard", and require users to install a big bunch of system packages? Then discuss on sage-devel about that idea. This PR does not prevent you from doing that.

@dimpase
Copy link
Member

dimpase commented Feb 21, 2025

Why on Earth

would you avoid phrases that may be perceived as aggression, thanks.

@user202729
there is no aggressive connotation in this sentence. It expresses a genuine puzzlement, at most.

@dimpase
Copy link
Member

dimpase commented Feb 21, 2025

Go ahead and make your own PR to define your own version of minimal configuration and seek approval.

not until we have a consensus on what this is. I'm not going to waste my time making PRs which get disputed

@kwankyu
Copy link
Collaborator Author

kwankyu commented Feb 21, 2025

To help you understand the effect of this change

  • "optional" and "experimental" jobs now run upon "standard" docker images, instead of "maximal" ones

here is a diagram of the jobs (configurations "minimal", "standard", etc.) showing how packages are installed:

                _prereq | standard package | optional package | experimental package
-------------------------------------------------------------------------------------
"minimal"        SSSSSS | ---------------- |
"standard"       SSSSSS | SSSS------------ |
"maximal"        SSSSSS | SSSS------------ | SSSS------------ | 
"optional"       SSSSSS | SSSS------------ | ---------------- | 
"experimental"   SSSSSS | SSSS------------ | ---------------- | ------------------ |

where "S" represents system package and dash "-" represents Sage package.

All configurations are useful to detect what Sage package or system package has issues in the build system.

@dimpase
Copy link
Member

dimpase commented Feb 21, 2025

>                 _prereq | standard package | optional package | experimental package
> -------------------------------------------------------------------------------------
> "minimal"        SSSSSS | ---------------- |
> "standard"       SSSSSS | SSSS------------ |
                            ^^^^

The portion of standard packages I marked with ^^^^ should be moved to _pre-reqs, and purged from Sage - not the least because we'll request them to be installed in the system, and most users have a portion of these installed, anyway.
Then "minimal" becomes totally meaningless.

@user202729
Copy link
Contributor

>                 _prereq | standard package | optional package | experimental package
> -------------------------------------------------------------------------------------
> "minimal"        SSSSSS | ---------------- |
> "standard"       SSSSSS | SSSS------------ |
                            ^^^^

The portion of standard packages I marked with ^^^^ should be moved to _pre-reqs, and purged from Sage - not the least because we'll request them to be installed in the system, and most users have a portion of these installed, anyway. Then "minimal" becomes totally meaningless.

In principle I agree that saves electricity. But in practice I can see a problem that may come up.

How likely/frequent is this case in your opinion, and how do you propose to deal with them?

  1. users without root access. (arguably they could still use conda.)

  2. let's say the situation is as follows

                      _prereq | standard package | optional package | experimental package
    ---------------------------------------------------------------------------------------
    minimal            SSSSSS | ---------------- |
    standard fedora31  SSSSSS | SSSSSS---------- |
    standard fedora32  SSSSSS | SSSS------------ |
    

    something happens between fedora31 and fedora32 that requires some packages that are previously S become -. (e.g. system package version updated, sage package version did not update)

    without building these package from source before fedora32 is released, it's possible that the build from source has been broken all along and the bug only got spotted after fedora32 is released.

@kwankyu
Copy link
Collaborator Author

kwankyu commented Feb 21, 2025

>                 _prereq | standard package | optional package | experimental package
> -------------------------------------------------------------------------------------
> "minimal"        SSSSSS | ---------------- |
> "standard"       SSSSSS | SSSS------------ |
                            ^^^^

The portion of standard packages I marked with ^^^^ should be moved to _pre-reqs, and purged from Sage - not the least because we'll request them to be installed in the system, and most users have a portion of these installed, anyway. Then "minimal" becomes totally meaningless.

OK. You want "_prereq == standard package". If that is your vision, then go ahead with your own PR to achieve that. When that PR would get merged, we may remove "minimal" configuration from the CI.

That vision is about the build system. Until the build system get changed, we should keep the current CI that support the current build system. The aim of this PR is to improve the current CI.

By the way, the other PR is trying to destroy the current CI, with no change to the current build system.

@kwankyu
Copy link
Collaborator Author

kwankyu commented Feb 21, 2025

The portion of standard packages I marked with ^^^^ should be moved to _pre-reqs, and purged from Sage - not the least because we'll request them to be installed in the system, and most users have a portion of these installed, anyway. Then "minimal" becomes totally meaningless.

OK. You want "_prereq == standard package".

Did I correctly describe your position?

Perhaps I misunderstood... If you just want to move some packages from "standard packages" to "_prereq", then that is just minor adjustments in the build system, such that the distinction of "minimal" and "standard" in CI is still useful.

@dimpase
Copy link
Member

dimpase commented Feb 21, 2025

The portion of standard packages I marked with ^^^^ should be moved to _pre-reqs, and purged from Sage - not the least because we'll request them to be installed in the system, and most users have a portion of these installed, anyway. Then "minimal" becomes totally meaningless.

OK. You want "_prereq == standard package".

Did I correctly describe your position?

Perhaps I misunderstood... If you just want to move some packages from "standard packages" to "_prereq", then that is just minor adjustments in the build system, such that the distinction of "minimal" and "standard" in CI is still useful.

it's not a minor adjustment if you only move such packages as gcc and python in "_prereq", it's a drastic simplification of the build system, as there is a huge extra complexity involved into building them from source.

@dimpase
Copy link
Member

dimpase commented Feb 21, 2025

>                 _prereq | standard package | optional package | experimental package
> -------------------------------------------------------------------------------------
> "minimal"        SSSSSS | ---------------- |
> "standard"       SSSSSS | SSSS------------ |
                            ^^^^

The portion of standard packages I marked with ^^^^ should be moved to _pre-reqs, and purged from Sage - not the least because we'll request them to be installed in the system, and most users have a portion of these installed, anyway. Then "minimal" becomes totally meaningless.

In principle I agree that saves electricity. But in practice I can see a problem that may come up.

How likely/frequent is this case in your opinion, and how do you propose to deal with them?

1. users without root access. (arguably they could still use conda.)

typically users without root access are using some kind of HPC system, with a toolchain not capable to install Sage from source. Yes, then conda is the only choice.
(I experimented with one such HPC system just a month ago, it's running Rhel7 with gcc 4, although they plan to move to Rhel8 this year.)

2. let's say the situation is as follows
   ```
                     _prereq | standard package | optional package | experimental package
   ---------------------------------------------------------------------------------------
   minimal            SSSSSS | ---------------- |
   standard fedora31  SSSSSS | SSSSSS---------- |
   standard fedora32  SSSSSS | SSSS------------ |
   ```              
       
   something happens between fedora31 and fedora32 that requires some packages that are previously `S` become `-`. (e.g. system package version updated, sage package version did not update)
   without building these package from source before fedora32 is released, it's possible that the build from source has been broken all along and the bug only got spotted after fedora32 is released.

All the bets are off as soon as you try to do anything with Sage version $m$ on foobarOS version $n+1$ released after (or shortly before) Sage version $m$ was released.

Well, I want building from source support for common packages removed, in particular such complex packages as compilers and Python. I don't want to work on it, I don't think it's time well-spent, it's better left to the experts. If a common package on your OS got broken, install a better version yourself, or move to a better OS.

@tobiasdiez
Copy link
Contributor

By the way, the other PR is trying to destroy the current CI, with no change to the current build system.

Please refrain from making such exaggerated and unfounded statements.

@kwankyu
Copy link
Collaborator Author

kwankyu commented Feb 21, 2025

it's not a minor adjustment if you only move such packages as gcc and python in "_prereq", it's a drastic simplification of the build system, as there is a huge extra complexity involved into building them from source.

OK. I respect that. Please note that the current CI infrastructure should be preserved for your "drastic simplification of the build system".

@dimpase
Copy link
Member

dimpase commented Feb 21, 2025 via email

@kwankyu
Copy link
Collaborator Author

kwankyu commented Feb 21, 2025

after we remove gcc and python spkgs, CI will get simpler and will run much faster (these runs which build them)

Such changes in the build system are independent from the CI infrastructure itself. Only running speed of the Ci workflows would get affected.

@kwankyu
Copy link
Collaborator Author

kwankyu commented Feb 22, 2025

By the way, the other PR is trying to destroy the current CI, with no change to the current build system.

Please refrain from making such exaggerated and unfounded statements.

Sorry. I meant your removing "minimal" and "standard" and other failing configurations at the point of Dima's positive review. That looked "destructive" to me.

Afterwards you restored "standard", but still removed "minimal" and other failing configurations.

If you accept my proposal that you discard those changes in CI, which I cannot accept, from your PR, then both PRs may go hand in hand.

@kwankyu kwankyu force-pushed the p/add-comments-to-scripts branch from caf7a85 to ff02cd0 Compare February 22, 2025 00:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants