diff --git a/.ci/write-dockerfile.sh b/.ci/write-dockerfile.sh index 7a3512dafd9..5356b86ebfb 100755 --- a/.ci/write-dockerfile.sh +++ b/.ci/write-dockerfile.sh @@ -349,14 +349,9 @@ ENV SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,! $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; \\ + rm -rf /sage/src; \\ + mv src /sage/src; \\ + cd /sage && ./bootstrap && ./config.status; \\ cd /sage && rm -rf .git; rm -rf /new || echo "(error ignored)" 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/ci-linux-incremental.yml b/.github/workflows/ci-linux-incremental.yml index 8606e7a4ca5..4ddc3e10d59 100644 --- a/.github/workflows/ci-linux-incremental.yml +++ b/.github/workflows/ci-linux-incremental.yml @@ -1,6 +1,6 @@ name: CI Linux incremental -## This GitHub Actions workflow runs SAGE_ROOT/tox.ini with select environments, +## This GitHub Actions workflow runs SAGE_ROOT/tox.ini with selected environments, ## whenever a GitHub pull request is opened or synchronized in a repository ## where GitHub Actions are enabled. ## @@ -99,56 +99,9 @@ jobs: "debian-bullseye", "debian-bookworm", "fedora-30", - "fedora-40", - "gentoo-python3.11", - "debian-bullseye-i386"] + "fedora-40",] tox_packages_factors: >- ["standard", "minimal"] docker_push_repository: ghcr.io/${{ github.repository }}/ max_parallel: 8 - - constraints_pkgs-norequirements: - needs: [changed_files] - uses: ./.github/workflows/docker.yml - with: - # Build incrementally from published Docker image - incremental: true - free_disk_space: true - from_docker_repository: ghcr.io/sagemath/sage/ - from_docker_target: "with-targets-pre" - from_docker_tag: "dev" - docker_targets: "with-targets-pre" - targets_pre: "${{needs.changed_files.outputs.build_targets}} all-sage-local python3-ensure tox-ensure sagelib-tox-sagepython-constraints_pkgs-norequirements" - tox_system_factors: >- - ["ubuntu-focal", - "ubuntu-noble", - "debian-bookworm", - "fedora-40", - "debian-bullseye-i386"] - tox_packages_factors: >- - ["standard"] - docker_push_repository: ghcr.io/${{ github.repository }}/ - max_parallel: 16 - - site: - needs: [changed_files] - uses: ./.github/workflows/docker.yml - with: - # Build incrementally from published Docker image - incremental: true - free_disk_space: true - from_docker_repository: ghcr.io/sagemath/sage/ - from_docker_target: "with-targets" - from_docker_tag: "dev" - docker_targets: "with-targets" - targets: "${{needs.changed_files.outputs.build_targets}} doc-html ptest-nodoc" - # Only test systems with a usable system python (>= 3.9) - # with only a small number of test failures as of 10.2.rc0 - tox_system_factors: >- - ["gentoo-python3.11", - "archlinux-latest", - "fedora-40"] - tox_packages_factors: >- - ["standard-sitepackages"] - docker_push_repository: ghcr.io/${{ github.repository }}/ diff --git a/.github/workflows/ci-linux.yml b/.github/workflows/ci-linux.yml index 1bf8862b4f4..11c3af041c5 100644 --- a/.github/workflows/ci-linux.yml +++ b/.github/workflows/ci-linux.yml @@ -1,8 +1,7 @@ name: CI Linux -## This GitHub Actions workflow runs SAGE_ROOT/tox.ini with select environments, -## whenever a GitHub pull request is opened or synchronized in a repository -## where GitHub Actions are enabled. +## This GitHub Actions workflow runs SAGE_ROOT/tox.ini with selected environments, +## whenever a tag is pushed. ## ## It builds and checks some sage spkgs as defined in TARGETS. ## @@ -33,29 +32,7 @@ permissions: packages: write jobs: - - # standard (without ptest) for the default platform (used by build.yml etc.) - default: - uses: ./.github/workflows/docker.yml - with: - # Build from scratch - free_disk_space: true - docker_targets: "with-system-packages configured with-targets-pre with-targets" - # FIXME: duplicated from env.TARGETS - targets_pre: all-sage-local - targets: build doc-html - targets_optional: ptest - tox_system_factors: >- - ["ubuntu-jammy"] - tox_packages_factors: >- - ["standard"] - docker_push_repository: ghcr.io/${{ github.repository }}/ - logs_artifact: false - - # All platforms. This duplicates the default platform, but why not, - # it makes it more robust regarding random timeouts. - - standard: + minimal: if: ${{ success() || failure() }} uses: ./.github/workflows/docker.yml with: @@ -66,124 +43,21 @@ jobs: targets_pre: all-sage-local targets: build doc-html targets_optional: ptest + tox_system_factors: >- + ["ubuntu-jammy"] tox_packages_factors: >- - ["standard"] + ["minimal"] docker_push_repository: ghcr.io/${{ github.repository }}/ - # Make sure that all "standard" jobs can start simultaneously, - # so that runners are available by the time that "default" starts. - max_parallel: 50 - - standard-constraints_pkgs-norequirements: - if: ${{ success() || failure() }} - 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() }} - needs: [standard] + standard: uses: ./.github/workflows/docker.yml with: - # Build incrementally from previous stage (pre) - incremental: true free_disk_space: true - from_docker_repository: ghcr.io/${{ github.repository }}/ - from_docker_target: "with-targets-pre" - docker_targets: "with-targets with-targets-optional" - # FIXME: duplicated from env.TARGETS - targets: build doc-html - targets_optional: ptest - tox_packages_factors: >- - ["standard-sitepackages"] - # Only test systems with a usable system python (>= 3.9) - tox_system_factors: >- - ["ubuntu-jammy", - "ubuntu-lunar", - "ubuntu-mantic", - "debian-bookworm", - "debian-trixie", - "debian-sid", - "linuxmint-21.1", - "linuxmint-21.2", - "fedora-40", - "centos-stream-9-python3.9", - "almalinux-8-python3.9", - "gentoo-python3.10", - "gentoo-python3.11", - "archlinux-latest", - "opensuse-15.5-gcc_11-python3.11", - "opensuse-tumbleweed-python3.10", - "opensuse-tumbleweed"] - docker_push_repository: ghcr.io/${{ github.repository }}/ - max_parallel: 8 - - minimal: - if: ${{ success() || failure() }} - uses: ./.github/workflows/docker.yml - with: # Build from scratch - free_disk_space: true docker_targets: "with-system-packages configured with-targets-pre with-targets with-targets-optional" - # FIXME: duplicated from env.TARGETS targets_pre: all-sage-local targets: build doc-html targets_optional: ptest tox_packages_factors: >- - ["minimal"] - docker_push_repository: ghcr.io/${{ github.repository }}/ - # Reduced from 30 because it may run in parallel with 'standard' and 'standard-sitepackages' above. - # Calibrated for clogging the job pipeline until the "default" job has finished. - max_parallel: 24 - - maximal-pre: - if: ${{ success() || failure() }} - needs: [minimal] - uses: ./.github/workflows/docker.yml - with: - free_disk_space: true - # Build from scratch - docker_targets: "with-system-packages configured with-targets-pre" - # FIXME: duplicated from env.TARGETS - targets_pre: all-sage-local - tox_packages_factors: >- - ["maximal"] + ["standard"] docker_push_repository: ghcr.io/${{ github.repository }}/ - - optional: - if: ${{ success() || failure() }} - needs: [maximal-pre] - uses: ./.github/workflows/docker.yml - with: - incremental: true - free_disk_space: true - from_docker_repository: ghcr.io/${{ github.repository }}/ - from_docker_target: "with-targets-pre" - tox_packages_factors: >- - ["maximal"] - docker_targets: "with-targets-optional" - # We remove packages starting with _, in particular package _develop - targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :optional: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep -v ^_))' - - experimental: - if: ${{ success() || failure() }} - needs: [optional] - uses: ./.github/workflows/docker.yml - with: - incremental: true - free_disk_space: true - from_docker_repository: ghcr.io/${{ github.repository }}/ - from_docker_target: "with-targets-pre" - tox_packages_factors: >- - ["maximal"] - docker_targets: "with-targets-optional" - targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :experimental: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc))' diff --git a/.github/workflows/ci-macos.yml b/.github/workflows/ci-macos.yml index c62d259c286..5d9a92de3b2 100644 --- a/.github/workflows/ci-macos.yml +++ b/.github/workflows/ci-macos.yml @@ -99,61 +99,3 @@ jobs: with: path: "dist/*.tar.gz" name: dist - - local-macos-nohomebrew: - - needs: [dist] - - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - max-parallel: 4 - matrix: - os: [ macos-12, macos-13, macos-14 ] - tox_system_factor: [macos-nobootstrap] - tox_packages_factor: [minimal] - xcode_version_factor: [default] - env: - TOX_ENV: local-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }} - LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-local-${{ matrix.tox_system_factor }}-${{ matrix.tox_packages_factor }}-xcode_${{ matrix.xcode_version_factor }} - steps: - - uses: actions/checkout@v4 - if: "!contains(matrix.tox_system_factor, 'nobootstrap')" - - uses: actions/download-artifact@v4 - with: - path: . - name: dist - if: contains(matrix.tox_system_factor, 'nobootstrap') - - name: Unpack sage dist - run: | - tar xf sage*.tar.gz --strip-components=1 - if: contains(matrix.tox_system_factor, 'nobootstrap') - - name: Move homebrew away - run: | - (cd $(brew --prefix) && for a in bin etc include lib opt sbin share; do sudo mv $a $a-moved; done) - - name: Select Xcode version - run: | - if [ ${{ matrix.xcode_version_factor }} != default ]; then sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode_version_factor }}.app; fi - - name: Install test prerequisites - run: | - sudo /usr/bin/python3 -m pip install tox - - name: Build and test with tox - # We use a high parallelization on purpose in order to catch possible parallelization bugs in the build scripts. - # For doctesting, we use a lower parallelization to avoid timeouts. - run: | - (sleep 20000; pkill make) & - MAKE="make -j12" tox -e $TOX_ENV -- SAGE_NUM_THREADS=6 $TARGETS - - name: Prepare logs artifact - run: | - mkdir -p "artifacts/$LOGS_ARTIFACT_NAME"; cp -r .tox/*/log "artifacts/$LOGS_ARTIFACT_NAME" - if: always() - - uses: actions/upload-artifact@v4 - with: - path: artifacts - name: ${{ env.LOGS_ARTIFACT_NAME }} - if: always() - - name: Print out logs for immediate inspection - # and markup the output with GitHub Actions logging commands - run: | - .github/workflows/scan-logs.sh "artifacts/$LOGS_ARTIFACT_NAME" - if: always() diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 96427164eae..a7d215bf1cd 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -19,49 +19,25 @@ on: default: >- [ "ubuntu-xenial-toolchain-gcc_9", - "ubuntu-bionic-gcc_8", "ubuntu-focal", "ubuntu-jammy", - "ubuntu-lunar", - "ubuntu-mantic", - "ubuntu-noble", "debian-bullseye", "debian-bookworm", - "debian-trixie", - "debian-sid", - "linuxmint-20.1", "linuxmint-20.2", "linuxmint-20.3", "linuxmint-21", "linuxmint-21.1", "linuxmint-21.2", "linuxmint-21.3", - "fedora-30", - "fedora-31", - "fedora-32", - "fedora-33", - "fedora-34", - "fedora-35", - "fedora-36", - "fedora-37", - "fedora-38", - "fedora-39", "fedora-40", "fedora-41", "centos-stream-9", "centos-stream-9-python3.12", - "almalinux-8-python3.9", "almalinux-9-python3.11", - "gentoo-python3.10", - "gentoo-python3.11", - "gentoo-python3.12", "archlinux-latest", "opensuse-15.5-gcc_11-python3.11", "opensuse-tumbleweed-python3.10", "opensuse-tumbleweed", - "conda-forge-python3.11", - "ubuntu-bionic-gcc_8-i386", - "debian-bullseye-i386", ] # 'tox -e update_docker_platforms' updates above tox_packages_factors: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 38c7feb9ad8..0346c699820 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -23,15 +23,9 @@ on: # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories description: 'Stringified JSON object' default: >- - [["12", "", "homebrew-macos-usrlocal-minimal"], - ["12", "", "homebrew-macos-usrlocal-standard"], - ["12", "", "homebrew-macos-usrlocal-python3_xcode-standard"], - ["12", "", "homebrew-macos-usrlocal-maximal"], - ["13", "xcode_15.0", "homebrew-macos-usrlocal-standard"], + [ ["latest", "", "homebrew-macos-opthomebrew-standard"], - ["13", "", "conda-forge-macos-minimal"], - ["13", "", "conda-forge-macos-standard"], - ["latest", "", "conda-forge-macos-standard"]] + ] type: string extra_sage_packages: description: 'Extra Sage packages to install as system packages' diff --git a/src/doc/en/developer/github.rst b/src/doc/en/developer/github.rst index 306454407fb..2ce4da07fc4 100644 --- a/src/doc/en/developer/github.rst +++ b/src/doc/en/developer/github.rst @@ -462,7 +462,7 @@ Actions. test. Details are again available by clicking on the check. The automatic workflow runs on a container based on - ``ubuntu-focal-standard``. To request a run of the workflow on a different + ``ubuntu``. To request a run of the workflow on a different platform, you can issue a `workflow dispatch `_. You can select any of the platforms for which a `prebuilt container image diff --git a/src/doc/en/developer/portability_testing.rst b/src/doc/en/developer/portability_testing.rst index 0f8d9e4b30f..21e10a87e8d 100644 --- a/src/doc/en/developer/portability_testing.rst +++ b/src/doc/en/developer/portability_testing.rst @@ -1139,7 +1139,8 @@ makes them available on `GitHub Packages `_ (ghcr.io). This makes it easy for developers to debug problems that showed up in -the build logs for a given platform. +the build logs for a given platform. These images are not intended for production +deployment. The image version corresponding to the latest development release receives the additional Docker tag ``dev``, see for example the Docker @@ -1188,6 +1189,9 @@ are available: installation of Sage, including the HTML documentation, but ``make ptest`` has not been run yet. +Note that some of these images are outdated due to build errors. +Moreover, standard and minimal images are discontinued. + .. only:: html .. include:: portability_platform_table.rst