diff --git a/.ci/merge-fixes.sh b/.ci/merge-fixes.sh new file mode 100755 index 00000000000..1fb8267df0e --- /dev/null +++ b/.ci/merge-fixes.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# Merge open PRs from sagemath/sage labeled "blocker". +REPO="sagemath/sage" +GH="gh -R $REPO" +PRs="$($GH pr list --label "p: blocker / 1" --json number --jq '.[].number')" +if [ -z "$PRs" ]; then + echo 'Nothing to do: Found no open PRs with "blocker" status.' +else + echo "Found PRs: " $PRs + export GIT_AUTHOR_NAME="ci-sage workflow" + export GIT_AUTHOR_EMAIL="ci-sage@example.com" + export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME" + export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL" + git tag -f test_base + git commit -q -m "Uncommitted changes" --no-allow-empty -a + for a in $PRs; do + echo "::group::Merging PR https://github.com/$REPO/pull/$a" + git tag -f test_head + $GH pr checkout -b pr-$a $a + git fetch --unshallow --all + git checkout -q test_head + if git merge --no-edit --squash -q pr-$a; then + echo "::endgroup::" + if git commit -q -m "Merge https://github.com/$REPO/pull/$a" -a --no-allow-empty; then + echo "Merged #$a" + else + echo "Empty, skipped" + fi + else + echo "::endgroup::" + echo "Failure merging #$a, resetting" + git reset --hard + fi + done + git log test_base..HEAD +fi diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 547ba7f90fe..bbb3e687540 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,9 +24,30 @@ concurrency: cancel-in-progress: true jobs: + get_ci_fixes: + runs-on: ubuntu-latest + steps: + - name: Checkout + id: checkout + uses: actions/checkout@v4 + - name: Merge CI fixes from sagemath/sage + run: | + .ci/merge-fixes.sh + env: + GH_TOKEN: ${{ github.token }} + - name: Store CI fixes in upstream artifact + run: | + mkdir -p upstream + git format-patch --stdout test_base > upstream/ci_fixes.patch + - uses: actions/upload-artifact@v3 + with: + path: upstream + name: upstream + build: runs-on: ubuntu-latest container: ghcr.io/sagemath/sage/sage-${{ github.event.inputs.platform || 'ubuntu-focal-standard' }}-with-targets:${{ github.event.inputs.docker_tag || 'dev'}} + needs: [get_ci_fixes] steps: - name: Checkout id: checkout @@ -68,6 +89,19 @@ jobs: if [ ! -f worktree-image/.gitignore ]; then cp .gitignore worktree-image/; fi (cd worktree-image && git add -A && git commit --quiet --allow-empty -m "old" -a && git tag -f old && git reset --hard new && git reset --quiet old && git add -N . && git status) + - name: Download upstream artifact + uses: actions/download-artifact@v3 + with: + path: upstream + name: upstream + + - name: Apply CI fixes from sagemath/sage + # After applying the fixes, make sure all changes are marked as uncommitted changes. + run: | + if [ -r upstream/ci_fixes.patch ]; then + (cd worktree-image && git commit -q -m "current changes" --allow-empty -a && git am; git reset --quiet old; git add -N .) < upstream/ci_fixes.patch + fi + - name: Incremental build, test changed files (sage -t --new) id: incremental run: | diff --git a/.github/workflows/ci-conda.yml b/.github/workflows/ci-conda.yml index 14d38feff96..b0a95754cab 100644 --- a/.github/workflows/ci-conda.yml +++ b/.github/workflows/ci-conda.yml @@ -51,6 +51,12 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Merge CI fixes from sagemath/sage + run: | + .ci/merge-fixes.sh + env: + GH_TOKEN: ${{ github.token }} + - name: Check for Miniconda id: check_conda run: echo ::set-output name=installed::$CONDA diff --git a/.github/workflows/ci-macos.yml b/.github/workflows/ci-macos.yml index 3f49b4f8d96..9482eb9632b 100644 --- a/.github/workflows/ci-macos.yml +++ b/.github/workflows/ci-macos.yml @@ -30,89 +30,40 @@ env: TARGETS_OPTIONAL: ptest jobs: - local-macos: + stage-1: + uses: ./.github/workflows/macos.yml + with: + stage: "1" - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - stage: ["1", "2", "2-optional-0-o", "2-optional-p-z", "2-experimental-0-o", "2-experimental-p-z"] - # python3_xcode is only accepted if enough packages are available from the system - # --> to test "minimal", we would need https://github.com/sagemath/sage/issues/30949 - tox_env: [homebrew-macos-usrlocal-minimal, homebrew-macos-usrlocal-standard, homebrew-macos-usrlocal-maximal, homebrew-macos-usrlocal-python3_xcode-standard, conda-forge-macos-minimal, conda-forge-macos-standard, conda-forge-macos-maximal] - xcode_version_factor: [default] - os: [ macos-11, macos-12 ] - env: - TOX_ENV: local-${{ matrix.tox_env }} - LOCAL_ARTIFACT_NAME: sage-local-commit-${{ github.sha }}-tox-local-${{ matrix.tox_env }}-${{ matrix.os }}-xcode_${{ matrix.xcode_version_factor }} - LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-local-${{ matrix.tox_env }}--${{ matrix.os }}-xcode_${{ matrix.xcode_version_factor }} - steps: - - uses: actions/checkout@v4 - - 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: | - brew install tox - - uses: actions/download-artifact@v3 - with: - path: sage-local-artifact - name: ${{ env.LOCAL_ARTIFACT_NAME }} - if: contains(matrix.stage, '2') - - name: Extract sage-local artifact - # This is macOS tar -- cannot use --listed-incremental - run: | - export SAGE_LOCAL=$(pwd)/.tox/$TOX_ENV/local - .github/workflows/extract-sage-local.sh sage-local-artifact/sage-local-*.tar - if: contains(matrix.stage, '2') - - 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: | - case "${{ matrix.stage }}" in - 1) export TARGETS_PRE="all-sage-local" TARGETS="all-sage-local" TARGETS_OPTIONAL="build/make/Makefile" - ;; - 2) export TARGETS_PRE="all-sage-local" TARGETS="build doc-html" TARGETS_OPTIONAL="ptest" - ;; - 2-optional*) export TARGETS_PRE="build/make/Makefile" TARGETS="build/make/Makefile" - targets_pattern="${{ matrix.stage }}" - targets_pattern="${targets_pattern#2-optional-}" - export 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 "^[$targets_pattern]" ) ) - ;; - 2-experimental*) export TARGETS_PRE="build/make/Makefile" TARGETS="build/make/Makefile" - targets_pattern="${{ matrix.stage }}" - targets_pattern="${targets_pattern#2-experimental-}" - export 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 | grep "^[$targets_pattern]" ) ) - ;; - esac - MAKE="make -j12" tox -e $TOX_ENV -- SAGE_NUM_THREADS=4 $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@v3 - 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() - - name: Prepare sage-local artifact - # This also includes the copies of homebrew or conda installed in the tox environment. - # We use absolute pathnames in the tar file. - # This is macOS tar -- cannot use --remove-files. - # We remove the $SAGE_LOCAL/lib64 link, which will be recreated by the next stage. - run: | - mkdir -p sage-local-artifact && (cd .tox/$TOX_ENV && rm -f "local/lib64" && tar -cf - $(pwd)) > sage-local-artifact/sage-${{ env.TOX_ENV }}-${{ matrix.stage }}.tar - if: contains(matrix.stage, '1') - - uses: actions/upload-artifact@v3 - with: - path: sage-local-artifact/sage-${{ env.TOX_ENV }}-${{ matrix.stage }}.tar - name: ${{ env.LOCAL_ARTIFACT_NAME }} - if: always() + stage-2: + uses: ./.github/workflows/macos.yml + with: + stage: "2" + needs: [stage-1] + + stage-2-optional-0-o: + uses: ./.github/workflows/macos.yml + with: + stage: "2-optional-0-o" + needs: [stage-2] + + stage-2-optional-p-z: + uses: ./.github/workflows/macos.yml + with: + stage: "2-optional-p-z" + needs: [stage-2-optional-0-o] + + stage-2-experimental-0-o: + uses: ./.github/workflows/macos.yml + with: + stage: "2-optional-0-o" + needs: [stage-2-optional-p-z] + + stage-2-experimental-p-z: + uses: ./.github/workflows/macos.yml + with: + stage: "2-experimental-p-z" + needs: [stage-2-experimental-0-o] dist: diff --git a/.github/workflows/doc-build-pdf.yml b/.github/workflows/doc-build-pdf.yml index 6728b140c8b..6eacba7fe52 100644 --- a/.github/workflows/doc-build-pdf.yml +++ b/.github/workflows/doc-build-pdf.yml @@ -21,6 +21,12 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Merge CI fixes from sagemath/sage + run: | + .ci/merge-fixes.sh + env: + GH_TOKEN: ${{ github.token }} + - name: Prepare run: | apt-get update && apt-get install -y zip diff --git a/.github/workflows/doc-build.yml b/.github/workflows/doc-build.yml index 3c7cd9a7091..6f8cb348d55 100644 --- a/.github/workflows/doc-build.yml +++ b/.github/workflows/doc-build.yml @@ -12,9 +12,30 @@ concurrency: cancel-in-progress: true jobs: + get_ci_fixes: + runs-on: ubuntu-latest + steps: + - name: Checkout + id: checkout + uses: actions/checkout@v4 + - name: Merge CI fixes from sagemath/sage + run: | + .ci/merge-fixes.sh + env: + GH_TOKEN: ${{ github.token }} + - name: Store CI fixes in upstream artifact + run: | + mkdir -p upstream + git format-patch --stdout test_base > upstream/ci_fixes.patch + - uses: actions/upload-artifact@v3 + with: + path: upstream + name: upstream + build-docs: runs-on: ubuntu-latest container: ghcr.io/sagemath/sage/sage-ubuntu-focal-standard-with-targets:dev + needs: [get_ci_fixes] steps: - name: Checkout uses: actions/checkout@v4 @@ -54,6 +75,19 @@ jobs: # Keep track of changes to built HTML new_version=$(cat src/VERSION.txt); (cd /sage/local/share/doc/sage/html/en && find . -name "*.html" | xargs sed -i '/class="sidebar-brand-text"/s/Sage [0-9a-z.]* /Sage '$new_version' /'; git init && (echo "*.svg binary"; echo "*.pdf binary") >> .gitattributes && (echo ".buildinfo"; echo '*.inv'; echo '.git*'; echo '*.svg'; echo '*.pdf'; echo '*.png'; echo 'searchindex.js') > .gitignore; git add -A && git commit --quiet -m "old") + - name: Download upstream artifact + uses: actions/download-artifact@v3 + with: + path: upstream + name: upstream + + - name: Apply CI fixes from sagemath/sage + # After applying the fixes, make sure all changes are marked as uncommitted changes. + run: | + if [ -r upstream/ci_fixes.patch ]; then + (cd worktree-image && git commit -q -m "current changes" --allow-empty -a && git am; git reset --quiet old; git add -N .) < upstream/ci_fixes.patch + fi + - name: Incremental build id: incremental run: | diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 12fac573272..db4896bbd12 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -179,6 +179,12 @@ jobs: (export PATH=$(pwd)/build/bin:$PATH; (cd upstream && bash -x update-pkgs.sh) && sed -i.bak '/upstream/d' .dockerignore && echo "/:toolchain:/i ADD upstream upstream" | sed -i.bak -f - build/bin/write-dockerfile.sh && git diff) if: inputs.upstream_artifact + - name: Merge CI fixes from sagemath/sage + run: | + .ci/merge-fixes.sh + env: + GH_TOKEN: ${{ github.token }} + - name: Try to login to ghcr.io if: inputs.docker_push_repository != '' # https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index c63f371b268..b4eebb4ac9e 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -14,6 +14,11 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Merge CI fixes from sagemath/sage + run: | + .ci/merge-fixes.sh + env: + GH_TOKEN: ${{ github.token }} - name: Set up Python uses: actions/setup-python@v4 with: @@ -28,6 +33,11 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Merge CI fixes from sagemath/sage + run: | + .ci/merge-fixes.sh + env: + GH_TOKEN: ${{ github.token }} - name: Set up Python uses: actions/setup-python@v4 with: @@ -42,6 +52,11 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Merge CI fixes from sagemath/sage + run: | + .ci/merge-fixes.sh + env: + GH_TOKEN: ${{ github.token }} - name: Set up Python uses: actions/setup-python@v4 with: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 00000000000..5b448cec1bb --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,159 @@ +name: Reusable workflow for macOS portability CI + +on: + workflow_call: + inputs: + # Either specify a stage + stage: + required: false + type: string + # Or specify targets + targets_pre: + default: build/make/Makefile + type: string + targets: + default: build/make/Makefile + type: string + targets_optional: + default: build/make/Makefile + type: string + # System configuration + osversion_xcodeversion_toxenv_tuples: + description: 'Stringified JSON object' + default: >- + [["latest", "", "homebrew-macos-usrlocal-minimal"], + ["latest", "", "homebrew-macos-usrlocal-standard"], + ["11", "xcode_11.7", "homebrew-macos-usrlocal-standard"], + ["12", "", "homebrew-macos-usrlocal-standard"], + ["13", "xcode_15.0", "homebrew-macos-usrlocal-standard"], + ["latest", "", "homebrew-macos-usrlocal-maximal"], + ["latest", "", "homebrew-macos-usrlocal-python3_xcode-standard"], + ["latest", "", "conda-forge-macos-minimal"], + ["latest", "", "conda-forge-macos-standard"], + ["latest", "", "conda-forge-macos-maximal"]] + type: string + extra_sage_packages: + description: 'Extra Sage packages to install as system packages' + type: string + default: "" + max_parallel: + type: number + default: 10 + free_disk_space: + default: false + type: boolean + # + # For use in upstream CIs. + # + upstream_artifact: + required: false + type: string + sage_repo: + required: false + type: string + sage_ref: + required: false + type: string + +jobs: + local-macos: + + runs-on: macos-${{ matrix.osversion_xcodeversion_toxenv[0] }} + strategy: + fail-fast: false + max-parallel: ${{ inputs.max_parallel }} + matrix: + osversion_xcodeversion_toxenv: ${{ fromJson(inputs.osversion_xcodeversion_toxenv_tuples) }} + env: + TOX_ENV: local-${{ matrix.osversion_xcodeversion_toxenv[2] }}${{ matrix.osversion_xcodeversion_toxenv[1] && format('-{0}', matrix.osversion_xcodeversion_toxenv[1]) }} + LOCAL_ARTIFACT_NAME: sage-local-commit-${{ github.sha }}-tox-local-${{ matrix.osversion_xcodeversion_toxenv[2] }}-macos-${{ matrix.osversion_xcodeversion_toxenv[0] }}${{ matrix.osversion_xcodeversion_toxenv[1] && format('-{0}', matrix.osversion_xcodeversion_toxenv[1]) }} + LOGS_ARTIFACT_NAME: logs-commit-${{ github.sha }}-tox-local-${{ matrix.osversion_xcodeversion_toxenv[2] }}-macos-${{ matrix.osversion_xcodeversion_toxenv[0] }}${{ matrix.osversion_xcodeversion_toxenv[1] && format('-{0}', matrix.osversion_xcodeversion_toxenv[1]) }} + steps: + - name: Check out SageMath + uses: actions/checkout@v4 + with: + repository: ${{ inputs.sage_repo }} + ref: ${{ inputs.sage_ref }} + fetch-depth: 10000 + + - name: Install test prerequisites + run: | + brew install tox + - name: Download upstream artifact + uses: actions/download-artifact@v3 + with: + path: upstream + name: ${{ inputs.upstream_artifact }} + if: inputs.upstream_artifact + - name: Update Sage packages from upstream artifact + run: | + (export PATH=$(pwd)/build/bin:$PATH; (cd upstream && bash -x update-pkgs.sh) && git diff) + if: inputs.upstream_artifact + + - name: Merge CI fixes from sagemath/sage + run: | + .ci/merge-fixes.sh + env: + GH_TOKEN: ${{ github.token }} + + - uses: actions/download-artifact@v3 + with: + path: sage-local-artifact + name: ${{ env.LOCAL_ARTIFACT_NAME }} + if: contains(inputs.stage, '2') + - name: Extract sage-local artifact + # This is macOS tar -- cannot use --listed-incremental + run: | + export SAGE_LOCAL=$(pwd)/.tox/$TOX_ENV/local + .github/workflows/extract-sage-local.sh sage-local-artifact/sage-local-*.tar + if: contains(inputs.stage, '2') + - 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: | + case "${{ inputs.stage }}" in + 1) export TARGETS_PRE="all-sage-local" TARGETS="all-sage-local" TARGETS_OPTIONAL="build/make/Makefile" + ;; + 2) export TARGETS_PRE="all-sage-local" TARGETS="build doc-html" TARGETS_OPTIONAL="ptest" + ;; + 2-optional*) export TARGETS_PRE="build/make/Makefile" TARGETS="build/make/Makefile" + targets_pattern="${{ inputs.stage }}" + targets_pattern="${targets_pattern#2-optional-}" + export 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 "^[$targets_pattern]" ) ) + ;; + 2-experimental*) export TARGETS_PRE="build/make/Makefile" TARGETS="build/make/Makefile" + targets_pattern="${{ inputs.stage }}" + targets_pattern="${targets_pattern#2-experimental-}" + export 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 | grep "^[$targets_pattern]" ) ) + ;; + *) export TARGETS_PRE="${{ inputs.targets_pre }}" TARGETS="${{ inputs.targets }} TARGETS_OPTIONAL="${{ inputs.targets_optional }} + ;; + esac + MAKE="make -j12" tox -e $TOX_ENV -- SAGE_NUM_THREADS=4 $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@v3 + 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() + - name: Prepare sage-local artifact + # This also includes the copies of homebrew or conda installed in the tox environment. + # We use absolute pathnames in the tar file. + # This is macOS tar -- cannot use --remove-files. + # We remove the $SAGE_LOCAL/lib64 link, which will be recreated by the next stage. + run: | + mkdir -p sage-local-artifact && (cd .tox/$TOX_ENV && rm -f "local/lib64" && tar -cf - $(pwd)) > sage-local-artifact/sage-${{ env.TOX_ENV }}-${{ inputs.stage }}.tar + if: contains(inputs.stage, '1') + - uses: actions/upload-artifact@v3 + with: + path: sage-local-artifact/sage-${{ env.TOX_ENV }}-${{ inputs.stage }}.tar + name: ${{ env.LOCAL_ARTIFACT_NAME }} + if: always() diff --git a/build/pkgs/sagemath_coxeter3/distros/conda.txt b/build/pkgs/sagemath_coxeter3/distros/conda.txt deleted file mode 100644 index 3ffe2eb8bfc..00000000000 --- a/build/pkgs/sagemath_coxeter3/distros/conda.txt +++ /dev/null @@ -1 +0,0 @@ -sagemath-coxeter3 diff --git a/build/pkgs/sagemath_mcqd/distros/conda.txt b/build/pkgs/sagemath_mcqd/distros/conda.txt deleted file mode 100644 index 9504f7f4c76..00000000000 --- a/build/pkgs/sagemath_mcqd/distros/conda.txt +++ /dev/null @@ -1 +0,0 @@ -sagemath-mcqd diff --git a/build/pkgs/sagemath_meataxe/distros/conda.txt b/build/pkgs/sagemath_meataxe/distros/conda.txt deleted file mode 100644 index b3abc7692fe..00000000000 --- a/build/pkgs/sagemath_meataxe/distros/conda.txt +++ /dev/null @@ -1 +0,0 @@ -sagemath-meataxe diff --git a/build/pkgs/sagemath_tdlib/distros/conda.txt b/build/pkgs/sagemath_tdlib/distros/conda.txt deleted file mode 100644 index f890d1c9084..00000000000 --- a/build/pkgs/sagemath_tdlib/distros/conda.txt +++ /dev/null @@ -1 +0,0 @@ -sagemath-tdlib diff --git a/tox.ini b/tox.ini index 84bb05c351c..39a087c1062 100644 --- a/tox.ini +++ b/tox.ini @@ -227,6 +227,7 @@ setenv = # # https://hub.docker.com/_/debian # debian-bullseye does not have libgiac-dev + # debian-trixie does not have libbrial-dev # debian: SYSTEM=debian debian: BASE_IMAGE=debian @@ -239,6 +240,7 @@ setenv = debian-bullseye: IGNORE_MISSING_SYSTEM_PACKAGES=yes debian-bookworm: BASE_TAG=bookworm debian-trixie: BASE_TAG=trixie + debian-trixie: IGNORE_MISSING_SYSTEM_PACKAGES=yes debian-sid: BASE_TAG=sid # # https://hub.docker.com/u/linuxmintd @@ -599,6 +601,27 @@ setenv = macos-12.3: MACOSX_DEPLOYMENT_TARGET=12.3 macos-13.3: MACOS_SDK=/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk macos-13.3: MACOSX_DEPLOYMENT_TARGET=13.3 + macos-14.0: MACOS_SDK=/Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk + macos-14.0: MACOSX_DEPLOYMENT_TARGET=14.0 + # XCode versions, as installed on GH Actions runners + # only in https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md#xcode + xcode_11.7: XCODE_VERSION=11.7 + xcode_12.4: XCODE_VERSION=12.4 + xcode_12.5.1: XCODE_VERSION=12.5.1 + xcode_13.0: XCODE_VERSION=13.0 + # in above and also in https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md#xcode + xcode_13.1: XCODE_VERSION=13.1 + xcode_13.2.1: XCODE_VERSION=13.2.1 + # only in https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md#xcode + xcode_13.3.1: XCODE_VERSION=13.3.1 + xcode_13.4.1: XCODE_VERSION=13.4.1 + xcode_14.0.1: XCODE_VERSION=14.0.1 + # in avove and also in https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md#xcode + xcode_14.1: XCODE_VERSION=14.1 + xcode_14.2: XCODE_VERSION=14.2 + # only in https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md#xcode + xcode_14.3.1: XCODE_VERSION=14.3.1 + xcode_15.0: XCODE_VERSION=15.0 # # Resulting full configuration args, including EXTRA_CONFIGURE_ARGS from the user environment # @@ -627,6 +650,10 @@ commands = # local: bash -c 'if [ ! -d {env:HOME}/Library/Caches ]; then mkdir -p {env:SHARED_CACHE_DIR} && mkdir -p {env:HOME}/Library && ln -sf {toxworkdir}/Caches {env:HOME}/Library/; fi' # + # local-macos + # + local-macos: bash -c 'if [ -n "{env:XCODE_VERSION:}" ]; then sudo xcode-select -s /Applications/Xcode_{env:XCODE_VERSION:}.app; fi;' + # # local-homebrew # # https://docs.brew.sh/Installation