diff --git a/.github/workflows/clear_self_hosted_persistent_caches.yaml b/.github/workflows/clear_self_hosted_persistent_caches.yaml index fb7fce9c7dd..50d69728c62 100644 --- a/.github/workflows/clear_self_hosted_persistent_caches.yaml +++ b/.github/workflows/clear_self_hosted_persistent_caches.yaml @@ -26,44 +26,6 @@ jobs: run: du -sh ~/.pex || true; rm -rf ~/.pex || true - name: df after run: df -h - clean_macos10_15_x86_64: - runs-on: - - self-hosted - - macOS-10.15-X64 - steps: - - name: df before - run: df -h - - name: Deleting ~/Library/Caches - run: du -sh ~/Library/Caches || true; rm -rf ~/Library/Caches || true - - name: Deleting ~/.cache - run: du -sh ~/.cache || true; rm -rf ~/.cache || true - - name: Deleting ~/.nce - run: du -sh ~/.nce || true; rm -rf ~/.nce || true - - name: Deleting ~/.rustup - run: du -sh ~/.rustup || true; rm -rf ~/.rustup || true - - name: Deleting ~/.pex - run: du -sh ~/.pex || true; rm -rf ~/.pex || true - - name: df after - run: df -h - clean_macos11_arm64: - runs-on: - - self-hosted - - macOS-11-ARM64 - steps: - - name: df before - run: df -h - - name: Deleting ~/Library/Caches - run: du -sh ~/Library/Caches || true; rm -rf ~/Library/Caches || true - - name: Deleting ~/.cache - run: du -sh ~/.cache || true; rm -rf ~/.cache || true - - name: Deleting ~/.nce - run: du -sh ~/.nce || true; rm -rf ~/.nce || true - - name: Deleting ~/.rustup - run: du -sh ~/.rustup || true; rm -rf ~/.rustup || true - - name: Deleting ~/.pex - run: du -sh ~/.pex || true; rm -rf ~/.pex || true - - name: df after - run: df -h name: Clear persistent caches on long-lived self-hosted runners 'on': workflow_dispatch: {} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d55a2d670c3..15a3d558e28 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -183,24 +183,39 @@ jobs: \ needs.release_info.outputs.release-asset-upload-url }}?name=$(basename $WHL)\"\ \ \\\n --data-binary \"@$WHL\";\n" timeout-minutes: 90 - build_wheels_macos10_15_x86_64: + build_wheels_macos13_x86_64: env: ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: false PANTS_REMOTE_CACHE_READ: 'false' PANTS_REMOTE_CACHE_WRITE: 'false' if: github.repository_owner == 'pantsbuild' - name: Build wheels (macOS10-15-x86_64) + name: Build wheels (macOS13-x86_64) needs: - release_info runs-on: - - self-hosted - - macOS-10.15-X64 + - macos-13 steps: - name: Check out code uses: actions/checkout@v4 with: fetch-depth: 10 ref: ${{ needs.release_info.outputs.build-ref }} + - name: Set up Python 3.7, 3.8, 3.9, 3.10, 3.12, 3.13, 3.11 + uses: actions/setup-python@v5 + with: + python-version: '3.7 + + 3.8 + + 3.9 + + 3.10 + + 3.12 + + 3.13 + + 3.11' - name: Install Protoc uses: arduino/setup-protoc@9b1ee5b22b0a3f1feb8c2ff99b32c89b3c3191e9 with: @@ -211,7 +226,7 @@ jobs: - name: Cache Rust toolchain uses: actions/cache@v4 with: - key: macOS10-15-x86_64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain') + key: macOS13-x86_64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain') }}-v2 path: '~/.rustup/toolchains/1.82.0-* @@ -248,7 +263,7 @@ jobs: name: Upload pants.log uses: actions/upload-artifact@v4 with: - name: logs-wheels-and-pex-macOS10-15-x86_64 + name: logs-wheels-and-pex-macOS13-x86_64 overwrite: 'true' path: .pants.d/workdir/*.log - if: needs.release_info.outputs.is-release == 'true' @@ -269,24 +284,35 @@ jobs: \ needs.release_info.outputs.release-asset-upload-url }}?name=$(basename $WHL)\"\ \ \\\n --data-binary \"@$WHL\";\n" timeout-minutes: 90 - build_wheels_macos11_arm64: + build_wheels_macos14_arm64: env: ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: false PANTS_REMOTE_CACHE_READ: 'false' PANTS_REMOTE_CACHE_WRITE: 'false' if: github.repository_owner == 'pantsbuild' - name: Build wheels (macOS11-ARM64) + name: Build wheels (macOS14-ARM64) needs: - release_info runs-on: - - self-hosted - - macOS-11-ARM64 + - macos-14 steps: - name: Check out code uses: actions/checkout@v4 with: fetch-depth: 10 ref: ${{ needs.release_info.outputs.build-ref }} + - name: Set up Python 3.9, 3.10, 3.12, 3.13, 3.11 + uses: actions/setup-python@v5 + with: + python-version: '3.9 + + 3.10 + + 3.12 + + 3.13 + + 3.11' - name: Install Protoc uses: arduino/setup-protoc@9b1ee5b22b0a3f1feb8c2ff99b32c89b3c3191e9 with: @@ -297,7 +323,7 @@ jobs: - name: Cache Rust toolchain uses: actions/cache@v4 with: - key: macOS11-ARM64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain') + key: macOS14-ARM64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain') }}-v2 path: '~/.rustup/toolchains/1.82.0-* @@ -334,7 +360,7 @@ jobs: name: Upload pants.log uses: actions/upload-artifact@v4 with: - name: logs-wheels-and-pex-macOS11-ARM64 + name: logs-wheels-and-pex-macOS14-ARM64 overwrite: 'true' path: .pants.d/workdir/*.log - if: needs.release_info.outputs.is-release == 'true' @@ -363,8 +389,8 @@ jobs: needs: - build_wheels_linux_x86_64 - build_wheels_linux_arm64 - - build_wheels_macos10_15_x86_64 - - build_wheels_macos11_arm64 + - build_wheels_macos13_x86_64 + - build_wheels_macos14_arm64 - release_info runs-on: ubuntu-latest steps: diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 8dbe8cc0e1f..8d472031ffb 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -218,16 +218,16 @@ jobs: ./cargo doc' timeout-minutes: 60 - bootstrap_pants_macos12_x86_64: + bootstrap_pants_macos13_x86_64: env: PANTS_REMOTE_CACHE_READ: 'false' PANTS_REMOTE_CACHE_WRITE: 'false' if: (github.repository_owner == 'pantsbuild') && (needs.classify_changes.outputs.docs_only != 'true') - name: Bootstrap Pants, test Rust (macOS12-x86_64) + name: Bootstrap Pants, test Rust (macOS13-x86_64) needs: - classify_changes runs-on: - - macos-12 + - macos-13 steps: - name: Check out code uses: actions/checkout@v4 @@ -259,7 +259,7 @@ jobs: - name: Cache Rust toolchain uses: actions/cache@v4 with: - key: macOS12-x86_64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain') }}-v2 + key: macOS13-x86_64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain') }}-v2 path: '~/.rustup/toolchains/1.82.0-* ~/.rustup/update-hashes @@ -280,7 +280,7 @@ jobs: - name: Cache native engine uses: actions/cache@v4 with: - key: macOS12-x86_64-engine-${{ steps.get-engine-hash.outputs.hash }}-v1 + key: macOS13-x86_64-engine-${{ steps.get-engine-hash.outputs.hash }}-v1 path: 'src/python/pants/bin/native_client src/python/pants/engine/internals/native_engine.so @@ -305,13 +305,13 @@ jobs: name: Upload pants.log uses: actions/upload-artifact@v4 with: - name: logs-bootstrap-macOS12-x86_64 + name: logs-bootstrap-macOS13-x86_64 overwrite: 'true' path: .pants.d/workdir/*.log - name: Upload native binaries uses: actions/upload-artifact@v4 with: - name: native_binaries.${{ matrix.python-version }}.macOS12-x86_64 + name: native_binaries.${{ matrix.python-version }}.macOS13-x86_64 path: 'src/python/pants/bin/native_client src/python/pants/engine/internals/native_engine.so @@ -461,7 +461,7 @@ jobs: overwrite: 'true' path: .pants.d/workdir/*.log timeout-minutes: 90 - build_wheels_macos10_15_x86_64: + build_wheels_macos13_x86_64: env: ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: false MODE: debug @@ -469,17 +469,32 @@ jobs: PANTS_REMOTE_CACHE_WRITE: 'false' if: ((github.repository_owner == 'pantsbuild') && (needs.classify_changes.outputs.release == 'true' || needs.classify_changes.outputs.ci_config == 'true')) && (needs.classify_changes.outputs.docs_only != 'true') - name: Build wheels (macOS10-15-x86_64) + name: Build wheels (macOS13-x86_64) needs: - classify_changes runs-on: - - self-hosted - - macOS-10.15-X64 + - macos-13 steps: - name: Check out code uses: actions/checkout@v4 with: fetch-depth: 10 + - name: Set up Python 3.7, 3.8, 3.9, 3.10, 3.12, 3.13, 3.11 + uses: actions/setup-python@v5 + with: + python-version: '3.7 + + 3.8 + + 3.9 + + 3.10 + + 3.12 + + 3.13 + + 3.11' - name: Install Protoc uses: arduino/setup-protoc@9b1ee5b22b0a3f1feb8c2ff99b32c89b3c3191e9 with: @@ -490,7 +505,7 @@ jobs: - name: Cache Rust toolchain uses: actions/cache@v4 with: - key: macOS10-15-x86_64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain') }}-v2 + key: macOS13-x86_64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain') }}-v2 path: '~/.rustup/toolchains/1.82.0-* ~/.rustup/update-hashes @@ -526,11 +541,11 @@ jobs: name: Upload pants.log uses: actions/upload-artifact@v4 with: - name: logs-wheels-and-pex-macOS10-15-x86_64 + name: logs-wheels-and-pex-macOS13-x86_64 overwrite: 'true' path: .pants.d/workdir/*.log timeout-minutes: 90 - build_wheels_macos11_arm64: + build_wheels_macos14_arm64: env: ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: false MODE: debug @@ -538,17 +553,28 @@ jobs: PANTS_REMOTE_CACHE_WRITE: 'false' if: ((github.repository_owner == 'pantsbuild') && (needs.classify_changes.outputs.release == 'true' || needs.classify_changes.outputs.ci_config == 'true')) && (needs.classify_changes.outputs.docs_only != 'true') - name: Build wheels (macOS11-ARM64) + name: Build wheels (macOS14-ARM64) needs: - classify_changes runs-on: - - self-hosted - - macOS-11-ARM64 + - macos-14 steps: - name: Check out code uses: actions/checkout@v4 with: fetch-depth: 10 + - name: Set up Python 3.9, 3.10, 3.12, 3.13, 3.11 + uses: actions/setup-python@v5 + with: + python-version: '3.9 + + 3.10 + + 3.12 + + 3.13 + + 3.11' - name: Install Protoc uses: arduino/setup-protoc@9b1ee5b22b0a3f1feb8c2ff99b32c89b3c3191e9 with: @@ -559,7 +585,7 @@ jobs: - name: Cache Rust toolchain uses: actions/cache@v4 with: - key: macOS11-ARM64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain') }}-v2 + key: macOS14-ARM64-rustup-${{ hashFiles('src/rust/engine/rust-toolchain') }}-v2 path: '~/.rustup/toolchains/1.82.0-* ~/.rustup/update-hashes @@ -595,7 +621,7 @@ jobs: name: Upload pants.log uses: actions/upload-artifact@v4 with: - name: logs-wheels-and-pex-macOS11-ARM64 + name: logs-wheels-and-pex-macOS14-ARM64 overwrite: 'true' path: .pants.d/workdir/*.log timeout-minutes: 90 @@ -732,11 +758,11 @@ jobs: - check_release_notes - bootstrap_pants_linux_arm64 - bootstrap_pants_linux_x86_64 - - bootstrap_pants_macos12_x86_64 + - bootstrap_pants_macos13_x86_64 - build_wheels_linux_arm64 - build_wheels_linux_x86_64 - - build_wheels_macos10_15_x86_64 - - build_wheels_macos11_arm64 + - build_wheels_macos13_x86_64 + - build_wheels_macos14_arm64 - check_release_notes - classify_changes - lint_python @@ -751,7 +777,7 @@ jobs: - test_python_linux_x86_64_7 - test_python_linux_x86_64_8 - test_python_linux_x86_64_9 - - test_python_macos12_x86_64 + - test_python_macos13_x86_64 outputs: merge_ok: ${{ steps.set_merge_ok.outputs.merge_ok }} runs-on: @@ -1839,16 +1865,16 @@ jobs: overwrite: 'true' path: .pants.d/workdir/*.log timeout-minutes: 90 - test_python_macos12_x86_64: + test_python_macos13_x86_64: env: ARCHFLAGS: -arch x86_64 if: (github.repository_owner == 'pantsbuild') && (needs.classify_changes.outputs.docs_only != 'true') - name: Test Python (macOS12-x86_64) + name: Test Python (macOS13-x86_64) needs: - - bootstrap_pants_macos12_x86_64 + - bootstrap_pants_macos13_x86_64 - classify_changes runs-on: - - macos-12 + - macos-13 steps: - name: Check out code uses: actions/checkout@v4 @@ -1859,6 +1885,10 @@ jobs: with: distribution: adopt java-version: '11' + - name: Install Go + uses: actions/setup-go@v5 + with: + go-version: 1.19.5 - name: Set up Python 3.7, 3.8, 3.9, 3.10, 3.12, 3.13, 3.11 uses: actions/setup-python@v5 with: @@ -1878,7 +1908,7 @@ jobs: - name: Download native binaries uses: actions/download-artifact@v4 with: - name: native_binaries.${{ matrix.python-version }}.macOS12-x86_64 + name: native_binaries.${{ matrix.python-version }}.macOS13-x86_64 path: src/python/pants - name: Make native-client runnable run: chmod +x src/python/pants/bin/native_client @@ -1892,7 +1922,7 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} if: always() name: Upload test reports - run: 'export S3_DST=s3://logs.pantsbuild.org/test/reports/macOS12-x86_64/$(git show --no-patch --format=%cd --date=format:%Y-%m-%d)/${GITHUB_REF_NAME//\//_}/${GITHUB_RUN_ID}/${GITHUB_RUN_ATTEMPT}/${GITHUB_JOB} + run: 'export S3_DST=s3://logs.pantsbuild.org/test/reports/macOS13-x86_64/$(git show --no-patch --format=%cd --date=format:%Y-%m-%d)/${GITHUB_REF_NAME//\//_}/${GITHUB_RUN_ID}/${GITHUB_RUN_ATTEMPT}/${GITHUB_JOB} echo "Uploading test reports to ${S3_DST}" @@ -1904,7 +1934,7 @@ jobs: name: Upload pants.log uses: actions/upload-artifact@v4 with: - name: logs-python-test-macOS12-x86_64 + name: logs-python-test-macOS13-x86_64 overwrite: 'true' path: .pants.d/workdir/*.log timeout-minutes: 90 diff --git a/docs/notes/2.25.x.md b/docs/notes/2.25.x.md index 196a5a73cee..edeb780a121 100644 --- a/docs/notes/2.25.x.md +++ b/docs/notes/2.25.x.md @@ -13,6 +13,8 @@ established for this purpose. This non-profit's only source of revenue is ### Deprecations +- **macOS versions**: Pants v2.25 is now built and tested on newer macOS versions: 13 (x86-64, previously 10.15) and macOS 14 (arm64, previously 11). The deprecation of the older versions were announced in Pants 2.23 and 2.24, and are driven by Apple's support schedule; they also help reduce cost for the volunteer-driven Pantsbuild organisation. Using Pants on older versions may or may not work. + ### General ### New Options System diff --git a/src/python/pants/base/exception_sink_test.py b/src/python/pants/base/exception_sink_test.py index 8ce58723768..12f2905767c 100644 --- a/src/python/pants/base/exception_sink_test.py +++ b/src/python/pants/base/exception_sink_test.py @@ -55,6 +55,7 @@ def test_set_invalid_log_location(): Platform.macos_x86_64: ( "The provided log location path at '/' is not writable or could not be created: " "[Errno 21] Is a directory: '/'.", + "Error opening fatal error log streams for log location '/': [Errno 30] Read-only file system", ), Platform.linux_arm64: ( "Error opening fatal error log streams for log location '/': [Errno 13] Permission " diff --git a/src/python/pants_release/generate_github_workflows.py b/src/python/pants_release/generate_github_workflows.py index 9363d689d57..5d97ea344f9 100644 --- a/src/python/pants_release/generate_github_workflows.py +++ b/src/python/pants_release/generate_github_workflows.py @@ -60,21 +60,30 @@ def action(name: str) -> str: class Platform(Enum): LINUX_X86_64 = "Linux-x86_64" LINUX_ARM64 = "Linux-ARM64" - MACOS10_15_X86_64 = "macOS10-15-x86_64" - # the oldest version of macOS supported by GitHub self-hosted runners - MACOS12_X86_64 = "macOS12-x86_64" - MACOS11_ARM64 = "macOS11-ARM64" + MACOS13_X86_64 = "macOS13-x86_64" + MACOS14_ARM64 = "macOS14-ARM64" -GITHUB_HOSTED = {Platform.LINUX_X86_64, Platform.MACOS12_X86_64} -SELF_HOSTED = {Platform.LINUX_ARM64, Platform.MACOS10_15_X86_64, Platform.MACOS11_ARM64} -# We control these runners, so we preinstall and expose python on them. -HAS_PYTHON = {Platform.LINUX_ARM64, Platform.MACOS10_15_X86_64, Platform.MACOS11_ARM64} -HAS_GO = {Platform.MACOS12_X86_64, Platform.MACOS10_15_X86_64, Platform.MACOS11_ARM64} +GITHUB_HOSTED = {Platform.LINUX_X86_64, Platform.MACOS13_X86_64, Platform.MACOS14_ARM64} +SELF_HOSTED = {Platform.LINUX_ARM64} CARGO_AUDIT_IGNORED_ADVISORY_IDS = ( "RUSTSEC-2020-0128", # returns a false positive on the cache crate, which is a local crate not a 3rd party crate ) +# We don't specify a patch version so that we get the latest, which comes pre-installed: +# https://github.com/actions/setup-python#available-versions-of-python +# NOTE: The last entry becomes the default +_BASE_PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.12", "3.13", "3.11"] + +PYTHON_VERSIONS_PER_PLATFORM = { + Platform.LINUX_X86_64: _BASE_PYTHON_VERSIONS, + Platform.MACOS13_X86_64: _BASE_PYTHON_VERSIONS, + # Python 3.7 or 3.8 aren't supported directly on arm64 macOS + Platform.MACOS14_ARM64: [v for v in _BASE_PYTHON_VERSIONS if v not in ("3.7", "3.8")], + # These runners have Python already installed + Platform.LINUX_ARM64: None, +} + def gha_expr(expr: str) -> str: """Properly quote GitHub Actions expressions. @@ -107,11 +116,6 @@ def hash_files(path: str) -> str: f"{NATIVE_FILES_COMMON_PREFIX}/engine/internals/native_engine.so.metadata", ] -# We don't specify a patch version so that we get the latest, which comes pre-installed: -# https://github.com/actions/setup-python#available-versions-of-python -# NOTE: The last entry becomes the default -PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.12", "3.13", "3.11"] - DONT_SKIP_RUST = "needs.classify_changes.outputs.rust == 'true'" DONT_SKIP_WHEELS = "needs.classify_changes.outputs.release == 'true' || needs.classify_changes.outputs.ci_config == 'true'" IS_PANTS_OWNER = "github.repository_owner == 'pantsbuild'" @@ -409,12 +413,10 @@ def runs_on(self) -> list[str]: # any platform-specific labels, so we don't run on future GH-hosted # platforms without realizing it. ret = ["self-hosted"] if self.platform in SELF_HOSTED else [] - if self.platform == Platform.MACOS12_X86_64: - ret += ["macos-12"] - elif self.platform == Platform.MACOS11_ARM64: - ret += ["macOS-11-ARM64"] - elif self.platform == Platform.MACOS10_15_X86_64: - ret += ["macOS-10.15-X64"] + if self.platform == Platform.MACOS13_X86_64: + ret += ["macos-13"] + elif self.platform == Platform.MACOS14_ARM64: + ret += ["macos-14"] elif self.platform == Platform.LINUX_X86_64: ret += ["ubuntu-22.04"] elif self.platform == Platform.LINUX_ARM64: @@ -430,11 +432,11 @@ def runs_on(self) -> list[str]: def platform_env(self): ret = {} - if self.platform in {Platform.MACOS10_15_X86_64, Platform.MACOS12_X86_64}: + if self.platform in {Platform.MACOS13_X86_64}: # Works around bad `-arch arm64` flag embedded in Xcode 12.x Python interpreters on # intel machines. See: https://github.com/giampaolo/psutil/issues/1832 ret["ARCHFLAGS"] = "-arch x86_64" - if self.platform == Platform.MACOS11_ARM64: + if self.platform in {Platform.MACOS14_ARM64}: ret["ARCHFLAGS"] = "-arch arm64" if self.platform == Platform.LINUX_X86_64: # Currently we run Linux x86_64 CI on GitHub Actions-hosted hardware, and @@ -447,10 +449,6 @@ def platform_env(self): return ret def wrap_cmd(self, cmd: str) -> str: - if self.platform == Platform.MACOS11_ARM64: - # The self-hosted M1 runner is an X86_64 binary that runs under Rosetta, - # so we have to explicitly change the arch for the subprocesses it spawns. - return f"arch -arm64 {cmd}" return cmd def native_binaries_upload(self) -> Step: @@ -536,8 +534,9 @@ def bootstrap_caches(self) -> Sequence[Step]: def setup_pythons(self) -> Sequence[Step]: ret = [] - if self.platform not in HAS_PYTHON: - ret.append(install_pythons(PYTHON_VERSIONS)) + versions = PYTHON_VERSIONS_PER_PLATFORM[self.platform] + if versions is not None: + ret.append(install_pythons(versions)) return ret def bootstrap_pants(self) -> Sequence[Step]: @@ -731,7 +730,7 @@ def test_jobs( *checkout(), *(launch_bazel_remote() if with_remote_caching else []), install_jdk(), - *([install_go()] if helper.platform not in HAS_GO else []), + install_go(), *( [download_apache_thrift()] if helper.platform == Platform.LINUX_X86_64 @@ -793,8 +792,8 @@ def linux_arm64_test_jobs() -> Jobs: return jobs -def macos12_x86_64_test_jobs() -> Jobs: - helper = Helper(Platform.MACOS12_X86_64) +def macos13_x86_64_test_jobs() -> Jobs: + helper = Helper(Platform.MACOS13_X86_64) jobs = { helper.job_name("bootstrap_pants"): bootstrap_jobs( helper, @@ -964,8 +963,8 @@ def build_wheels_jobs(*, for_deploy_ref: str | None = None, needs: list[str] | N return { **build_wheels_job(Platform.LINUX_X86_64, for_deploy_ref, needs), **build_wheels_job(Platform.LINUX_ARM64, for_deploy_ref, needs), - **build_wheels_job(Platform.MACOS10_15_X86_64, for_deploy_ref, needs), - **build_wheels_job(Platform.MACOS11_ARM64, for_deploy_ref, needs), + **build_wheels_job(Platform.MACOS13_X86_64, for_deploy_ref, needs), + **build_wheels_job(Platform.MACOS14_ARM64, for_deploy_ref, needs), } @@ -982,7 +981,7 @@ def test_workflow_jobs() -> Jobs: } jobs.update(**linux_x86_64_test_jobs()) jobs.update(**linux_arm64_test_jobs()) - jobs.update(**macos12_x86_64_test_jobs()) + jobs.update(**macos13_x86_64_test_jobs()) jobs.update(**build_wheels_jobs()) jobs.update( {