Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 2 additions & 49 deletions .github/workflows/ci-linux-incremental.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: CI Linux incremental

## This GitHub Actions workflow runs SAGE_ROOT/tox.ini with select environments,
## This GitHub Actions workflow runs SAGE_ROOT/tox.ini with selected environments,
## whenever a GitHub pull request is opened or synchronized in a repository
## where GitHub Actions are enabled.
##
Expand Down Expand Up @@ -99,56 +99,9 @@ jobs:
"debian-bullseye",
"debian-bookworm",
"fedora-30",
"fedora-40",
"gentoo-python3.11",
"debian-bullseye-i386"]
"fedora-40",]
tox_packages_factors: >-
["standard",
"minimal"]
docker_push_repository: ghcr.io/${{ github.repository }}/
max_parallel: 8

constraints_pkgs-norequirements:
needs: [changed_files]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please refrain from removing things just because it is broken. They can be fixed later. Turning off is enough.

uses: ./.github/workflows/docker.yml
with:
# Build incrementally from published Docker image
incremental: true
free_disk_space: true
from_docker_repository: ghcr.io/sagemath/sage/
from_docker_target: "with-targets-pre"
from_docker_tag: "dev"
docker_targets: "with-targets-pre"
targets_pre: "${{needs.changed_files.outputs.build_targets}} all-sage-local python3-ensure tox-ensure sagelib-tox-sagepython-constraints_pkgs-norequirements"
tox_system_factors: >-
["ubuntu-focal",
"ubuntu-noble",
"debian-bookworm",
"fedora-40",
"debian-bullseye-i386"]
tox_packages_factors: >-
["standard"]
docker_push_repository: ghcr.io/${{ github.repository }}/
max_parallel: 16

site:
needs: [changed_files]
uses: ./.github/workflows/docker.yml
with:
# Build incrementally from published Docker image
incremental: true
free_disk_space: true
from_docker_repository: ghcr.io/sagemath/sage/
from_docker_target: "with-targets"
from_docker_tag: "dev"
docker_targets: "with-targets"
targets: "${{needs.changed_files.outputs.build_targets}} doc-html ptest-nodoc"
# Only test systems with a usable system python (>= 3.9)
# with only a small number of test failures as of 10.2.rc0
tox_system_factors: >-
["gentoo-python3.11",
"archlinux-latest",
"fedora-40"]
tox_packages_factors: >-
["standard-sitepackages"]
docker_push_repository: ghcr.io/${{ github.repository }}/
142 changes: 8 additions & 134 deletions .github/workflows/ci-linux.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
name: CI Linux

## This GitHub Actions workflow runs SAGE_ROOT/tox.ini with select environments,
## whenever a GitHub pull request is opened or synchronized in a repository
## where GitHub Actions are enabled.
## This GitHub Actions workflow runs SAGE_ROOT/tox.ini with selected environments,
## whenever a tag is pushed.
##
## It builds and checks some sage spkgs as defined in TARGETS.
##
Expand Down Expand Up @@ -33,29 +32,7 @@ permissions:
packages: write

jobs:

# standard (without ptest) for the default platform (used by build.yml etc.)
default:
uses: ./.github/workflows/docker.yml
with:
# Build from scratch
free_disk_space: true
docker_targets: "with-system-packages configured with-targets-pre with-targets"
# FIXME: duplicated from env.TARGETS
targets_pre: all-sage-local
targets: build doc-html
targets_optional: ptest
tox_system_factors: >-
["ubuntu-jammy"]
tox_packages_factors: >-
["standard"]
docker_push_repository: ghcr.io/${{ github.repository }}/
logs_artifact: false

# All platforms. This duplicates the default platform, but why not,
# it makes it more robust regarding random timeouts.

standard:
minimal:
if: ${{ success() || failure() }}
uses: ./.github/workflows/docker.yml
with:
Expand All @@ -66,124 +43,21 @@ jobs:
targets_pre: all-sage-local
targets: build doc-html
targets_optional: ptest
tox_system_factors: >-
["ubuntu-jammy"]
tox_packages_factors: >-
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At the end, you renamed "default" to "minimal", effectively removing "minimal" configurations.

The original "minimal" configurations serve a purpose, as discussed in the other PR.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "minimal" configurations are intended to test standard sage packages.

