diff --git a/.ci/retrofit-worktree.sh b/.ci/retrofit-worktree.sh index 782d3ba44b7..a20765a9e82 100755 --- a/.ci/retrofit-worktree.sh +++ b/.ci/retrofit-worktree.sh @@ -20,21 +20,18 @@ git config --global user.email "$GIT_AUTHOR_EMAIL" set -x -# If actions/checkout downloaded our source tree using the GitHub REST API -# instead of with git (because do not have git installed in our image), -# we first make the source tree a repo. +# If actions/checkout downloaded our source tree (in current directory) using the +# GitHub REST API instead of with git, we first make the source tree a repo. if [ ! -d .git ]; then git init; fi -# Commit and tag this state of the source tree "new". This is what we want to build and test. +# Commit and tag this state of the source tree "new". The current directory +# contains "new" source files with which we want to build and test. git add -A && git commit --quiet --allow-empty -m "new" git tag -f new # Our container image contains a source tree in $WORKTREE_DIRECTORY with a full build of Sage. # But $WORKTREE_DIRECTORY is not a git repository. # We make $WORKTREE_DIRECTORY a worktree whose index is at tag "new". -# We then commit the current sources and set the tag "old". (This keeps all mtimes unchanged.) -# Then we update worktree and index with "git checkout new". -# (This keeps mtimes of unchanged files unchanged and mtimes of changed files newer than unchanged files.) if [ -L $WORKTREE_NAME ]; then rm -f $WORKTREE_NAME fi @@ -42,5 +39,11 @@ git worktree prune --verbose git worktree add --detach $WORKTREE_NAME rm -rf $WORKTREE_DIRECTORY/.git && mv $WORKTREE_NAME/.git $WORKTREE_DIRECTORY/ rm -rf $WORKTREE_NAME && ln -s $WORKTREE_DIRECTORY $WORKTREE_NAME + +# Copy "new" .gitignore (in current directory) to the worktree if there is not one already. if [ ! -f $WORKTREE_NAME/.gitignore ]; then cp .gitignore $WORKTREE_NAME/; fi -(cd $WORKTREE_NAME && git add -A && git commit --quiet --allow-empty -m "old" -a && git tag -f old && git checkout -f new && git clean -fd && git status) +# We then commit the worktree and set the tag "old". (This keeps all modification times unchanged.) +(cd $WORKTREE_NAME && git add -A && git commit --quiet --allow-empty -m "old" && git tag -f old) +# Then we update the worktree and index with "git checkout new". (This keeps modification times of "old" files +# and makes modification times of "new" files newer, which triggers incremental build.) +(cd $WORKTREE_NAME && git checkout -f new) diff --git a/.ci/write-dockerfile.sh b/.ci/write-dockerfile.sh index 7a3512dafd9..3a66ff052ac 100755 --- a/.ci/write-dockerfile.sh +++ b/.ci/write-dockerfile.sh @@ -1,12 +1,23 @@ #! /usr/bin/env bash -set -e -shopt -s extglob ## ## Write a Dockerfile for portability testing to stdout. ## ## This script needs to be run from SAGE_ROOT (root of the Sage repository). ## It is called by $SAGE_ROOT/tox.ini for all environments 'tox -e docker-...' ## +## The generated Dockerfile needs Sage source tree directory as context, +## and builds Sage docker images based on the source tree. +## +## Hence this is how to use it: +## +## git worktree add source-tree +## docker build source-tree -f Dockerfile ... +## git worktree remove source-tree +## +## where we assume the current directory is SAGE_ROOT. +## +set -e +shopt -s extglob ## Positional arguments: ## SYSTEM="${1:-debian}" @@ -274,32 +285,28 @@ cat <> /sage/.gitignore && \\ - printf '/src/*\n!/src/doc/bootstrap\n!/src/bin\n!/src/*.m4\n!/src/*.toml\n!/src/VERSION.txt\n' >> /new/.gitignore && \\ - if ! (cd /new && /.ci/retrofit-worktree.sh worktree-image /sage); then \\ - echo "retrofit-worktree.sh failed, falling back to replacing /sage"; \\ - for a in local logs; do \\ - if [ -d /sage/\$a ]; then mv /sage/\$a /new/; fi; \\ - done; \\ - rm -rf /sage; \\ - mv /new /sage; \\ - fi; \\ - else \\ - mv /new /sage; \\ - fi +RUN rm -rf /source-tree +$ADD . /source-tree +RUN </dev/null; then LC_ALL=C find local -type f -exec sh -c 'test -x "{}" && strip "{}"' ';' >/dev/null 2>&1; fi || true FROM with-targets-pre AS with-targets ARG NUMPROC=8 @@ -346,18 +355,7 @@ ENV MAKE="make -j\${NUMPROC}" ARG USE_MAKEFLAGS="-k V=0" ENV SAGE_CHECK=warn ENV SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" -$ADD .gitignore /new/.gitignore -$ADD src /new/src -RUN cd /new && rm -rf .git && \\ - if /.ci/retrofit-worktree.sh worktree-pre /sage; then \\ - cd /sage && touch configure build/make/Makefile; \\ - else \\ - echo "retrofit-worktree.sh failed, falling back to replacing /sage/src"; \\ - rm -rf /sage/src; \\ - mv src /sage/src; \\ - cd /sage && ./bootstrap && ./config.status; \\ - fi; \\ - cd /sage && rm -rf .git; rm -rf /new || echo "(error ignored)" +RUN cd /sage && touch configure build/make/Makefile ARG TARGETS="build" $RUN$CHECK_STATUS_THEN make SAGE_SPKG="sage-spkg -y -o" \${USE_MAKEFLAGS} \${TARGETS}$ENDRUN$THEN_SAVE_STATUS diff --git a/.github/workflows/changelog_trigger.yml b/.github/workflows/changelog_trigger.yml index f3456d9b196..09c30f212ac 100644 --- a/.github/workflows/changelog_trigger.yml +++ b/.github/workflows/changelog_trigger.yml @@ -1,4 +1,4 @@ -name: Trigger Changelog Generation +name: Trigger changelog generation on: release: diff --git a/.github/workflows/ci-linux-incremental.yml b/.github/workflows/ci-linux-incremental.yml index 8606e7a4ca5..5aa917b6d71 100644 --- a/.github/workflows/ci-linux-incremental.yml +++ b/.github/workflows/ci-linux-incremental.yml @@ -81,11 +81,22 @@ jobs: sage-package metrics :all: fi - test: + standard: needs: [changed_files] uses: ./.github/workflows/docker.yml with: - # Build incrementally from published Docker image + tox_system_factors: >- + ["ubuntu-focal", + "ubuntu-noble", + "debian-bullseye", + "debian-bookworm", + "fedora-30", + "fedora-40", + "archlinux-latest", + "gentoo-python3.11", + "debian-bullseye-i386"] + tox_packages_factors: >- + ["standard"] incremental: true free_disk_space: true from_docker_repository: ghcr.io/sagemath/sage/ @@ -93,6 +104,13 @@ jobs: from_docker_tag: "dev" docker_targets: "with-targets" targets: "${{needs.changed_files.outputs.build_targets}} ci-build-with-fallback doc-html ptest-nodoc" + docker_push_repository: ghcr.io/${{ github.repository }}/ + max_parallel: 8 + + minimal: + needs: [changed_files] + uses: ./.github/workflows/docker.yml + with: tox_system_factors: >- ["ubuntu-focal", "ubuntu-noble", @@ -100,15 +118,24 @@ jobs: "debian-bookworm", "fedora-30", "fedora-40", + "archlinux-latest", "gentoo-python3.11", "debian-bullseye-i386"] tox_packages_factors: >- - ["standard", - "minimal"] + ["minimal"] + 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}} ci-build-with-fallback doc-html ptest-nodoc" docker_push_repository: ghcr.io/${{ github.repository }}/ max_parallel: 8 - constraints_pkgs-norequirements: + standard-constraints_pkgs: + # Turned off until fixed + if: false needs: [changed_files] uses: ./.github/workflows/docker.yml with: @@ -131,7 +158,9 @@ jobs: docker_push_repository: ghcr.io/${{ github.repository }}/ max_parallel: 16 - site: + standard-sitepackages: + # Turned off until fixed + if: false needs: [changed_files] uses: ./.github/workflows/docker.yml with: diff --git a/.github/workflows/ci-linux.yml b/.github/workflows/ci-linux.yml index 1bf8862b4f4..d915f99fdf6 100644 --- a/.github/workflows/ci-linux.yml +++ b/.github/workflows/ci-linux.yml @@ -1,110 +1,88 @@ 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. -## -## It builds and checks some sage spkgs as defined in TARGETS. -## -## A job succeeds if there is no error. -## -## The build is run with "make V=0", so the build logs of individual packages are suppressed. -## -## At the end, all package build logs that contain an error are printed out. -## -## After all jobs have finished (or are canceled) and a short delay, -## tar files of all logs are made available as "build artifacts". - -#on: [push, pull_request] +# 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. +# +# It builds and checks some sage spkgs as defined in TARGETS. +# +# A job succeeds if there is no error. +# +# The build is run with "make V=0", so the build logs of individual packages are suppressed. +# +# At the end, all package build logs that contain an error are printed out. +# +# After all jobs have finished (or are canceled) and a short delay, +# tar files of all logs are made available as "build artifacts". on: push: tags: - '*' - workflow_dispatch: - # Allow to run manually + workflow_dispatch: # allow to run manually -env: - TARGETS_PRE: all-sage-local - TARGETS: build doc-html - TARGETS_OPTIONAL: ptest +# A job may specify inputs to docker.yml such as +# +# targets_pre +# targets +# targets_optional +# tox_system_factors +# tox_packages_factors +# ... +# +# consult docker.yml for descriptions and defaults for all possible inputs. +# +# For the meaning of docker_targets, see also tox.ini permissions: packages: write jobs: - # standard (without ptest) for the default platform (used by build.yml etc.) + # This duplicates the "standard" job (see below) for the default platform. + # The reason is to provide the default docker image as fast as possible + # for other workflows like build.yml. 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"] + free_disk_space: true + incremental: false + docker_targets: "with-system-packages configured with-targets-pre with-targets" + targets_pre: all-sage-local + targets: build doc-html docker_push_repository: ghcr.io/${{ github.repository }}/ - logs_artifact: false + logs_artifact_postfix: "-default" - # All platforms. This duplicates the default platform, but why not, - # it makes it more robust regarding random timeouts. + # The following jobs run for all supported platforms. See the default list + # for tox_system_factors in docker.yml. standard: if: ${{ success() || failure() }} uses: ./.github/workflows/docker.yml with: - # Build from scratch + tox_packages_factors: >- + ["standard"] free_disk_space: true + incremental: false 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: >- - ["standard"] 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() }} - 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() }} + # Turned off until fixed + if: false 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 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", @@ -124,66 +102,92 @@ jobs: "opensuse-15.5-gcc_11-python3.11", "opensuse-tumbleweed-python3.10", "opensuse-tumbleweed"] + tox_packages_factors: >- + ["standard-sitepackages"] + free_disk_space: true + incremental: true + from_docker_repository: ghcr.io/${{ github.repository }}/ + from_docker_target: "with-targets-pre" + docker_targets: "with-targets with-targets-optional" + targets_optional: ptest docker_push_repository: ghcr.io/${{ github.repository }}/ + logs_artifact_postfix: "-sitepackages" max_parallel: 8 + standard-constraints_pkgs: + # Turned off until fixed + needs: [standard-sitepackages] + uses: ./.github/workflows/docker.yml + with: + tox_packages_factors: >- + ["standard"] + free_disk_space: true + incremental: 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 + logs_artifact_postfix: "-constraints_pkgs" + max_parallel: 15 + minimal: if: ${{ success() || failure() }} uses: ./.github/workflows/docker.yml with: - # Build from scratch + tox_packages_factors: >- + ["minimal"] free_disk_space: true + incremental: false 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: + maximal: if: ${{ success() || failure() }} 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"] + free_disk_space: true + incremental: false + docker_targets: "with-system-packages configured with-targets-pre with-targets with-targets-optional" + targets_pre: all-sage-local + targets: build doc-html + targets_optional: ptest docker_push_repository: ghcr.io/${{ github.repository }}/ optional: if: ${{ success() || failure() }} - needs: [maximal-pre] + needs: [standard] uses: ./.github/workflows/docker.yml with: + tox_packages_factors: >- + ["standard"] incremental: true free_disk_space: true from_docker_repository: ghcr.io/${{ github.repository }}/ - from_docker_target: "with-targets-pre" - tox_packages_factors: >- - ["maximal"] + from_docker_target: "with-targets" 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 ^_))' + logs_artifact_postfix: "-optional" experimental: if: ${{ success() || failure() }} needs: [optional] uses: ./.github/workflows/docker.yml with: + tox_packages_factors: >- + ["standard"] incremental: true free_disk_space: true from_docker_repository: ghcr.io/${{ github.repository }}/ - from_docker_target: "with-targets-pre" - tox_packages_factors: >- - ["maximal"] + from_docker_target: "with-targets" 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))' + logs_artifact_postfix: "-experimental" diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml index ccd3e9f1a94..47e3693ca27 100644 --- a/.github/workflows/dist.yml +++ b/.github/workflows/dist.yml @@ -1,4 +1,4 @@ -name: Prepare source distributions and wheels +name: Deploy release assets on: push: diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 96427164eae..ab23e95d1a3 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,16 +1,16 @@ -name: Reusable workflow for Docker-based portability CI +name: Workflow for Linux portability CI on: workflow_call: inputs: targets_pre: - default: build/make/Makefile + default: all-sage-local type: string targets: - default: build/make/Makefile + default: build type: string targets_optional: - default: build/make/Makefile + default: ptest type: string tox_system_factors: description: 'Stringified JSON object listing tox system factors' @@ -18,30 +18,19 @@ on: # 'tox -e update_docker_platforms' updates below 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", + "linuxmint-22", + "linuxmint-22.1", "fedora-36", "fedora-37", "fedora-38", @@ -58,10 +47,6 @@ on: "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: @@ -85,9 +70,10 @@ on: description: 'Elapsed time (seconds) at which to kill the build' default: 20000 type: number - logs_artifact: - default: true - type: boolean + logs_artifact_postfix: + description: 'Postfix (default: none) for logs artifact name' + default: "" + type: string # # Publishing to GitHub Packages # @@ -101,6 +87,7 @@ on: default: "with-system-packages configured with-targets-pre with-targets with-targets-optional" type: string incremental: + description: 'Whether to build Sage from scratch or from prebuilt Sage' default: false type: boolean from_docker_repository: @@ -132,19 +119,58 @@ on: required: false type: string + workflow_dispatch: + inputs: + tox_system_factors: + default: >- + [ "ubuntu-jammy"] + type: string + tox_packages_factors: + type: string + default: >- + ["standard"] + targets_pre: + default: "all-sage-local" + type: string + targets: + default: "build" + type: string + targets_optional: + default: "ptest" + type: string + docker_targets: + default: "with-targets" + type: string + incremental: + default: true + type: boolean + from_docker_repository: + default: "ghcr.io/sagemath/sage/" + type: string + from_docker_target: + default: "with-targets-pre" + type: string + from_docker_tag: + default: "dev" + type: string + + jobs: linux: runs-on: ubuntu-latest strategy: fail-fast: false - max-parallel: ${{ inputs.max_parallel }} + max-parallel: ${{ inputs.max_parallel || 10 }} matrix: tox_system_factor: ${{ fromJson(inputs.tox_system_factors) }} tox_packages_factor: ${{ fromJson(inputs.tox_packages_factors) }} env: + # See tox.ini to see how these environment variables define the + # Dockerfile used to build the docker image, written by the + # .ci/write-dockerfile.sh TOX_ENV: "docker-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}${{ inputs.incremental && '-incremental' || '' }}" - LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-docker-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }} - DOCKER_TARGETS: ${{ inputs.docker_targets }} + LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-docker-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}${{ inputs.logs_artifact_postfix }} + DOCKER_TARGETS: ${{ inputs.docker_targets || github.event.inputs.docker_targets }} TARGETS_PRE: ${{ inputs.targets_pre }} TARGETS: ${{ inputs.targets }} TARGETS_OPTIONAL: ${{ inputs.targets_optional }} @@ -166,63 +192,80 @@ jobs: remove-docker-images: true continue-on-error: true if: inputs.free_disk_space + - name: Check out SageMath uses: actions/checkout@v4 with: repository: ${{ inputs.sage_repo }} ref: ${{ inputs.sage_ref }} fetch-depth: 10000 + - name: Download upstream artifact uses: actions/download-artifact@v4 with: path: upstream name: ${{ inputs.upstream_artifact }} if: inputs.upstream_artifact + - name: Install test prerequisites run: | sudo DEBIAN_FRONTEND=noninteractive apt-get update sudo DEBIAN_FRONTEND=noninteractive apt-get install tox sudo apt-get clean df -h + - name: Update Sage packages from upstream artifact - # Handle both the old and new location of write-dockerfile.sh, - # because docker.yml is a reusable workflow. run: | - (export PATH=$(pwd)/build/bin:$PATH; (cd upstream && bash -x update-pkgs.sh) && sed -i.bak '/upstream/d' .dockerignore; for a in build/bin/write-dockerfile.sh .ci/write-dockerfile.sh; do if [ -r $a ]; then echo "/:toolchain:/i ADD upstream upstream" | sed -i.bak -f - $a; fi; done; git diff) + export PATH=$(pwd)/build/bin:$PATH + # The sed command removes any lines containing 'upstream' from .dockerignore + (cd upstream && bash -x update-pkgs.sh) && sed -i.bak '/upstream/d' .dockerignore + if [ -r .ci/write-dockerfile.sh ]; then + # Add 'ADD upstream upstream' before the line containing ':toolchain:' in the script + echo "/:toolchain:/i ADD upstream upstream" | sed -i.bak -f - .ci/write-dockerfile.sh + fi + # Show the changes made to the repository for review + git diff if: inputs.upstream_artifact - name: Try to login to ghcr.io - if: inputs.docker_push_repository != '' + if: (inputs.docker_push_repository == null || inputs.docker_push_repository != '') # https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable run: | - TOKEN="${{ secrets.DOCKER_PKG_GITHUB_TOKEN }}" - if [ -z "$TOKEN" ]; then - TOKEN="${{ secrets.GITHUB_TOKEN }}" - fi - if echo "$TOKEN" | docker login ghcr.io -u ${{ github.actor }} --password-stdin; then + TOKEN="${{ secrets.DOCKER_PKG_GITHUB_TOKEN }}" + if [ -z "$TOKEN" ]; then + TOKEN="${{ secrets.GITHUB_TOKEN }}" + fi + if echo "$TOKEN" | docker login ghcr.io -u ${{ github.actor }} --password-stdin; then + if [ -z "${{ inputs.docker_push_repository }}" ]; then + echo "DOCKER_PUSH_REPOSITORY=ghcr.io/${{ github.repository }}/" >> $GITHUB_ENV + else echo "DOCKER_PUSH_REPOSITORY=$(echo ${{ inputs.docker_push_repository }} | tr "[:upper:]" "[:lower:]")" >> $GITHUB_ENV - echo "DOCKER_CONFIG_FILE=$HOME/.docker/config.json" >> $GITHUB_ENV fi + echo "DOCKER_CONFIG_FILE=$HOME/.docker/config.json" >> $GITHUB_ENV + fi - name: Determine Docker tags to use run: | - # This line needs to be run before the step "Merge CI fixes from sagemath/sage". - DOCKER_TAG="$(git describe --dirty --always)" - echo "DOCKER_TAG=$DOCKER_TAG" >> $GITHUB_ENV - # From the docker documentation via .ci/update-env.sh: - # "A tag name must be valid ASCII and may - # contain lowercase and uppercase letters, digits, underscores, periods and - # dashes. A tag name may not start with a period or a dash and may contain a - # maximum of 128 characters." - EXTRA_DOCKER_TAGS=`echo $GITHUB_REF_NAME | tr -d '[:space:]' | tr -c '[:alnum:]_.-' '-' | sed 's/^[-.]*//' | cut -c1-128` - shopt -s extglob - case "$GITHUB_REF_NAME" in - +([0-9]).+([0-9])?(.+([0-9])) ) - EXTRA_DOCKER_TAGS="latest dev $EXTRA_DOCKER_TAGS";; - +([0-9]).+([0-9])?(.+([0-9]))?(.)@(a|alpha|b|beta|rc)+([0-9]) ) - EXTRA_DOCKER_TAGS="dev $EXTRA_DOCKER_TAGS";; - esac - echo "EXTRA_DOCKER_TAGS=$EXTRA_DOCKER_TAGS" >> $GITHUB_ENV + # This line needs to be run before the step "Merge CI fixes from sagemath/sage". + # + DOCKER_TAG="$(git describe --dirty --always)" + echo "DOCKER_TAG=$DOCKER_TAG" >> $GITHUB_ENV + # + # From the docker documentation via .ci/update-env.sh: + # "A tag name must be valid ASCII and may + # contain lowercase and uppercase letters, digits, underscores, periods and + # dashes. A tag name may not start with a period or a dash and may contain a + # maximum of 128 characters." + # + EXTRA_DOCKER_TAGS=`echo $GITHUB_REF_NAME | tr -d '[:space:]' | tr -c '[:alnum:]_.-' '-' | sed 's/^[-.]*//' | cut -c1-128` + shopt -s extglob + case "$GITHUB_REF_NAME" in + +([0-9]).+([0-9])?(.+([0-9])) ) + EXTRA_DOCKER_TAGS="latest dev $EXTRA_DOCKER_TAGS";; + +([0-9]).+([0-9])?(.+([0-9]))?(.)@(a|alpha|b|beta|rc)+([0-9]) ) + EXTRA_DOCKER_TAGS="dev $EXTRA_DOCKER_TAGS";; + esac + echo "EXTRA_DOCKER_TAGS=$EXTRA_DOCKER_TAGS" >> $GITHUB_ENV - name: Merge CI fixes from sagemath/sage # This step needs to happen after the commit sha is put in DOCKER_TAG @@ -237,43 +280,69 @@ jobs: run: | df -h if: inputs.free_disk_space + - name: Configure and build Sage distribution within a Docker container - # The first command below is a self-destruct sequence, - # which preempts the GitHub Actions 6-hour job cancellation. - # - # Using "docker exec", we enter the temporary containers used by - # "docker build" and kill the "make" processes of the Sage distribution. - # - # The arcane "find" command is a replacement for "pkill make", - # which we use because pkill is not installed in the "minimal" package - # configuration on many platforms. - # - # The "sed" command strips away timestamps from "docker build" (buildkit) - # such as "#25 1211.0" at the beginning of each line. The timestamps are - # redundant because GH Actions provides timestamps for each line already. - # Stripping the timestamps from the beginnings of lines also allows - # GitHub Actions to recognize workflow commands such as ::error etc. - # run: | - (sleep ${{ inputs.timeout }}; for id in $(docker ps -q); do docker exec $id find /proc -maxdepth 2 -name cmdline -exec bash -c "grep -l [m][a][k][e] {} | cut -d/ -f3 | xargs --no-run-if-empty kill" \;; done) & - set -o pipefail; EXTRA_DOCKER_BUILD_ARGS="--build-arg NUMPROC=9 --build-arg USE_MAKEFLAGS=\"-k V=0 SAGE_NUM_THREADS=5\"" tox -e $TOX_ENV -- $TARGETS 2>&1 | sed -E --unbuffered "s/^#[0-9]+ [0-9]+[.][0-9]+ //;/^configure: notice:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: warning:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: error:/s|^|::error file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;" + # The first command below is a self-destruct sequence, + # which preempts the GitHub Actions 6-hour job cancellation. + # + # Using "docker exec", we enter the temporary containers used by + # "docker build" and kill the "make" processes of the Sage distribution. + ( + sleep ${{ inputs.timeout || 20000 }} + for container_id in $(docker ps -q); do + # + # The arcane "find" command is a replacement for "pkill make", + # which we use because pkill is not installed in the "minimal" package + # configuration on many platforms. + # + docker exec "$container_id" find /proc -maxdepth 2 -name cmdline \ + -exec bash -c 'grep -l "[m][a][k][e]" {} | cut -d/ -f3 | xargs --no-run-if-empty kill' \; + done + ) & + # Set pipeline to fail if any command fails + set -o pipefail + # + EXTRA_DOCKER_BUILD_ARGS="--build-arg NUMPROC=9 --build-arg USE_MAKEFLAGS=\"-k V=0 SAGE_NUM_THREADS=5\"" + # + # The tox command starts to build and test Sage within a Docker container. + # + # After the build, the sed command strips away timestamps from + # "docker build" (buildkit) such as "#25 1211.0" at the beginning of + # each line. The timestamps are redundant because GH Actions provides + # timestamps for each line already. Stripping the timestamps from + # the beginnings of lines also allows GitHub Actions to recognize + # workflow commands such as ::error etc. The other sed commands + # annotate configuration notices/warnings/errors as GitHub + # ::warning/::warning/::error respectively. + # + tox -e $TOX_ENV -- $TARGETS 2>&1 | sed -E --unbuffered " + s/^#[0-9]+ [0-9]+[.][0-9]+ // + /^configure: notice:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::| + /^configure: warning:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::| + /^configure: error:/s|^|::error file=artifacts/$LOGS_ARTIFACT_NAME/config.log::| + " + - name: Copy logs from the Docker image or build container run: | mkdir -p "artifacts/$LOGS_ARTIFACT_NAME" cp -r .tox/$TOX_ENV/* "artifacts/$LOGS_ARTIFACT_NAME" rm -rf "artifacts/$LOGS_ARTIFACT_NAME"/{bin,lib,pyvenv.cfg} if: always() + - name: Upload logs artifact uses: actions/upload-artifact@v4 with: path: artifacts name: ${{ env.LOGS_ARTIFACT_NAME }} - if: always() && inputs.logs_artifact + 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() + - name: List Docker images run: | if [ -n "$DOCKER_PUSH_REPOSITORY" -a -f .tox/$TOX_ENV/Dockertags.pushed ]; then @@ -316,4 +385,4 @@ jobs: else echo "No Docker images created." fi - if: always() && ${{ inputs.docker_push_repository }} + if: ${{ always() && inputs.docker_push_repository }} diff --git a/.github/workflows/docker_hub.yml b/.github/workflows/docker_hub.yml index ed07bc2f03e..7a32505ee30 100644 --- a/.github/workflows/docker_hub.yml +++ b/.github/workflows/docker_hub.yml @@ -1,4 +1,4 @@ -name: Reusable workflow for Docker Hub images +name: Workflow for Docker Hub images on: workflow_call: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 38c7feb9ad8..65d6934a05e 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -1,4 +1,4 @@ -name: Reusable workflow for macOS portability CI +name: Workflow for macOS portability CI on: workflow_call: diff --git a/.github/workflows/push_to_docker_hub.yml b/.github/workflows/push_to_docker_hub.yml index cd289f6a88b..b6ac5463fba 100644 --- a/.github/workflows/push_to_docker_hub.yml +++ b/.github/workflows/push_to_docker_hub.yml @@ -1,4 +1,4 @@ -name: Build Docker images and push to DockerHub +name: Publish Docker images to DockerHub on: workflow_dispatch: diff --git a/build/make/Makefile.in b/build/make/Makefile.in index 420dadb9364..4ccaf3d2ec9 100644 --- a/build/make/Makefile.in +++ b/build/make/Makefile.in @@ -111,12 +111,15 @@ GCC_DEP = @SAGE_GCC_DEP@ OPTIONAL_INSTALLED_PACKAGES = @SAGE_OPTIONAL_INSTALLED_PACKAGES@ INSTALLED_PACKAGES = $(OPTIONAL_INSTALLED_PACKAGES) INSTALLED_PACKAGE_INSTS = \ - $(foreach pkgname,$(INSTALLED_PACKAGES),$(inst_$(pkgname))) + $(foreach pkgname,$(INSTALLED_PACKAGES),inst_$(pkgname)) # All previously installed standard/optional/experimental packages that are to be uninstalled OPTIONAL_UNINSTALLED_PACKAGES = @SAGE_OPTIONAL_UNINSTALLED_PACKAGES@ UNINSTALLED_PACKAGES = $(OPTIONAL_UNINSTALLED_PACKAGES) -UNINSTALLED_PACKAGES_UNINSTALLS = $(UNINSTALLED_PACKAGES:%=%-uninstall) +UNINSTALLED_PACKAGE_UNINSTALLS = \ + $(foreach pkgname,$(UNINSTALLED_PACKAGES),$(pkgname)-uninstall) + +.PHONY: $(INSTALLED_PACKAGE_INSTS) $(UNINSTALLED_PACKAGE_UNINSTALLS) # All packages which should be downloaded SDIST_PACKAGES = @SAGE_SDIST_PACKAGES@ @@ -187,20 +190,29 @@ $(foreach pkgname,$(PIP_PACKAGES),\ $(SAGE_LOCAL)/$(SPKG_INST_RELDIR)/.dummy: touch $@ - -# Filtered by installation tree +# Define variables +# +# SAGE_LOCAL_INSTALLED_PACKAGE_INSTS +# SAGE_VENV_INSTALLED_PACKAGE_INSTS +# SAGE_DOCS_INSTALLED_PACKAGE_INSTS +# +# SAGE_LOCAL_UNINSTALLED_PACKAGE_UNINSTALLS +# SAGE_VENV_UNINSTALLED_PACKAGE_UNINSTALLS +# SAGE_DOCS_UNINSTALLED_PACKAGE_UNINSTALLS +# +# that list targets for packages to be installed/uninstalled into installation +# tree SAGE_LOCAL/SAGE_VENV/SAGE_DOCS $(foreach tree,SAGE_LOCAL SAGE_VENV SAGE_DOCS, \ $(eval $(tree)_INSTALLED_PACKAGE_INSTS = \ $(foreach pkgname,$(INSTALLED_PACKAGES), \ $(if $(findstring $(tree),$(trees_$(pkgname))), \ $(inst_$(pkgname))))) \ $(eval $(tree)_UNINSTALLED_PACKAGE_UNINSTALLS = \ - $(foreach pkgname,$(INSTALLED_PACKAGES), \ + $(foreach pkgname,$(UNINSTALLED_PACKAGES), \ $(if $(findstring $(tree),$(trees_$(pkgname))), \ - $(inst_$(pkgname)))))) - + $(pkgname)-uninstall)))) -############################################################################### +# ============================================================================== # Silent rules # https://www.gnu.org/software/automake/manual/html_node/Automake-Silent-Rules.html @@ -277,8 +289,8 @@ base-toolchain: _clean-broken-gcc base # All targets except for the base packages and except the documentation all-sage: \ - $(SAGE_LOCAL_INSTALLED_PACKAGE_INSTS) $(SAGE_LOCAL_UNINSTALLED_PACKAGES_UNINSTALLS) \ - $(SAGE_VENV_INSTALLED_PACKAGE_INSTS) $(SAGE_VENV_UNINSTALLED_PACKAGES_UNINSTALLS) + $(SAGE_LOCAL_INSTALLED_PACKAGE_INSTS) $(SAGE_LOCAL_UNINSTALLED_PACKAGE_UNINSTALLS) \ + $(SAGE_VENV_INSTALLED_PACKAGE_INSTS) $(SAGE_VENV_UNINSTALLED_PACKAGE_UNINSTALLS) # Same but filtered by installation trees: all-build-local: toolchain-deps @@ -289,12 +301,12 @@ all-sage-local: $(SAGE_LOCAL_INSTALLED_PACKAGE_INSTS) $(SAGE_LOCAL_UNINSTALLED_P all-build-venv: toolchain-deps +$(MAKE_REC) all-sage-venv -all-sage-venv: $(SAGE_VENV_INSTALLED_PACKAGE_INSTS) $(SAGE_VENV_UNINSTALLED_PACKAGES_UNINSTALLS) +all-sage-venv: $(SAGE_VENV_INSTALLED_PACKAGE_INSTS) $(SAGE_VENV_UNINSTALLED_PACKAGES_UNINSTALLS) all-build-docs: toolchain-deps +$(MAKE_REC) all-sage-docs -all-sage-docs: $(SAGE_DOCS_INSTALLED_PACKAGE_INSTS) $(SAGE_DOCS_UNINSTALLED_PACKAGES_UNINSTALLS) +all-sage-docs: $(SAGE_DOCS_INSTALLED_PACKAGE_INSTS) $(SAGE_DOCS_UNINSTALLED_PACKAGES_UNINSTALLS) # Download all packages which should be inside an sdist tarball (the -B # option to make forces all targets to be built unconditionally) @@ -343,17 +355,15 @@ SAGERUNTIME = sagelib $(inst_ipython) $(inst_pexpect) all-sageruntime: toolchain-deps +$(MAKE_REC) $(SAGERUNTIME) - -############################################################################### +# ============================================================================== # Building the base system # # This consists of packages which are required for the Sage build system. -############################################################################### +# ============================================================================== base: $(inst_patch) $(inst_pkgconf) -############################################################################### +# ============================================================================== # Building the documentation -############################################################################### # You can choose to have the built HTML version of the documentation link to # the PDF version. To do so, you need to build both the HTML and PDF versions. @@ -365,7 +375,7 @@ base: $(inst_patch) $(inst_pkgconf) # For more information on the docbuild utility, do # # $ ./sage --docbuild -H - +# ============================================================================== doc: doc-html # All doc-building is delegated to the script packages @@ -481,9 +491,9 @@ wheels: pypi-wheels-check: $(PYPI_WHEEL_PACKAGES:%=%-check) -#============================================================================== +# ============================================================================== # Setting SAGE_CHECK... variables -#============================================================================== +# ============================================================================== ifeq "$(origin SAGE_CHECK)" "undefined" SAGE_CHECK := no endif @@ -525,10 +535,9 @@ $(foreach clause, $(SAGE_CHECK_PACKAGES_sep), \ debug-check: @echo $(foreach pkgname, $(NORMAL_PACKAGES) $(SCRIPT_PACKAGES), SAGE_CHECK_$(pkgname) = $(SAGE_CHECK_$(pkgname))) - -#============================================================================== +# ============================================================================== # Rules generated from pkgs//dependencies files -#============================================================================== +# ============================================================================== # Define a function for generating the list of a package's dependencies # as $(inst_) variables. For example, takes: @@ -595,7 +604,7 @@ pkg_deps = \ # sage-spkg, and --keep-files to sage-spkg-uninstall since those packages can # have a recursive self-dependency, and should not be deleted while upgrading. # See Issue #25857 - +# # Positional arguments: # $(1): package name # $(2): package version @@ -657,7 +666,7 @@ $(foreach pkgname, $(NORMAL_PACKAGES),\ $(call pkg_deps,$(pkgname)),$(tree))))) endif -# ================================ pip packages =============================== +# ================================ pip packages ==================================== # Generate build rules for 'pip' packages; this template is used to generate # two rules in the form: # @@ -666,10 +675,11 @@ endif # # -uninstall: # -sage --pip uninstall -y ... - +# # Positional arguments: # $(1): package name # $(2): package dependencies + define PIP_PACKAGE_templ $(1)-build-deps: $(2) @@ -719,7 +729,7 @@ endif # . '$SAGE_ROOT/build/bin/sage-build-env-config' && \\ # . '$SAGE_ROOT/build/bin/sage-build-env' && \\ # '$SAGE_ROOT/build/pkgs/$PKG_NAME/spkg-uninstall' - +# # Positional arguments: # $(1): package name # $(2): package version diff --git a/build/pkgs/_develop/dependencies b/build/pkgs/_develop/dependencies index f37c427ebcd..d34a1df4f0d 100644 --- a/build/pkgs/_develop/dependencies +++ b/build/pkgs/_develop/dependencies @@ -1 +1 @@ -_bootstrap git pytest pytest_xdist github_cli +git pytest pytest_xdist github_cli diff --git a/build/pkgs/_prereq/distros/debian.txt b/build/pkgs/_prereq/distros/debian.txt index c6598935e3c..e4d984d22dd 100644 --- a/build/pkgs/_prereq/distros/debian.txt +++ b/build/pkgs/_prereq/distros/debian.txt @@ -19,10 +19,11 @@ python3 tar bc gcc -# On debian buster, need C++ even to survive 'configure'. Otherwise: -# checking how to run the C++ preprocessor... /lib/cpp -# configure: error: in `/sage': -# configure: error: C++ preprocessor "/lib/cpp" fails sanity check +# On debian bullseye, need C++ even to survive 'configure'. Otherwise: +# +# checking how to run the C++ preprocessor... /lib/cpp +# Error: configure: error: in `/sage': +# Error: configure: error: C++ preprocessor "/lib/cpp" fails sanity check g++ -# Needed if we download some packages from a https upstream URL +# needed if we download some packages from a https upstream URL ca-certificates diff --git a/build/pkgs/git/SPKG.rst b/build/pkgs/git/SPKG.rst index 3c0ab21da1b..8d715d9753f 100644 --- a/build/pkgs/git/SPKG.rst +++ b/build/pkgs/git/SPKG.rst @@ -4,12 +4,9 @@ git: Version control system Description ----------- - Git is a fast, scalable, distributed revision control system with an - unusually rich command set that provides both high-operations and - full access to internals. - -- ``man git`` - +Git is a fast, scalable, distributed revision control system with an +unusually rich command set that provides both high-operations and +full access to internals. Upstream Contact ---------------- diff --git a/conftest.py b/src/conftest.py similarity index 100% rename from conftest.py rename to src/conftest.py diff --git a/src/doc/en/developer/portability_platform_table.rst b/src/doc/en/developer/portability_platform_table.rst index d8d56329d4d..de646ca2fd7 100644 --- a/src/doc/en/developer/portability_platform_table.rst +++ b/src/doc/en/developer/portability_platform_table.rst @@ -1,111 +1,3 @@ -.. |image-ubuntu-xenial-toolchain-gcc_9-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-minimal-with-system-packages - -.. |image-ubuntu-xenial-toolchain-gcc_9-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-minimal-configured - -.. |image-ubuntu-xenial-toolchain-gcc_9-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-minimal-with-targets-pre - -.. |image-ubuntu-xenial-toolchain-gcc_9-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-minimal-with-targets - -.. |image-ubuntu-xenial-toolchain-gcc_9-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-minimal-with-targets-optional - -.. |codespace-ubuntu-xenial-toolchain-gcc_9-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-xenial-toolchain-gcc_9-minimal%2Fdevcontainer.json - -.. |image-ubuntu-xenial-toolchain-gcc_9-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-standard-with-system-packages - -.. |image-ubuntu-xenial-toolchain-gcc_9-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-standard-configured - -.. |image-ubuntu-xenial-toolchain-gcc_9-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-standard-with-targets-pre - -.. |image-ubuntu-xenial-toolchain-gcc_9-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-standard-with-targets - -.. |image-ubuntu-xenial-toolchain-gcc_9-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-standard-with-targets-optional - -.. |codespace-ubuntu-xenial-toolchain-gcc_9-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-xenial-toolchain-gcc_9-standard%2Fdevcontainer.json - -.. |image-ubuntu-xenial-toolchain-gcc_9-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-maximal-with-system-packages - -.. |image-ubuntu-xenial-toolchain-gcc_9-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-maximal-configured - -.. |image-ubuntu-xenial-toolchain-gcc_9-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-maximal-with-targets-pre - -.. |image-ubuntu-xenial-toolchain-gcc_9-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-maximal-with-targets - -.. |image-ubuntu-xenial-toolchain-gcc_9-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-xenial-toolchain-gcc_9-maximal-with-targets-optional - -.. |codespace-ubuntu-xenial-toolchain-gcc_9-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-xenial-toolchain-gcc_9-maximal%2Fdevcontainer.json - -.. |image-ubuntu-bionic-gcc_8-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-minimal-with-system-packages - -.. |image-ubuntu-bionic-gcc_8-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-minimal-configured - -.. |image-ubuntu-bionic-gcc_8-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-minimal-with-targets-pre - -.. |image-ubuntu-bionic-gcc_8-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-minimal-with-targets - -.. |image-ubuntu-bionic-gcc_8-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-minimal-with-targets-optional - -.. |codespace-ubuntu-bionic-gcc_8-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-bionic-gcc_8-minimal%2Fdevcontainer.json - -.. |image-ubuntu-bionic-gcc_8-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-standard-with-system-packages - -.. |image-ubuntu-bionic-gcc_8-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-standard-configured - -.. |image-ubuntu-bionic-gcc_8-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-standard-with-targets-pre - -.. |image-ubuntu-bionic-gcc_8-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-standard-with-targets - -.. |image-ubuntu-bionic-gcc_8-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-standard-with-targets-optional - -.. |codespace-ubuntu-bionic-gcc_8-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-bionic-gcc_8-standard%2Fdevcontainer.json - -.. |image-ubuntu-bionic-gcc_8-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-maximal-with-system-packages - -.. |image-ubuntu-bionic-gcc_8-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-maximal-configured - -.. |image-ubuntu-bionic-gcc_8-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-maximal-with-targets-pre - -.. |image-ubuntu-bionic-gcc_8-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-maximal-with-targets - -.. |image-ubuntu-bionic-gcc_8-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-maximal-with-targets-optional - -.. |codespace-ubuntu-bionic-gcc_8-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-bionic-gcc_8-maximal%2Fdevcontainer.json - .. |image-ubuntu-focal-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-focal-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 :target: https://ghcr.io/sagemath/sage/sage-ubuntu-focal-minimal-with-system-packages @@ -214,114 +106,6 @@ .. |codespace-ubuntu-jammy-maximal| image:: https://github.com/codespaces/badge.svg :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-jammy-maximal%2Fdevcontainer.json -.. |image-ubuntu-lunar-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-minimal-with-system-packages - -.. |image-ubuntu-lunar-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-minimal-configured - -.. |image-ubuntu-lunar-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-minimal-with-targets-pre - -.. |image-ubuntu-lunar-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-minimal-with-targets - -.. |image-ubuntu-lunar-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-minimal-with-targets-optional - -.. |codespace-ubuntu-lunar-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-lunar-minimal%2Fdevcontainer.json - -.. |image-ubuntu-lunar-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-standard-with-system-packages - -.. |image-ubuntu-lunar-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-standard-configured - -.. |image-ubuntu-lunar-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-standard-with-targets-pre - -.. |image-ubuntu-lunar-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-standard-with-targets - -.. |image-ubuntu-lunar-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-standard-with-targets-optional - -.. |codespace-ubuntu-lunar-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-lunar-standard%2Fdevcontainer.json - -.. |image-ubuntu-lunar-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-maximal-with-system-packages - -.. |image-ubuntu-lunar-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-maximal-configured - -.. |image-ubuntu-lunar-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-maximal-with-targets-pre - -.. |image-ubuntu-lunar-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-maximal-with-targets - -.. |image-ubuntu-lunar-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-lunar-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-lunar-maximal-with-targets-optional - -.. |codespace-ubuntu-lunar-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-lunar-maximal%2Fdevcontainer.json - -.. |image-ubuntu-mantic-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-minimal-with-system-packages - -.. |image-ubuntu-mantic-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-minimal-configured - -.. |image-ubuntu-mantic-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-minimal-with-targets-pre - -.. |image-ubuntu-mantic-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-minimal-with-targets - -.. |image-ubuntu-mantic-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-minimal-with-targets-optional - -.. |codespace-ubuntu-mantic-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-mantic-minimal%2Fdevcontainer.json - -.. |image-ubuntu-mantic-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-standard-with-system-packages - -.. |image-ubuntu-mantic-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-standard-configured - -.. |image-ubuntu-mantic-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-standard-with-targets-pre - -.. |image-ubuntu-mantic-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-standard-with-targets - -.. |image-ubuntu-mantic-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-standard-with-targets-optional - -.. |codespace-ubuntu-mantic-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-mantic-standard%2Fdevcontainer.json - -.. |image-ubuntu-mantic-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-maximal-with-system-packages - -.. |image-ubuntu-mantic-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-maximal-configured - -.. |image-ubuntu-mantic-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-maximal-with-targets-pre - -.. |image-ubuntu-mantic-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-maximal-with-targets - -.. |image-ubuntu-mantic-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-mantic-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-mantic-maximal-with-targets-optional - -.. |codespace-ubuntu-mantic-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-mantic-maximal%2Fdevcontainer.json - .. |image-ubuntu-noble-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-noble-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 :target: https://ghcr.io/sagemath/sage/sage-ubuntu-noble-minimal-with-system-packages @@ -592,168 +376,6 @@ .. |codespace-debian-sid-maximal| image:: https://github.com/codespaces/badge.svg :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-debian-sid-maximal%2Fdevcontainer.json -.. |image-linuxmint-20.1-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-minimal-with-system-packages - -.. |image-linuxmint-20.1-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-minimal-configured - -.. |image-linuxmint-20.1-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-minimal-with-targets-pre - -.. |image-linuxmint-20.1-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-minimal-with-targets - -.. |image-linuxmint-20.1-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-minimal-with-targets-optional - -.. |codespace-linuxmint-20.1-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-20.1-minimal%2Fdevcontainer.json - -.. |image-linuxmint-20.1-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-standard-with-system-packages - -.. |image-linuxmint-20.1-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-standard-configured - -.. |image-linuxmint-20.1-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-standard-with-targets-pre - -.. |image-linuxmint-20.1-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-standard-with-targets - -.. |image-linuxmint-20.1-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-standard-with-targets-optional - -.. |codespace-linuxmint-20.1-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-20.1-standard%2Fdevcontainer.json - -.. |image-linuxmint-20.1-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-maximal-with-system-packages - -.. |image-linuxmint-20.1-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-maximal-configured - -.. |image-linuxmint-20.1-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-maximal-with-targets-pre - -.. |image-linuxmint-20.1-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-maximal-with-targets - -.. |image-linuxmint-20.1-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.1-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.1-maximal-with-targets-optional - -.. |codespace-linuxmint-20.1-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-20.1-maximal%2Fdevcontainer.json - -.. |image-linuxmint-20.2-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-minimal-with-system-packages - -.. |image-linuxmint-20.2-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-minimal-configured - -.. |image-linuxmint-20.2-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-minimal-with-targets-pre - -.. |image-linuxmint-20.2-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-minimal-with-targets - -.. |image-linuxmint-20.2-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-minimal-with-targets-optional - -.. |codespace-linuxmint-20.2-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-20.2-minimal%2Fdevcontainer.json - -.. |image-linuxmint-20.2-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-standard-with-system-packages - -.. |image-linuxmint-20.2-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-standard-configured - -.. |image-linuxmint-20.2-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-standard-with-targets-pre - -.. |image-linuxmint-20.2-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-standard-with-targets - -.. |image-linuxmint-20.2-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-standard-with-targets-optional - -.. |codespace-linuxmint-20.2-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-20.2-standard%2Fdevcontainer.json - -.. |image-linuxmint-20.2-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-maximal-with-system-packages - -.. |image-linuxmint-20.2-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-maximal-configured - -.. |image-linuxmint-20.2-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-maximal-with-targets-pre - -.. |image-linuxmint-20.2-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-maximal-with-targets - -.. |image-linuxmint-20.2-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.2-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.2-maximal-with-targets-optional - -.. |codespace-linuxmint-20.2-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-20.2-maximal%2Fdevcontainer.json - -.. |image-linuxmint-20.3-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-minimal-with-system-packages - -.. |image-linuxmint-20.3-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-minimal-configured - -.. |image-linuxmint-20.3-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-minimal-with-targets-pre - -.. |image-linuxmint-20.3-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-minimal-with-targets - -.. |image-linuxmint-20.3-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-minimal-with-targets-optional - -.. |codespace-linuxmint-20.3-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-20.3-minimal%2Fdevcontainer.json - -.. |image-linuxmint-20.3-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-standard-with-system-packages - -.. |image-linuxmint-20.3-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-standard-configured - -.. |image-linuxmint-20.3-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-standard-with-targets-pre - -.. |image-linuxmint-20.3-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-standard-with-targets - -.. |image-linuxmint-20.3-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-standard-with-targets-optional - -.. |codespace-linuxmint-20.3-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-20.3-standard%2Fdevcontainer.json - -.. |image-linuxmint-20.3-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-maximal-with-system-packages - -.. |image-linuxmint-20.3-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-maximal-configured - -.. |image-linuxmint-20.3-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-maximal-with-targets-pre - -.. |image-linuxmint-20.3-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-maximal-with-targets - -.. |image-linuxmint-20.3-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-20.3-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-linuxmint-20.3-maximal-with-targets-optional - -.. |codespace-linuxmint-20.3-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-20.3-maximal%2Fdevcontainer.json - .. |image-linuxmint-21-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-21-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 :target: https://ghcr.io/sagemath/sage/sage-linuxmint-21-minimal-with-system-packages @@ -970,329 +592,113 @@ .. |codespace-linuxmint-21.3-maximal| image:: https://github.com/codespaces/badge.svg :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-21.3-maximal%2Fdevcontainer.json -.. |image-fedora-30-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-minimal-with-system-packages - -.. |image-fedora-30-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-minimal-configured - -.. |image-fedora-30-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-minimal-with-targets-pre - -.. |image-fedora-30-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-minimal-with-targets - -.. |image-fedora-30-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-minimal-with-targets-optional - -.. |codespace-fedora-30-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-30-minimal%2Fdevcontainer.json - -.. |image-fedora-30-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-standard-with-system-packages - -.. |image-fedora-30-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-standard-configured - -.. |image-fedora-30-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-standard-with-targets-pre - -.. |image-fedora-30-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-standard-with-targets - -.. |image-fedora-30-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-standard-with-targets-optional - -.. |codespace-fedora-30-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-30-standard%2Fdevcontainer.json - -.. |image-fedora-30-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-maximal-with-system-packages - -.. |image-fedora-30-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-maximal-configured - -.. |image-fedora-30-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-maximal-with-targets-pre - -.. |image-fedora-30-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-maximal-with-targets - -.. |image-fedora-30-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-30-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-fedora-30-maximal-with-targets-optional - -.. |codespace-fedora-30-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-30-maximal%2Fdevcontainer.json - -.. |image-fedora-31-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-minimal-with-system-packages - -.. |image-fedora-31-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-minimal-configured - -.. |image-fedora-31-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-minimal-with-targets-pre - -.. |image-fedora-31-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-minimal-with-targets - -.. |image-fedora-31-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-minimal-with-targets-optional - -.. |codespace-fedora-31-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-31-minimal%2Fdevcontainer.json - -.. |image-fedora-31-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-standard-with-system-packages - -.. |image-fedora-31-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-standard-configured - -.. |image-fedora-31-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-standard-with-targets-pre - -.. |image-fedora-31-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-standard-with-targets - -.. |image-fedora-31-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-standard-with-targets-optional - -.. |codespace-fedora-31-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-31-standard%2Fdevcontainer.json - -.. |image-fedora-31-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-maximal-with-system-packages - -.. |image-fedora-31-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-maximal-configured - -.. |image-fedora-31-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-maximal-with-targets-pre - -.. |image-fedora-31-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-maximal-with-targets - -.. |image-fedora-31-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-31-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-fedora-31-maximal-with-targets-optional - -.. |codespace-fedora-31-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-31-maximal%2Fdevcontainer.json - -.. |image-fedora-32-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-minimal-with-system-packages - -.. |image-fedora-32-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-minimal-configured - -.. |image-fedora-32-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-minimal-with-targets-pre - -.. |image-fedora-32-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-minimal-with-targets - -.. |image-fedora-32-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-minimal-with-targets-optional - -.. |codespace-fedora-32-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-32-minimal%2Fdevcontainer.json - -.. |image-fedora-32-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-standard-with-system-packages - -.. |image-fedora-32-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-standard-configured - -.. |image-fedora-32-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-standard-with-targets-pre - -.. |image-fedora-32-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-standard-with-targets - -.. |image-fedora-32-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-standard-with-targets-optional +.. |image-linuxmint-22-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-minimal-with-system-packages -.. |codespace-fedora-32-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-32-standard%2Fdevcontainer.json +.. |image-linuxmint-22-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-minimal-configured -.. |image-fedora-32-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-maximal-with-system-packages +.. |image-linuxmint-22-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-minimal-with-targets-pre -.. |image-fedora-32-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-maximal-configured +.. |image-linuxmint-22-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-minimal-with-targets -.. |image-fedora-32-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-maximal-with-targets-pre +.. |image-linuxmint-22-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-minimal-with-targets-optional -.. |image-fedora-32-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-maximal-with-targets +.. |codespace-linuxmint-22-minimal| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-22-minimal%2Fdevcontainer.json -.. |image-fedora-32-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-32-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-fedora-32-maximal-with-targets-optional +.. |image-linuxmint-22-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-standard-with-system-packages -.. |codespace-fedora-32-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-32-maximal%2Fdevcontainer.json +.. |image-linuxmint-22-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-standard-configured -.. |image-fedora-33-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-minimal-with-system-packages +.. |image-linuxmint-22-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-standard-with-targets-pre -.. |image-fedora-33-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-minimal-configured +.. |image-linuxmint-22-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-standard-with-targets -.. |image-fedora-33-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-minimal-with-targets-pre +.. |image-linuxmint-22-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-standard-with-targets-optional -.. |image-fedora-33-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-minimal-with-targets +.. |codespace-linuxmint-22-standard| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-22-standard%2Fdevcontainer.json -.. |image-fedora-33-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-minimal-with-targets-optional +.. |image-linuxmint-22-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-maximal-with-system-packages -.. |codespace-fedora-33-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-33-minimal%2Fdevcontainer.json +.. |image-linuxmint-22-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-maximal-configured -.. |image-fedora-33-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-standard-with-system-packages +.. |image-linuxmint-22-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-maximal-with-targets-pre -.. |image-fedora-33-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-standard-configured +.. |image-linuxmint-22-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-maximal-with-targets -.. |image-fedora-33-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-standard-with-targets-pre +.. |image-linuxmint-22-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22-maximal-with-targets-optional -.. |image-fedora-33-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-standard-with-targets +.. |codespace-linuxmint-22-maximal| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-22-maximal%2Fdevcontainer.json -.. |image-fedora-33-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-standard-with-targets-optional +.. |image-linuxmint-22.1-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-minimal-with-system-packages -.. |codespace-fedora-33-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-33-standard%2Fdevcontainer.json +.. |image-linuxmint-22.1-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-minimal-configured -.. |image-fedora-33-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-maximal-with-system-packages +.. |image-linuxmint-22.1-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-minimal-with-targets-pre -.. |image-fedora-33-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-maximal-configured +.. |image-linuxmint-22.1-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-minimal-with-targets -.. |image-fedora-33-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-maximal-with-targets-pre +.. |image-linuxmint-22.1-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-minimal-with-targets-optional -.. |image-fedora-33-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-maximal-with-targets +.. |codespace-linuxmint-22.1-minimal| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-22.1-minimal%2Fdevcontainer.json -.. |image-fedora-33-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-33-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-fedora-33-maximal-with-targets-optional +.. |image-linuxmint-22.1-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-standard-with-system-packages -.. |codespace-fedora-33-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-33-maximal%2Fdevcontainer.json +.. |image-linuxmint-22.1-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-standard-configured -.. |image-fedora-34-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-minimal-with-system-packages +.. |image-linuxmint-22.1-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-standard-with-targets-pre -.. |image-fedora-34-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-minimal-configured +.. |image-linuxmint-22.1-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-standard-with-targets -.. |image-fedora-34-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-minimal-with-targets-pre +.. |image-linuxmint-22.1-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-standard-with-targets-optional -.. |image-fedora-34-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-minimal-with-targets +.. |codespace-linuxmint-22.1-standard| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-22.1-standard%2Fdevcontainer.json -.. |image-fedora-34-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-minimal-with-targets-optional +.. |image-linuxmint-22.1-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-maximal-with-system-packages -.. |codespace-fedora-34-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-34-minimal%2Fdevcontainer.json +.. |image-linuxmint-22.1-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-maximal-configured -.. |image-fedora-34-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-standard-with-system-packages +.. |image-linuxmint-22.1-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-maximal-with-targets-pre -.. |image-fedora-34-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-standard-configured +.. |image-linuxmint-22.1-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-maximal-with-targets -.. |image-fedora-34-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-standard-with-targets-pre +.. |image-linuxmint-22.1-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-linuxmint-22.1-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 + :target: https://ghcr.io/sagemath/sage/sage-linuxmint-22.1-maximal-with-targets-optional -.. |image-fedora-34-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-standard-with-targets - -.. |image-fedora-34-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-standard-with-targets-optional - -.. |codespace-fedora-34-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-34-standard%2Fdevcontainer.json - -.. |image-fedora-34-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-maximal-with-system-packages - -.. |image-fedora-34-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-maximal-configured - -.. |image-fedora-34-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-maximal-with-targets-pre - -.. |image-fedora-34-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-maximal-with-targets - -.. |image-fedora-34-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-34-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-fedora-34-maximal-with-targets-optional - -.. |codespace-fedora-34-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-34-maximal%2Fdevcontainer.json - -.. |image-fedora-35-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-minimal-with-system-packages - -.. |image-fedora-35-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-minimal-configured - -.. |image-fedora-35-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-minimal-with-targets-pre - -.. |image-fedora-35-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-minimal-with-targets - -.. |image-fedora-35-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-minimal-with-targets-optional - -.. |codespace-fedora-35-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-35-minimal%2Fdevcontainer.json - -.. |image-fedora-35-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-standard-with-system-packages - -.. |image-fedora-35-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-standard-configured - -.. |image-fedora-35-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-standard-with-targets-pre - -.. |image-fedora-35-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-standard-with-targets - -.. |image-fedora-35-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-standard-with-targets-optional - -.. |codespace-fedora-35-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-35-standard%2Fdevcontainer.json - -.. |image-fedora-35-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-maximal-with-system-packages - -.. |image-fedora-35-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-maximal-configured - -.. |image-fedora-35-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-maximal-with-targets-pre - -.. |image-fedora-35-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-maximal-with-targets - -.. |image-fedora-35-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-35-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-fedora-35-maximal-with-targets-optional - -.. |codespace-fedora-35-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-fedora-35-maximal%2Fdevcontainer.json +.. |codespace-linuxmint-22.1-maximal| image:: https://github.com/codespaces/badge.svg + :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-linuxmint-22.1-maximal%2Fdevcontainer.json .. |image-fedora-36-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-fedora-36-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 :target: https://ghcr.io/sagemath/sage/sage-fedora-36-minimal-with-system-packages @@ -2158,222 +1564,6 @@ .. |codespace-opensuse-tumbleweed-python3.10-maximal| image:: https://github.com/codespaces/badge.svg :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-opensuse-tumbleweed-python3.10-maximal%2Fdevcontainer.json -.. |image-opensuse-tumbleweed-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-minimal-with-system-packages - -.. |image-opensuse-tumbleweed-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-minimal-configured - -.. |image-opensuse-tumbleweed-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-minimal-with-targets-pre - -.. |image-opensuse-tumbleweed-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-minimal-with-targets - -.. |image-opensuse-tumbleweed-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-minimal-with-targets-optional - -.. |codespace-opensuse-tumbleweed-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-opensuse-tumbleweed-minimal%2Fdevcontainer.json - -.. |image-opensuse-tumbleweed-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-standard-with-system-packages - -.. |image-opensuse-tumbleweed-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-standard-configured - -.. |image-opensuse-tumbleweed-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-standard-with-targets-pre - -.. |image-opensuse-tumbleweed-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-standard-with-targets - -.. |image-opensuse-tumbleweed-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-standard-with-targets-optional - -.. |codespace-opensuse-tumbleweed-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-opensuse-tumbleweed-standard%2Fdevcontainer.json - -.. |image-opensuse-tumbleweed-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-maximal-with-system-packages - -.. |image-opensuse-tumbleweed-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-maximal-configured - -.. |image-opensuse-tumbleweed-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-maximal-with-targets-pre - -.. |image-opensuse-tumbleweed-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-maximal-with-targets - -.. |image-opensuse-tumbleweed-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-opensuse-tumbleweed-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-opensuse-tumbleweed-maximal-with-targets-optional - -.. |codespace-opensuse-tumbleweed-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-opensuse-tumbleweed-maximal%2Fdevcontainer.json - -.. |image-conda-forge-python3.11-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-minimal-with-system-packages - -.. |image-conda-forge-python3.11-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-minimal-configured - -.. |image-conda-forge-python3.11-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-minimal-with-targets-pre - -.. |image-conda-forge-python3.11-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-minimal-with-targets - -.. |image-conda-forge-python3.11-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-minimal-with-targets-optional - -.. |codespace-conda-forge-python3.11-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-conda-forge-python3.11-minimal%2Fdevcontainer.json - -.. |image-conda-forge-python3.11-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-standard-with-system-packages - -.. |image-conda-forge-python3.11-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-standard-configured - -.. |image-conda-forge-python3.11-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-standard-with-targets-pre - -.. |image-conda-forge-python3.11-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-standard-with-targets - -.. |image-conda-forge-python3.11-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-standard-with-targets-optional - -.. |codespace-conda-forge-python3.11-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-conda-forge-python3.11-standard%2Fdevcontainer.json - -.. |image-conda-forge-python3.11-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-maximal-with-system-packages - -.. |image-conda-forge-python3.11-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-maximal-configured - -.. |image-conda-forge-python3.11-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-maximal-with-targets-pre - -.. |image-conda-forge-python3.11-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-maximal-with-targets - -.. |image-conda-forge-python3.11-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-conda-forge-python3.11-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-conda-forge-python3.11-maximal-with-targets-optional - -.. |codespace-conda-forge-python3.11-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-conda-forge-python3.11-maximal%2Fdevcontainer.json - -.. |image-ubuntu-bionic-gcc_8-i386-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-minimal-with-system-packages - -.. |image-ubuntu-bionic-gcc_8-i386-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-minimal-configured - -.. |image-ubuntu-bionic-gcc_8-i386-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-minimal-with-targets-pre - -.. |image-ubuntu-bionic-gcc_8-i386-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-minimal-with-targets - -.. |image-ubuntu-bionic-gcc_8-i386-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-minimal-with-targets-optional - -.. |codespace-ubuntu-bionic-gcc_8-i386-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-bionic-gcc_8-i386-minimal%2Fdevcontainer.json - -.. |image-ubuntu-bionic-gcc_8-i386-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-standard-with-system-packages - -.. |image-ubuntu-bionic-gcc_8-i386-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-standard-configured - -.. |image-ubuntu-bionic-gcc_8-i386-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-standard-with-targets-pre - -.. |image-ubuntu-bionic-gcc_8-i386-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-standard-with-targets - -.. |image-ubuntu-bionic-gcc_8-i386-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-standard-with-targets-optional - -.. |codespace-ubuntu-bionic-gcc_8-i386-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-bionic-gcc_8-i386-standard%2Fdevcontainer.json - -.. |image-ubuntu-bionic-gcc_8-i386-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-maximal-with-system-packages - -.. |image-ubuntu-bionic-gcc_8-i386-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-maximal-configured - -.. |image-ubuntu-bionic-gcc_8-i386-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-maximal-with-targets-pre - -.. |image-ubuntu-bionic-gcc_8-i386-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-maximal-with-targets - -.. |image-ubuntu-bionic-gcc_8-i386-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-ubuntu-bionic-gcc_8-i386-maximal-with-targets-optional - -.. |codespace-ubuntu-bionic-gcc_8-i386-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-ubuntu-bionic-gcc_8-i386-maximal%2Fdevcontainer.json - -.. |image-debian-bullseye-i386-minimal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-minimal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-minimal-with-system-packages - -.. |image-debian-bullseye-i386-minimal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-minimal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-minimal-configured - -.. |image-debian-bullseye-i386-minimal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-minimal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%23677895 - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-minimal-with-targets-pre - -.. |image-debian-bullseye-i386-minimal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-minimal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%236686c1 - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-minimal-with-targets - -.. |image-debian-bullseye-i386-minimal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-minimal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%236495ed - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-minimal-with-targets-optional - -.. |codespace-debian-bullseye-i386-minimal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-debian-bullseye-i386-minimal%2Fdevcontainer.json - -.. |image-debian-bullseye-i386-standard-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-standard-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-standard-with-system-packages - -.. |image-debian-bullseye-i386-standard-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-standard-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-standard-configured - -.. |image-debian-bullseye-i386-standard-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-standard-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%235d8a4c - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-standard-with-targets-pre - -.. |image-debian-bullseye-i386-standard-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-standard-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%2350ab2e - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-standard-with-targets - -.. |image-debian-bullseye-i386-standard-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-standard-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%2344cc11 - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-standard-with-targets-optional - -.. |codespace-debian-bullseye-i386-standard| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-debian-bullseye-i386-standard%2Fdevcontainer.json - -.. |image-debian-bullseye-i386-maximal-with-system-packages| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-maximal-with-system-packages/size?tag=dev&label=with-system-packages&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-maximal-with-system-packages - -.. |image-debian-bullseye-i386-maximal-configured| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-maximal-configured/latest_tag?ignore=latest,dev,*-failed&label=configured&color=%23696969 - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-maximal-configured - -.. |image-debian-bullseye-i386-maximal-with-targets-pre| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-maximal-with-targets-pre/latest_tag?ignore=latest,dev,*-failed&label=with-targets-pre&color=%238f6b8d - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-maximal-with-targets-pre - -.. |image-debian-bullseye-i386-maximal-with-targets| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-maximal-with-targets/latest_tag?ignore=latest,dev,*-failed&label=with-targets&color=%23b46eb2 - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-maximal-with-targets - -.. |image-debian-bullseye-i386-maximal-with-targets-optional| image:: https://ghcr-badge.egpl.dev/sagemath/sage/sage-debian-bullseye-i386-maximal-with-targets-optional/latest_tag?ignore=latest,dev,*-failed&label=with-targets-optional&color=%23da70d6 - :target: https://ghcr.io/sagemath/sage/sage-debian-bullseye-i386-maximal-with-targets-optional - -.. |codespace-debian-bullseye-i386-maximal| image:: https://github.com/codespaces/badge.svg - :target: https://codespaces.new/sagemath/sage?devcontainer_path=.devcontainer%2Fportability-debian-bullseye-i386-maximal%2Fdevcontainer.json - .. list-table:: :widths: 50 50 40 :header-rows: 1 @@ -2382,28 +1572,6 @@ * - Platform - Images - - * - **ubuntu**-xenial-toolchain-gcc_9 - -    ‑*minimal* - - |image-ubuntu-xenial-toolchain-gcc_9-minimal-with-system-packages| |image-ubuntu-xenial-toolchain-gcc_9-minimal-with-targets-pre| |image-ubuntu-xenial-toolchain-gcc_9-minimal-with-targets| |image-ubuntu-xenial-toolchain-gcc_9-minimal-with-targets-optional| - - |codespace-ubuntu-xenial-toolchain-gcc_9-minimal| - * -    ‑*standard* - - |image-ubuntu-xenial-toolchain-gcc_9-standard-with-system-packages| |image-ubuntu-xenial-toolchain-gcc_9-standard-with-targets-pre| |image-ubuntu-xenial-toolchain-gcc_9-standard-with-targets| |image-ubuntu-xenial-toolchain-gcc_9-standard-with-targets-optional| - - |codespace-ubuntu-xenial-toolchain-gcc_9-standard| - * -    ‑*maximal* - - |image-ubuntu-xenial-toolchain-gcc_9-maximal-with-system-packages| |image-ubuntu-xenial-toolchain-gcc_9-maximal-with-targets-pre| - - - * - **ubuntu**-bionic-gcc_8 - -    ‑*minimal* - - |image-ubuntu-bionic-gcc_8-minimal-with-system-packages| |image-ubuntu-bionic-gcc_8-minimal-with-targets-pre| |image-ubuntu-bionic-gcc_8-minimal-with-targets| |image-ubuntu-bionic-gcc_8-minimal-with-targets-optional| - - |codespace-ubuntu-bionic-gcc_8-minimal| - * -    ‑*standard* - - |image-ubuntu-bionic-gcc_8-standard-with-system-packages| |image-ubuntu-bionic-gcc_8-standard-with-targets-pre| |image-ubuntu-bionic-gcc_8-standard-with-targets| |image-ubuntu-bionic-gcc_8-standard-with-targets-optional| - - |codespace-ubuntu-bionic-gcc_8-standard| - * -    ‑*maximal* - - |image-ubuntu-bionic-gcc_8-maximal-with-system-packages| |image-ubuntu-bionic-gcc_8-maximal-with-targets-pre| - - * - **ubuntu**-focal    ‑*minimal* @@ -2426,28 +1594,6 @@ * -    ‑*maximal* - |image-ubuntu-jammy-maximal-with-system-packages| |image-ubuntu-jammy-maximal-with-targets-pre| - - * - **ubuntu**-lunar - -    ‑*minimal* - - |image-ubuntu-lunar-minimal-with-system-packages| |image-ubuntu-lunar-minimal-with-targets-pre| |image-ubuntu-lunar-minimal-with-targets| |image-ubuntu-lunar-minimal-with-targets-optional| - - |codespace-ubuntu-lunar-minimal| - * -    ‑*standard* - - |image-ubuntu-lunar-standard-with-system-packages| |image-ubuntu-lunar-standard-with-targets-pre| |image-ubuntu-lunar-standard-with-targets| |image-ubuntu-lunar-standard-with-targets-optional| - - |codespace-ubuntu-lunar-standard| - * -    ‑*maximal* - - |image-ubuntu-lunar-maximal-with-system-packages| |image-ubuntu-lunar-maximal-with-targets-pre| - - - * - **ubuntu**-mantic - -    ‑*minimal* - - |image-ubuntu-mantic-minimal-with-system-packages| |image-ubuntu-mantic-minimal-with-targets-pre| |image-ubuntu-mantic-minimal-with-targets| |image-ubuntu-mantic-minimal-with-targets-optional| - - |codespace-ubuntu-mantic-minimal| - * -    ‑*standard* - - |image-ubuntu-mantic-standard-with-system-packages| |image-ubuntu-mantic-standard-with-targets-pre| |image-ubuntu-mantic-standard-with-targets| |image-ubuntu-mantic-standard-with-targets-optional| - - |codespace-ubuntu-mantic-standard| - * -    ‑*maximal* - - |image-ubuntu-mantic-maximal-with-system-packages| |image-ubuntu-mantic-maximal-with-targets-pre| - - * - **ubuntu**-noble    ‑*minimal* @@ -2503,39 +1649,6 @@ * -    ‑*maximal* - |image-debian-sid-maximal-with-system-packages| |image-debian-sid-maximal-with-targets-pre| - - * - **linuxmint**-20.1 - -    ‑*minimal* - - |image-linuxmint-20.1-minimal-with-system-packages| |image-linuxmint-20.1-minimal-with-targets-pre| |image-linuxmint-20.1-minimal-with-targets| |image-linuxmint-20.1-minimal-with-targets-optional| - - |codespace-linuxmint-20.1-minimal| - * -    ‑*standard* - - |image-linuxmint-20.1-standard-with-system-packages| |image-linuxmint-20.1-standard-with-targets-pre| |image-linuxmint-20.1-standard-with-targets| |image-linuxmint-20.1-standard-with-targets-optional| - - |codespace-linuxmint-20.1-standard| - * -    ‑*maximal* - - |image-linuxmint-20.1-maximal-with-system-packages| |image-linuxmint-20.1-maximal-with-targets-pre| - - - * - **linuxmint**-20.2 - -    ‑*minimal* - - |image-linuxmint-20.2-minimal-with-system-packages| |image-linuxmint-20.2-minimal-with-targets-pre| |image-linuxmint-20.2-minimal-with-targets| |image-linuxmint-20.2-minimal-with-targets-optional| - - |codespace-linuxmint-20.2-minimal| - * -    ‑*standard* - - |image-linuxmint-20.2-standard-with-system-packages| |image-linuxmint-20.2-standard-with-targets-pre| |image-linuxmint-20.2-standard-with-targets| |image-linuxmint-20.2-standard-with-targets-optional| - - |codespace-linuxmint-20.2-standard| - * -    ‑*maximal* - - |image-linuxmint-20.2-maximal-with-system-packages| |image-linuxmint-20.2-maximal-with-targets-pre| - - - * - **linuxmint**-20.3 - -    ‑*minimal* - - |image-linuxmint-20.3-minimal-with-system-packages| |image-linuxmint-20.3-minimal-with-targets-pre| |image-linuxmint-20.3-minimal-with-targets| |image-linuxmint-20.3-minimal-with-targets-optional| - - |codespace-linuxmint-20.3-minimal| - * -    ‑*standard* - - |image-linuxmint-20.3-standard-with-system-packages| |image-linuxmint-20.3-standard-with-targets-pre| |image-linuxmint-20.3-standard-with-targets| |image-linuxmint-20.3-standard-with-targets-optional| - - |codespace-linuxmint-20.3-standard| - * -    ‑*maximal* - - |image-linuxmint-20.3-maximal-with-system-packages| |image-linuxmint-20.3-maximal-with-targets-pre| - - * - **linuxmint**-21    ‑*minimal* @@ -2580,71 +1693,27 @@ * -    ‑*maximal* - |image-linuxmint-21.3-maximal-with-system-packages| |image-linuxmint-21.3-maximal-with-targets-pre| - - * - **fedora**-30 - -    ‑*minimal* - - |image-fedora-30-minimal-with-system-packages| |image-fedora-30-minimal-with-targets-pre| |image-fedora-30-minimal-with-targets| |image-fedora-30-minimal-with-targets-optional| - - |codespace-fedora-30-minimal| - * -    ‑*standard* - - |image-fedora-30-standard-with-system-packages| |image-fedora-30-standard-with-targets-pre| |image-fedora-30-standard-with-targets| |image-fedora-30-standard-with-targets-optional| - - |codespace-fedora-30-standard| - * -    ‑*maximal* - - |image-fedora-30-maximal-with-system-packages| |image-fedora-30-maximal-with-targets-pre| - - - * - **fedora**-31 - -    ‑*minimal* - - |image-fedora-31-minimal-with-system-packages| |image-fedora-31-minimal-with-targets-pre| |image-fedora-31-minimal-with-targets| |image-fedora-31-minimal-with-targets-optional| - - |codespace-fedora-31-minimal| - * -    ‑*standard* - - |image-fedora-31-standard-with-system-packages| |image-fedora-31-standard-with-targets-pre| |image-fedora-31-standard-with-targets| |image-fedora-31-standard-with-targets-optional| - - |codespace-fedora-31-standard| - * -    ‑*maximal* - - |image-fedora-31-maximal-with-system-packages| |image-fedora-31-maximal-with-targets-pre| - - - * - **fedora**-32 - -    ‑*minimal* - - |image-fedora-32-minimal-with-system-packages| |image-fedora-32-minimal-with-targets-pre| |image-fedora-32-minimal-with-targets| |image-fedora-32-minimal-with-targets-optional| - - |codespace-fedora-32-minimal| - * -    ‑*standard* - - |image-fedora-32-standard-with-system-packages| |image-fedora-32-standard-with-targets-pre| |image-fedora-32-standard-with-targets| |image-fedora-32-standard-with-targets-optional| - - |codespace-fedora-32-standard| - * -    ‑*maximal* - - |image-fedora-32-maximal-with-system-packages| |image-fedora-32-maximal-with-targets-pre| - - - * - **fedora**-33 - -    ‑*minimal* - - |image-fedora-33-minimal-with-system-packages| |image-fedora-33-minimal-with-targets-pre| |image-fedora-33-minimal-with-targets| |image-fedora-33-minimal-with-targets-optional| - - |codespace-fedora-33-minimal| - * -    ‑*standard* - - |image-fedora-33-standard-with-system-packages| |image-fedora-33-standard-with-targets-pre| |image-fedora-33-standard-with-targets| |image-fedora-33-standard-with-targets-optional| - - |codespace-fedora-33-standard| - * -    ‑*maximal* - - |image-fedora-33-maximal-with-system-packages| |image-fedora-33-maximal-with-targets-pre| - - - * - **fedora**-34 + * - **linuxmint**-22    ‑*minimal* - - |image-fedora-34-minimal-with-system-packages| |image-fedora-34-minimal-with-targets-pre| |image-fedora-34-minimal-with-targets| |image-fedora-34-minimal-with-targets-optional| - - |codespace-fedora-34-minimal| + - |image-linuxmint-22-minimal-with-system-packages| |image-linuxmint-22-minimal-with-targets-pre| |image-linuxmint-22-minimal-with-targets| |image-linuxmint-22-minimal-with-targets-optional| + - |codespace-linuxmint-22-minimal| * -    ‑*standard* - - |image-fedora-34-standard-with-system-packages| |image-fedora-34-standard-with-targets-pre| |image-fedora-34-standard-with-targets| |image-fedora-34-standard-with-targets-optional| - - |codespace-fedora-34-standard| + - |image-linuxmint-22-standard-with-system-packages| |image-linuxmint-22-standard-with-targets-pre| |image-linuxmint-22-standard-with-targets| |image-linuxmint-22-standard-with-targets-optional| + - |codespace-linuxmint-22-standard| * -    ‑*maximal* - - |image-fedora-34-maximal-with-system-packages| |image-fedora-34-maximal-with-targets-pre| + - |image-linuxmint-22-maximal-with-system-packages| |image-linuxmint-22-maximal-with-targets-pre| - - * - **fedora**-35 + * - **linuxmint**-22.1    ‑*minimal* - - |image-fedora-35-minimal-with-system-packages| |image-fedora-35-minimal-with-targets-pre| |image-fedora-35-minimal-with-targets| |image-fedora-35-minimal-with-targets-optional| - - |codespace-fedora-35-minimal| + - |image-linuxmint-22.1-minimal-with-system-packages| |image-linuxmint-22.1-minimal-with-targets-pre| |image-linuxmint-22.1-minimal-with-targets| |image-linuxmint-22.1-minimal-with-targets-optional| + - |codespace-linuxmint-22.1-minimal| * -    ‑*standard* - - |image-fedora-35-standard-with-system-packages| |image-fedora-35-standard-with-targets-pre| |image-fedora-35-standard-with-targets| |image-fedora-35-standard-with-targets-optional| - - |codespace-fedora-35-standard| + - |image-linuxmint-22.1-standard-with-system-packages| |image-linuxmint-22.1-standard-with-targets-pre| |image-linuxmint-22.1-standard-with-targets| |image-linuxmint-22.1-standard-with-targets-optional| + - |codespace-linuxmint-22.1-standard| * -    ‑*maximal* - - |image-fedora-35-maximal-with-system-packages| |image-fedora-35-maximal-with-targets-pre| + - |image-linuxmint-22.1-maximal-with-system-packages| |image-linuxmint-22.1-maximal-with-targets-pre| - * - **fedora**-36 @@ -2822,44 +1891,3 @@ * -    ‑*maximal* - |image-opensuse-tumbleweed-python3.10-maximal-with-system-packages| |image-opensuse-tumbleweed-python3.10-maximal-with-targets-pre| - - * - **opensuse**-tumbleweed - -    ‑*minimal* - - |image-opensuse-tumbleweed-minimal-with-system-packages| |image-opensuse-tumbleweed-minimal-with-targets-pre| |image-opensuse-tumbleweed-minimal-with-targets| |image-opensuse-tumbleweed-minimal-with-targets-optional| - - |codespace-opensuse-tumbleweed-minimal| - * -    ‑*standard* - - |image-opensuse-tumbleweed-standard-with-system-packages| |image-opensuse-tumbleweed-standard-with-targets-pre| |image-opensuse-tumbleweed-standard-with-targets| |image-opensuse-tumbleweed-standard-with-targets-optional| - - |codespace-opensuse-tumbleweed-standard| - * -    ‑*maximal* - - |image-opensuse-tumbleweed-maximal-with-system-packages| |image-opensuse-tumbleweed-maximal-with-targets-pre| - - - * - **conda**-forge-python3.11 - -    ‑*standard* - - |image-conda-forge-python3.11-standard-with-system-packages| |image-conda-forge-python3.11-standard-with-targets-pre| |image-conda-forge-python3.11-standard-with-targets| |image-conda-forge-python3.11-standard-with-targets-optional| - - |codespace-conda-forge-python3.11-standard| - * -    ‑*maximal* - - |image-conda-forge-python3.11-maximal-with-system-packages| |image-conda-forge-python3.11-maximal-with-targets-pre| - - - * - **ubuntu**-bionic-gcc_8-i386 - -    ‑*minimal* - - |image-ubuntu-bionic-gcc_8-i386-minimal-with-system-packages| |image-ubuntu-bionic-gcc_8-i386-minimal-with-targets-pre| |image-ubuntu-bionic-gcc_8-i386-minimal-with-targets| |image-ubuntu-bionic-gcc_8-i386-minimal-with-targets-optional| - - |codespace-ubuntu-bionic-gcc_8-i386-minimal| - * -    ‑*standard* - - |image-ubuntu-bionic-gcc_8-i386-standard-with-system-packages| |image-ubuntu-bionic-gcc_8-i386-standard-with-targets-pre| |image-ubuntu-bionic-gcc_8-i386-standard-with-targets| |image-ubuntu-bionic-gcc_8-i386-standard-with-targets-optional| - - |codespace-ubuntu-bionic-gcc_8-i386-standard| - * -    ‑*maximal* - - |image-ubuntu-bionic-gcc_8-i386-maximal-with-system-packages| |image-ubuntu-bionic-gcc_8-i386-maximal-with-targets-pre| - - - * - **debian**-bullseye-i386 - -    ‑*minimal* - - |image-debian-bullseye-i386-minimal-with-system-packages| |image-debian-bullseye-i386-minimal-with-targets-pre| |image-debian-bullseye-i386-minimal-with-targets| |image-debian-bullseye-i386-minimal-with-targets-optional| - - |codespace-debian-bullseye-i386-minimal| - * -    ‑*standard* - - |image-debian-bullseye-i386-standard-with-system-packages| |image-debian-bullseye-i386-standard-with-targets-pre| |image-debian-bullseye-i386-standard-with-targets| |image-debian-bullseye-i386-standard-with-targets-optional| - - |codespace-debian-bullseye-i386-standard| - * -    ‑*maximal* - - |image-debian-bullseye-i386-maximal-with-system-packages| |image-debian-bullseye-i386-maximal-with-targets-pre| - - diff --git a/src/doc/en/developer/portability_testing.rst b/src/doc/en/developer/portability_testing.rst index 0f8d9e4b30f..dcc195c60da 100644 --- a/src/doc/en/developer/portability_testing.rst +++ b/src/doc/en/developer/portability_testing.rst @@ -18,36 +18,37 @@ machines, it is crucial to test changes to Sage, in particular when external packages are added or upgraded, on a wide spectrum of platforms. +- Individual PR, upon creation and update, automatically goes through "checks" + implemented by `GitHub Actions `_ + to identify errors early and ensure code quality. In particular, Build & Test + workflows perform an incremental build of Sage on the PR branch and run + doctests on a selection of major platforms including Ubuntu, macOS, and + Conda. -Testing PRs with GitHub Actions -=============================== + For PRs making changes to external packages, the Docker-based testing workflow + `CI Linux incremental `_ + checks the PR branch on an array of Linux platforms. -`GitHub Actions `_ are automatically -and constantly testing GitHub PRs to identify errors early and ensure code -quality. In particular, Build & Test workflows perform an incremental build of -Sage and run doctests on a selection of major platforms including Ubuntu, -macOS, and Conda. +- Before a new release, the release manager runs a fleet of `buildbots + `_ to make it sure that Sage builds correctly on + all of our supported platforms. +- After a new release, our Docker-based testing workflows `CI Linux `_ + and `CI macOS `_ + perform extensive testing on a multitude of platforms. -Sage buildbots -============== +- Sage developers and users are encouraged to test releases that are announced + on `Sage Release `_ on + their machines and to report the results (successes and failures) by + responding to the announcements. -Before a new release, the release manager runs a fleet of `buildbots -`_ to make it sure that Sage builds correctly on all -of our supported platforms. +In the rest, we focus on our Docker-based testing framework that developers can +use to test Sage and fix portability issues for platforms other than their own +machines. -Test reports on sage-release -============================ - -Sage developers and users are encouraged to test releases that are announced on -`Sage Release `_ on their -machines and to report the results (successes and failures) by responding to the -announcements. - - -Testing on multiple platforms using Docker -========================================== +Docker-based testing +==================== `Docker `_ is a popular virtualization software, running Linux operating system images ("Docker images") in @@ -475,7 +476,7 @@ directory into it. This copying is subject to the exclusions in the ``.gitignore`` file (via a symbolic link from ``.dockerignore``). Therefore, only the sources are copied, but not your configuration (such as the file ``config.status``), nor the ``$SAGE_LOCAL`` tree, -nor any other build artefacts. +nor any other build artifacts. Because of this, you can build a Docker image using the generated ``Dockerfile`` from your main Sage development tree. It does not have @@ -829,7 +830,7 @@ keep the source tree clean to the extent possible. In particular: This makes it possible for advanced users to test several ``local`` tox environments (such as ``local-direct``) out of one worktree. However, because a -build still writes configuration scripts and build artefacts (such as +build still writes configuration scripts and build artifacts (such as ``config.status``) into the worktree, only one ``local`` build can run at a time in a given worktree. @@ -992,21 +993,19 @@ options:: Automatic testing on multiple platforms on GitHub Actions ========================================================= -The Sage source tree includes a default configuration for GitHub -Actions that runs our portability tests on a multitude of platforms on -every push of a tag (but not of a branch) to a repository for which -GitHub Actions are enabled. - -In particular, it automatically runs on our main repository sagemath/sage -on every release tag. +The Sage source tree includes a configuration (a suite of scripts) for GitHub +Actions that runs portability tests on a multitude of platforms +using the Docker-based testing framework described above, on every push of a +tag (but not of a branch) to a repository for which GitHub Actions are enabled. +In particular, it runs on our main repository sagemath/sage on every release +tag. This is defined in the files -- :sage_root:`.github/workflows/ci-linux.yml` - (which calls :sage_root:`.github/workflows/docker.yml`) and - -- :sage_root:`.github/workflows/ci-macos.yml` - (which calls :sage_root:`.github/workflows/macos.yml`). +- :sage_root:`.github/workflows/ci-linux.yml` CI Linux workflow +- :sage_root:`.github/workflows/docker.yml` called by CI Linux workflow +- :sage_root:`.github/workflows/ci-macos.yml` CI macOS workflow +- :sage_root:`.github/workflows/macos.yml` called by CI macOS workflow GitHub Actions runs these build jobs on 2-core machines with 7 GB of RAM memory and 14 GB of SSD disk space, cf. @@ -1015,13 +1014,27 @@ and has a time limit of 6h per job. This could be just barely enough for a typical ``minimal`` build followed by ``make ptest`` to succeed; for added robustness, we split it into two jobs. Our workflow stores Docker images corresponding to various build phases within these two -jobs on `GitHub Packages `_ (ghcr.io). +jobs on `GitHub Packages `_ (ghcr.io). Build logs can be inspected during the run and become available as "artifacts" when all jobs of the workflow have finished. Each job generates one tarball. "Annotations" highlight certain top-level errors or warnings issued during the build. +.. NOTE:: + + The list of the default platforms tested by the CI Linux workflow is in the + item ``tox_system_factors`` of the file + :sage_root:`.github/workflows/docker.yml`. However, do not modify the list + directly. Instead use the command :: + + $ tox -e update_docker_platforms + + to update the list (and this documentation accordingly) from the "Master list + of platforms tested in CI Linux" (search for ``DEFAULT_SYSTEM_FACTORS``) in + :sage_root:`tox.ini`, which dictates how to create testing environments for + all platforms and build modes. + In addition to these automatic runs in our main repository, all Sage developers can run the same tests on GitHub Actions in their personal forks of the Sage repository. To prepare this, `enable GitHub Actions `_ @@ -1039,8 +1052,8 @@ of system configurations. - Push your branch to ``origin`` (your fork). -- Go to the Actions tab of your fork and select the workflow you would like to run, - for example "CI Linux". +- Go to the Actions tab of your fork and select the workflow "CI Linux" + or "CI macOS". - Click on "Run workflow" above the list of workflow runs and select your branch as the branch on which the workflow will run. @@ -1048,8 +1061,8 @@ of system configurations. For more information, see the `GitHub documentation `_. -Alternatively, you can trigger a run of tests by creating and pushing -a custom tag as follows. +Alternatively, you can trigger CI workflows at the same time by creating and +pushing a custom tag as follows. - Create a ("lightweight", not "annotated") tag with an arbitrary name, say ``ci`` (for "Continuous Integration"):: @@ -1060,10 +1073,17 @@ a custom tag as follows. git push -f origin ci -(In both commands, the "force" option (``-f``) allows overwriting a -previous tag of that name.) +In both commands, the "force" option (``-f``) allows overwriting a +previous tag of that name. + +The `workflow for Linux portability CI +`_ is convenient +when you are fixing issues for specific Linux platforms. The "Run workflow" +button allows you to precisely select the platforms and the build targets +tailored for the issues you are tackling. This is for advanced developers, who +read the workflow script :sage_root:`.github/workflows/docker.yml` in detail. -Either way, when the workflow has been triggered, you can inspect it +When any CI workflow has been triggered, you can inspect it by using the workflow status page in the "Actions" tab of your repository. @@ -1074,9 +1094,28 @@ pane if ``make build doc-html`` finished without error. (It also runs package testsuites and the Sage doctests but failures in these are not reflected in the left pane; see below.) -The right pane ("Artifacts") offers archives of the logs for download. +Clicking an item in the left pane opens a log viewer on the right. The most +important item in the log viewer is the step "Configure and build Sage ...", +where you see full logs generated from the workflow. If the job failed, these +logs show at what point in the build process the failure occurred. + +.. NOTE:: + + The massive volume of logs would look overwhelming at first sight. Here are + some guides: -Scrolling down in the right pane shows "Annotations": + - ``► ...``: These are commands executed by the workflow :sage_root:`.github/workflows/docker.yml`. + - ``docker-...:``: These are commands executed by Tox :sage_root:`tox.ini`. + - ``#xx ...`` where ``xx`` is a number: These show the commands executed by + Docker building Sage with the Dockerfile generated by + :sage_root:`.ci/write-dockerfile.sh`. + - Other lines are output from the commands executed by the workflow, Tox, + or Docker. The majority of these will likely be the output from the Sage + build process. + +The "Artifacts" pane on the right offers archives of the logs for download. + +The "Annotations" pane on the right shows errors, warnings or notices: * Red "check failure" annotations appear for each log file that contains a build error. For example, you might see:: @@ -1104,6 +1143,8 @@ Clicking on the annotations does not take you to a very useful place. To view details, click on one of the items in the pane. This changes the right pane to a log viewer. + + The ``docker`` workflows automatically push images to ``ghcr.io``. You find them in the Packages tab of your GitHub repository. @@ -1136,7 +1177,7 @@ Our portability CI on GitHub Actions builds `Docker images `_ for all tested Linux platforms (and system package configurations) and makes them available on `GitHub Packages -`_ (ghcr.io). +`_ (ghcr.io). This makes it easy for developers to debug problems that showed up in the build logs for a given platform. @@ -1173,20 +1214,17 @@ Also `smaller images corresponding to earlier build stages `_ are available: -* ``-with-system-packages`` provides a system installation with - system packages installed, no source tree, +* ``-with-system-packages`` provides a system installation with system packages + installed, no source tree, -* ``-configured`` contains a partial source tree - (:envvar:`SAGE_ROOT`) and has completed the bootstrapping phase and - the run of the ``configure`` script, +* ``-configured`` contains the source tree (:envvar:`SAGE_ROOT`) and has + completed the bootstrapping phase and the run of the ``configure`` script, -* ``-with-targets-pre`` contains a partial source tree - (:envvar:`SAGE_ROOT`) and a full installation - of all non-Python packages (:envvar:`SAGE_LOCAL`), +* ``-with-targets-pre`` contains the source tree and a full installation of all + non-Python packages (:envvar:`SAGE_LOCAL`), -* ``-with-targets`` contains the full source tree and a full - installation of Sage, including the HTML documentation, but ``make - ptest`` has not been run yet. +* ``-with-targets`` contains the source tree and a full installation of Sage, + including the HTML documentation, but ``make ptest`` has not been run yet. .. only:: html diff --git a/subprojects/factory b/subprojects/factory deleted file mode 160000 index 769668a07b8..00000000000 --- a/subprojects/factory +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 769668a07b8110213dc5d8113ad24dd096439d4c diff --git a/tox.ini b/tox.ini index bb3840cb3ed..b56e23a7f0a 100644 --- a/tox.ini +++ b/tox.ini @@ -55,12 +55,14 @@ envlist = ### - standard # Install all known system packages equivalent to standard packages that have spkg-configure.m4 ### - maximal # Install all known system packages equivalent to standard/optional packages that have spkg-configure.m4 - docker-ubuntu-trusty-toolchain-gcc_9-minimal, - docker-debian-bullseye-standard, - docker-fedora-34-standard, - docker-archlinux-latest-maximal, - docker-manylinux-2_24-i686-standard, - docker-conda-forge-standard, + ### Example "docker" environments: + ### + ### docker-ubuntu-trusty-toolchain-gcc_9-minimal + ### docker-debian-bullseye-standard + ### docker-fedora-34-standard + ### docker-archlinux-latest-maximal + ### docker-manylinux-2_24-i686-standard + ### docker-conda-forge-standard ### "local" targets should be run from a source tree that is freshly checked out ### (for example, by 'git worktree add ...') or has been cleaned by 'make bdist-clean' -- @@ -110,10 +112,16 @@ envlist = # # $ tox -e local-direct -- openblas + ### + ### Delegation to src/tox.ini + ### + ### This works through build/make/Makefile(.in). Find "recursive tox invocation" there. + # + # $ tox -e sagelib-tox-sagepython-constraints_pkgs-norequirements + # + # Recursively, this runs tox -e sagepython-constraints_pkgs-norequirements in build/pkgs/sagelib/src/ + # with build/pkgs/sagelib/src/tox.ini - ##### - ##### Delegation to src/tox.ini - ##### # included with (cd src && tox -p auto): # @@ -190,14 +198,15 @@ setenv = # For -maximal environments, the default is 'yes' but later we override it for rolling distributions # (but not for unstable distributions that often have intermittent issues). IGNORE_MISSING_SYSTEM_PACKAGES=no - maximal: IGNORE_MISSING_SYSTEM_PACKAGES=yes - # What system packages should be installed. Default: All standard packages with spkg-configure. + # What system packages should be installed. + # Default: all standard packages with spkg-configure SAGE_PACKAGE_LIST_ARGS=--has-file=spkg-configure.m4 :standard: recommended: EXTRA_SAGE_PACKAGES_3=_recommended $(head -n 1 build/pkgs/_recommended/dependencies) - incremental: EXTRA_SAGE_PACKAGES_4=git develop: EXTRA_SAGE_PACKAGES_4=_develop $(head -n 1 build/pkgs/_develop/dependencies) - minimal: SAGE_PACKAGE_LIST_ARGS=_prereq - maximal: SAGE_PACKAGE_LIST_ARGS=:standard: :optional: + minimal: SAGE_PACKAGE_LIST_ARGS=--has-file=spkg-configure.m4 _prereq + standard: SAGE_PACKAGE_LIST_ARGS=--has-file=spkg-configure.m4 _prereq :standard: + maximal: SAGE_PACKAGE_LIST_ARGS=--has-file=spkg-configure.m4 _prereq :standard: :optional: + maximal: IGNORE_MISSING_SYSTEM_PACKAGES=yes sitepackages: ENABLE_SYSTEM_SITE_PACKAGES=yes sitepackages: CONFIG_CONFIGURE_ARGS_SITEPACKAGES=--enable-system-site-packages conda-environment: SAGE_PACKAGE_LIST_ARGS=_prereq @@ -213,6 +222,7 @@ setenv = # default tag is "latest" # docker: BASE_TAG=latest + docker: EXTRA_SAGE_PACKAGES_4=git # # https://hub.docker.com/_/ubuntu?tab=description # as of 2024-02, latest=jammy=22.04, rolling=mantic=23.10, devel=noble=24.04 @@ -235,8 +245,6 @@ setenv = ubuntu-focal: BASE_TAG=focal ubuntu-focal: IGNORE_MISSING_SYSTEM_PACKAGES=yes ubuntu-jammy: BASE_TAG=jammy - ubuntu-lunar: BASE_TAG=lunar - ubuntu-mantic: BASE_TAG=mantic ubuntu-noble: BASE_TAG=noble ubuntu-noble: IGNORE_MISSING_SYSTEM_PACKAGES=yes # @@ -264,12 +272,6 @@ setenv = # linuxmint: SYSTEM=debian linuxmint: IGNORE_MISSING_SYSTEM_PACKAGES=yes - linuxmint-17: BASE_IMAGE=linuxmintd/mint17 - linuxmint-18: BASE_IMAGE=linuxmintd/mint18 - linuxmint-19: BASE_IMAGE=linuxmintd/mint19 - linuxmint-19.1: BASE_IMAGE=linuxmintd/mint19.1 - linuxmint-19.2: BASE_IMAGE=linuxmintd/mint19.2 - linuxmint-19.3: BASE_IMAGE=linuxmintd/mint19.3 linuxmint-20: BASE_IMAGE=linuxmintd/mint20 linuxmint-20.1: BASE_IMAGE=linuxmintd/mint20.1 linuxmint-20.2: BASE_IMAGE=linuxmintd/mint20.2 @@ -278,6 +280,8 @@ setenv = linuxmint-21.1: BASE_IMAGE=linuxmintd/mint21.1 linuxmint-21.2: BASE_IMAGE=linuxmintd/mint21.2 linuxmint-21.3: BASE_IMAGE=linuxmintd/mint21.3 + linuxmint-22: BASE_IMAGE=linuxmintd/mint22 + linuxmint-22.1: BASE_IMAGE=linuxmintd/mint22.1 # # https://hub.docker.com/_/fedora # as of 2024-08, latest=40, rawhide=41 @@ -303,11 +307,11 @@ setenv = # # https://hub.docker.com/r/scientificlinux/sl # - scientificlinux: SYSTEM=fedora - scientificlinux: BASE_IMAGE=scientificlinux/sl + scientificlinux: SYSTEM=fedora + scientificlinux: BASE_IMAGE=scientificlinux/sl scientificlinux: IGNORE_MISSING_SYSTEM_PACKAGES=yes - scientificlinux-6: BASE_TAG=6 - scientificlinux-7: BASE_TAG=7 + scientificlinux-6: BASE_TAG=6 + scientificlinux-7: BASE_TAG=7 # # https://hub.docker.com/_/centos # https://quay.io/repository/centos/centos?tab=tags @@ -345,6 +349,7 @@ setenv = archlinux: SYSTEM=arch archlinux: BASE_IMAGE=archlinux archlinux: IGNORE_MISSING_SYSTEM_PACKAGES=yes + archlinux-latest: BASE_TAG=latest # # https://hub.docker.com/r/vbatts/slackware # @@ -506,7 +511,7 @@ setenv = docker-incremental-{develop,recommended,maximal}: SKIP_SYSTEM_PKG_INSTALL=yes docker-incremental-sitepackages: SKIP_SYSTEM_PKG_INSTALL=no # - docker-nobootstrap: BOOTSTRAP=./bootstrap -D + docker-nobootstrap: BOOTSTRAP=./bootstrap -D docker: CONFIG_CONFIGURE_ARGS_ROOT=--enable-build-as-root ### ### "local" envs @@ -514,7 +519,7 @@ setenv = local: SHARED_CACHE_DIR={toxworkdir}/Caches local: SETENV=: local: SETENV_CONFIGURE=: - local-nobootstrap: BOOTSTRAP=: + local-nobootstrap: BOOTSTRAP=: local-!direct: PATH=/usr/bin:/bin:/usr/sbin:/sbin local-sudo: __SUDO=--sudo local-root: CONFIG_CONFIGURE_ARGS_ROOT=--enable-build-as-root @@ -708,7 +713,8 @@ allowlist_externals = docker: docker homebrew: brew -#commands_pre = +# commands_pre = + commands = # @@ -758,7 +764,9 @@ commands = # Install a symbolic link "prefix" in SAGE_ROOT for convenient inspection; it is not used in the build. local: bash -c 'if [ ! -d prefix -o -L prefix ]; then rm -f prefix; ln -sf {env:PREFIX:{envdir}/local} prefix; fi' -##commands = + # + # docker + # docker: bash -c 'BUILD_TAG={env:DOCKER_TAG:$(git describe --dirty --always)} .ci/write-dockerfile.sh {env:SYSTEM} "{env:SAGE_PACKAGE_LIST_ARGS:}" {env:WITH_SYSTEM_SPKG} {env:IGNORE_MISSING_SYSTEM_PACKAGES} "{env:ALL_EXTRA_SAGE_PACKAGES}" > {envdir}/Dockerfile' # From https://hub.docker.com/r/multiarch/ubuntu-core/ # configure binfmt-support on the Docker host (works locally or remotely, i.e: using boot2docker) @@ -770,13 +778,15 @@ commands = docker: BUILD_TAG={env:DOCKER_TAG:$(git describe --dirty --always)}; \ docker: TAG_ARGS=$(for tag in $BUILD_TAG {env:EXTRA_DOCKER_TAGS:}; do echo --tag $BUILD_IMAGE:$tag; done); \ docker: DOCKER_BUILDKIT={env:DOCKER_BUILDKIT:1}; \ - docker: docker build . -f {envdir}/Dockerfile \ + docker: git worktree add source-tree; \ + docker: docker build source-tree -f {envdir}/Dockerfile \ docker: --target $docker_target \ docker: $TAG_ARGS \ docker: --build-arg TARGETS_PRE="$(if test -n "$TARGETS_PRE"; then echo $TARGETS_PRE; else echo {posargs:all-sage-local}; fi)" \ docker: --build-arg TARGETS="{posargs:build}" \ docker: --build-arg TARGETS_OPTIONAL="{env:TARGETS_OPTIONAL:ptest}" \ docker: {env:EXTRA_DOCKER_BUILD_ARGS:}; status=$?; \ + docker: git worktree remove source-tree; \ docker: unset CONTAINER; \ docker: if [ $status != 0 ]; then \ docker: if [ $DOCKER_BUILDKIT = 0 ]; then \ @@ -852,20 +862,20 @@ setenv = # # Master list of platforms tested in CI Linux # + # if you modify this list, be sure to run "tox -e update_docker_platforms" + # and commit the changes using Git + # DEFAULT_SYSTEM_FACTORS=\ - ubuntu-{xenial-toolchain-gcc_9,bionic-gcc_8,focal,jammy,lunar,mantic,noble} \ + ubuntu-{focal,jammy,noble} \ debian-{bullseye,bookworm,trixie,sid} \ - linuxmint-{20.1,20.2,20.3,21,21.1,21.2,21.3} \ - fedora-{30,31,32,33,34,35,36,37,38,39,40,41} \ + linuxmint-{21,21.1,21.2,21.3,22,22.1} \ + fedora-{36,37,38,39,40,41} \ centos-stream-{9,9-python3.12} \ almalinux-{8-python3.9,9-python3.11} \ gentoo-python{3.10,3.11,3.12} \ archlinux-latest \ opensuse-15.5-gcc_11-python3.11 \ - opensuse-tumbleweed{-python3.10,} \ - conda-forge-python3.11 \ - ubuntu-bionic-gcc_8-i386 \ - debian-bullseye-i386 + opensuse-tumbleweed-python3.10 # # Container badges for the developer guide #