["standard"]
["minimal"]
docker_push_repository: ghcr.io/${{ github.repository }}/
# Make sure that all "standard" jobs can start simultaneously,
# so that runners are available by the time that "default" starts.
max_parallel: 50

standard-constraints_pkgs-norequirements:
if: ${{ success() || failure() }}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just turn this off. Please do not remove things broken. They may be fixed later.

needs: [standard]
uses: ./.github/workflows/docker.yml
with:
# Build incrementally from previous stage (pre)
incremental: true
free_disk_space: true
from_docker_repository: ghcr.io/${{ github.repository }}/
from_docker_target: "with-targets-pre"
docker_targets: "with-targets-pre"
targets_pre: all-sage-local python3-ensure tox-ensure sagelib-tox-sagepython-constraints_pkgs-norequirements
tox_packages_factors: >-
["standard"]
max_parallel: 15

standard-sitepackages:
if: ${{ success() || failure() }}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just turn this off. Please do not remove things broken. They may be fixed later.

needs: [standard]
standard:
uses: ./.github/workflows/docker.yml
with:
# Build incrementally from previous stage (pre)
incremental: true
free_disk_space: true
from_docker_repository: ghcr.io/${{ github.repository }}/
from_docker_target: "with-targets-pre"
docker_targets: "with-targets with-targets-optional"
# FIXME: duplicated from env.TARGETS
targets: build doc-html
targets_optional: ptest
tox_packages_factors: >-
["standard-sitepackages"]
# Only test systems with a usable system python (>= 3.9)
tox_system_factors: >-
["ubuntu-jammy",
"ubuntu-lunar",
"ubuntu-mantic",
"debian-bookworm",
"debian-trixie",
"debian-sid",
"linuxmint-21.1",
"linuxmint-21.2",
"fedora-40",
"centos-stream-9-python3.9",
"almalinux-8-python3.9",
"gentoo-python3.10",
"gentoo-python3.11",
"archlinux-latest",
"opensuse-15.5-gcc_11-python3.11",
"opensuse-tumbleweed-python3.10",
"opensuse-tumbleweed"]
docker_push_repository: ghcr.io/${{ github.repository }}/
max_parallel: 8

minimal:
if: ${{ success() || failure() }}
uses: ./.github/workflows/docker.yml
with:
# Build from scratch
free_disk_space: true
docker_targets: "with-system-packages configured with-targets-pre with-targets with-targets-optional"
# FIXME: duplicated from env.TARGETS
targets_pre: all-sage-local
targets: build doc-html
targets_optional: ptest
tox_packages_factors: >-
["minimal"]
docker_push_repository: ghcr.io/${{ github.repository }}/
# Reduced from 30 because it may run in parallel with 'standard' and 'standard-sitepackages' above.
# Calibrated for clogging the job pipeline until the "default" job has finished.
max_parallel: 24

maximal-pre:
if: ${{ success() || failure() }}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is intended to test "optional packages" installed as system package.

needs: [minimal]
uses: ./.github/workflows/docker.yml
with:
free_disk_space: true
# Build from scratch
docker_targets: "with-system-packages configured with-targets-pre"
# FIXME: duplicated from env.TARGETS
targets_pre: all-sage-local
tox_packages_factors: >-
["maximal"]
["standard"]
docker_push_repository: ghcr.io/${{ github.repository }}/

optional:
if: ${{ success() || failure() }}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is intended to test "optional sage packages"

needs: [maximal-pre]
uses: ./.github/workflows/docker.yml
with:
incremental: true
free_disk_space: true
from_docker_repository: ghcr.io/${{ github.repository }}/
from_docker_target: "with-targets-pre"
tox_packages_factors: >-
["maximal"]
docker_targets: "with-targets-optional"
# We remove packages starting with _, in particular package _develop
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :optional: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep -v ^_))'

experimental:
if: ${{ success() || failure() }}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is intended to test "experimental sage packages"

needs: [optional]
uses: ./.github/workflows/docker.yml
with:
incremental: true
free_disk_space: true
from_docker_repository: ghcr.io/${{ github.repository }}/
from_docker_target: "with-targets-pre"
tox_packages_factors: >-
["maximal"]
docker_targets: "with-targets-optional"
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :experimental: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc))'
58 changes: 0 additions & 58 deletions .github/workflows/ci-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,61 +99,3 @@ jobs:
with:
path: "dist/*.tar.gz"
name: dist

local-macos-nohomebrew:

needs: [dist]

runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
max-parallel: 4
matrix:
os: [ macos-12, macos-13, macos-14 ]
tox_system_factor: [macos-nobootstrap]
tox_packages_factor: [minimal]
xcode_version_factor: [default]
env:
TOX_ENV: local-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}
LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-local-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}-xcode_${{ matrix.xcode_version_factor }}
steps:
- uses: actions/checkout@v4
if: "!contains(matrix.tox_system_factor, 'nobootstrap')"
- uses: actions/download-artifact@v4
with:
path: .
name: dist
if: contains(matrix.tox_system_factor, 'nobootstrap')
- name: Unpack sage dist
run: |
tar xf sage*.tar.gz --strip-components=1
if: contains(matrix.tox_system_factor, 'nobootstrap')
- name: Move homebrew away
run: |
(cd $(brew --prefix) && for a in bin etc include lib opt sbin share; do sudo mv $a $a-moved; done)
- name: Select Xcode version
run: |
if [ ${{ matrix.xcode_version_factor }} != default ]; then sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode_version_factor }}.app; fi
- name: Install test prerequisites
run: |
sudo /usr/bin/python3 -m pip install tox
- name: Build and test with tox
# We use a high parallelization on purpose in order to catch possible parallelization bugs in the build scripts.
# For doctesting, we use a lower parallelization to avoid timeouts.
run: |
(sleep 20000; pkill make) &
MAKE="make -j12" tox -e $TOX_ENV -- SAGE_NUM_THREADS=6 $TARGETS
- name: Prepare logs artifact
run: |
mkdir -p "artifacts/$LOGS_ARTIFACT_NAME"; cp -r .tox/*/log "artifacts/$LOGS_ARTIFACT_NAME"
if: always()
- uses: actions/upload-artifact@v4
with:
path: artifacts
name: ${{ env.LOGS_ARTIFACT_NAME }}
if: always()
- name: Print out logs for immediate inspection
# and markup the output with GitHub Actions logging commands
run: |
.github/workflows/scan-logs.sh "artifacts/$LOGS_ARTIFACT_NAME"
if: always()
24 changes: 0 additions & 24 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,49 +19,25 @@ on:
default: >-
[
"ubuntu-xenial-toolchain-gcc_9",
"ubuntu-bionic-gcc_8",
"ubuntu-focal",
"ubuntu-jammy",
"ubuntu-lunar",
"ubuntu-mantic",
"ubuntu-noble",
"debian-bullseye",
"debian-bookworm",
"debian-trixie",
"debian-sid",
"linuxmint-20.1",
"linuxmint-20.2",
"linuxmint-20.3",
"linuxmint-21",
"linuxmint-21.1",
"linuxmint-21.2",
"linuxmint-21.3",
"fedora-30",
"fedora-31",
"fedora-32",
"fedora-33",
"fedora-34",
"fedora-35",
"fedora-36",
"fedora-37",
"fedora-38",
"fedora-39",
"fedora-40",
"fedora-41",
"centos-stream-9",
"centos-stream-9-python3.12",
"almalinux-8-python3.9",
"almalinux-9-python3.11",
"gentoo-python3.10",
"gentoo-python3.11",
"gentoo-python3.12",
"archlinux-latest",
"opensuse-15.5-gcc_11-python3.11",
"opensuse-tumbleweed-python3.10",
"opensuse-tumbleweed",
"conda-forge-python3.11",
"ubuntu-bionic-gcc_8-i386",
"debian-bullseye-i386",
]
# 'tox -e update_docker_platforms' updates above
tox_packages_factors:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See the comment at L52. The main list is in tox.ini.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I only changed the ci flows on purpose so that people trying to fix these other systems have an easy way to do this via tox/dev container. But I can completely remove them everywhere if you don't think that anyone will actively work on them.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I only changed the ci flows on purpose so that people trying to fix these other systems have an easy way to do this via tox/dev container.

Do you know that removing platforms from the CI workflow also removes the corresponding docker images?

But I can completely remove them everywhere if you don't think that anyone will actively work on them.

You and I don't know who does and will work on what platforms. The default list of platforms tested in CI should be determined by what platforms we want to support.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Anything that's not documented (in Sage documentation) is subject to change without notice, and our documentation does not promise anyone a million docker images ready to use.

Thus "you and I don't know how these images are used" is not an argument to preserve them.

Copy link
Collaborator

@kwankyu kwankyu Feb 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I doubt whether you (and the author as well) ever read through https://doc-release--sagemath.netlify.app/html/en/developer/portability_testing.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I doubt whether you (and the author as well) ever read through https://doc-release--sagemath.netlify.app/html/en/developer/portability_testing.

of course I read it, I used it, etc. Please don't give such dismissive mkoeppe-style responses.

The concrete names of containers are mentioned there in examples.
These are not cut in stone, they are just mentioned as examples. Just as examples might mention concrete, random, versions, random dates, etc, random outputs of computations, etc. This is not what documenting means.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you see this section: https://doc-release--sagemath.netlify.app/html/en/developer/portability_testing#using-our-pre-built-docker-images-published-on-ghcr-io ?

That is the documentation of available docker images.

The proper way to update the documentation is what I mentioned in the beginning of this thread: #39467 (comment)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's pretty clear that it's a collection of semi- random docker images, some of them quite old, corresponding to rather random betas, etc.

It's too ambitious to support even half of them, too much work that noone would be doing

Copy link
Collaborator

@kwankyu kwankyu Feb 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is the master list of the linux platforms we support in tox.ini (in the sense of @user202729 "we test it and fix it if it is broken")

I don't care what you think (and the author as well) should be in the list. Just update it properly by tox -e update_docker_platforms as the comment at Line 52 says. If not done properly, our documentation is broken. #39009 does it properly.

In the same vein, removing "minimal" and "optional" and "maximal" jobs is not a proper way to fix CI Linux. We have to support sage-the-distribution, as in the documentation.

Copy link
Contributor Author

@tobiasdiez tobiasdiez Feb 27, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is value in having this table, even if the CI currently doesn't build new images for all listed configs. You clearly see the latest release it was working.

Moreover, removing it from the tox.ini also removes the codespaces, which is the easiest way to actually work on these images. So if anyone want's to work on fixing the issues, then we should give people the tools to do so. This PR is not about removing support for a given system, just removing failing CI runs.

Expand Down
10 changes: 2 additions & 8 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,9 @@ on:
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
description: 'Stringified JSON object'
default: >-
[["12", "", "homebrew-macos-usrlocal-minimal"],
["12", "", "homebrew-macos-usrlocal-standard"],
["12", "", "homebrew-macos-usrlocal-python3_xcode-standard"],
["12", "", "homebrew-macos-usrlocal-maximal"],
["13", "xcode_15.0", "homebrew-macos-usrlocal-standard"],
[
["latest", "", "homebrew-macos-opthomebrew-standard"],
["13", "", "conda-forge-macos-minimal"],
["13", "", "conda-forge-macos-standard"],
["latest", "", "conda-forge-macos-standard"]]
]
type: string
extra_sage_packages:
description: 'Extra Sage packages to install as system packages'
Expand Down
2 changes: 1 addition & 1 deletion src/doc/en/developer/github.rst
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,7 @@ Actions.
test. Details are again available by clicking on the check.

The automatic workflow runs on a container based on
``ubuntu-focal-standard``. To request a run of the workflow on a different
``ubuntu``. To request a run of the workflow on a different
platform, you can issue a `workflow dispatch
<https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow#running-a-workflow>`_.
You can select any of the platforms for which a `prebuilt container image
Expand Down
6 changes: 5 additions & 1 deletion src/doc/en/developer/portability_testing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1139,7 +1139,8 @@ makes them available on `GitHub Packages
<https://github.com/features/packages>`_ (ghcr.io).

This makes it easy for developers to debug problems that showed up in
the build logs for a given platform.
the build logs for a given platform. These images are not intended for production
deployment.

The image version corresponding to the latest development release
receives the additional Docker tag ``dev``, see for example the Docker
Expand Down Expand Up @@ -1188,6 +1189,9 @@ are available:
installation of Sage, including the HTML documentation, but ``make
ptest`` has not been run yet.

Note that some of these images are outdated due to build errors.
Moreover, standard and minimal images are discontinued.

.. only:: html

.. include:: portability_platform_table.rst
Expand Down
Loading