From 10df9747a5b762d70bdd65896faf71781f0a9fbf Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 20 Aug 2025 07:28:38 +0800 Subject: [PATCH 1/3] Revert Azure iOS runners to macos-14. --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 29dcf60b4..accd67eed 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -32,7 +32,7 @@ jobs: pythonVersion: "3.11" testSelect: "native" ios_311: - imageName: "macos-latest" + imageName: "macos-14" # See https://github.com/actions/runner-images/issues/12777 pythonVersion: "3.11" testSelect: "ios" android_macos_311: From 7d8de407e5f6da9ac55ffce93c3353534bd6cde5 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 20 Aug 2025 07:29:31 +0800 Subject: [PATCH 2/3] Add warning about known macos-15 issues on Github Actions and Azure. --- README.md | 8 +++++--- docs/platforms.md | 5 ++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d96b01523..46576749a 100644 --- a/README.md +++ b/README.md @@ -58,8 +58,8 @@ Usage | | Linux | macOS | Windows | Linux ARM | macOS ARM | Windows ARM | Android | iOS | |-----------------|-------|-------|---------|-----------|-----------|-------------|---------|-----| -| GitHub Actions | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² | ✅⁴ | ✅³ | -| Azure Pipelines | ✅ | ✅ | ✅ | | ✅ | ✅² | ✅⁴ | ✅³ | +| GitHub Actions | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² | ✅⁴ | ✅³⁵ | +| Azure Pipelines | ✅ | ✅ | ✅ | | ✅ | ✅² | ✅⁴ | ✅³⁵ | | Travis CI | ✅ | | ✅ | ✅ | | | ✅⁴ | | | CircleCI | ✅ | ✅ | | ✅ | ✅ | | ✅⁴ | ✅³ | | Gitlab CI | ✅ | ✅ | ✅ | ✅¹ | ✅ | | ✅⁴ | ✅³ | @@ -67,8 +67,10 @@ Usage ¹ [Requires emulation](https://cibuildwheel.pypa.io/en/stable/faq/#emulation), distributed separately. Other services may also support Linux ARM through emulation or third-party build hosts, but these are not tested in our CI.
² [Uses cross-compilation](https://cibuildwheel.pypa.io/en/stable/faq/#windows-arm64). It is not possible to test `arm64` on this CI platform.
-³ Requires a macOS runner; runs tests on the simulator for the runner's architecture.
+³ Requires a macOS runner; runs tests on the simulator for the runner's architecture.
⁴ Building for Android requires the runner to be Linux x86_64, macOS ARM64 or macOS x86_64. Testing has [additional requirements](https://cibuildwheel.pypa.io/en/stable/platforms/#android).
+⁵ The `macos-15` and `macos-latest` images are [incompatible with cibuildwheel at this time](platforms/#ios-system-requirements)
+ Example setup diff --git a/docs/platforms.md b/docs/platforms.md index fb67c7b38..a298d98c2 100644 --- a/docs/platforms.md +++ b/docs/platforms.md @@ -253,12 +253,15 @@ to one of the following URLs: ## iOS {: #ios} -### System requirements +### System requirements {: #ios-system-requirements} You must be building on a macOS machine, with Xcode installed. The Xcode installation must have an iOS SDK available, with all license agreements agreed to by the user. To check if an iOS SDK is available, open the Xcode settings panel, and check the Platforms tab. This will also ensure that license agreements have been acknowledged. Building iOS wheels also requires a working macOS Python installation. See the notes on [macOS builds](#macos) for details about configuration of the macOS environment. +!!! note + If you are running cibuildwheel on GitHub Actions or Azure runners, you should avoid the `macos-15` and `macos-latest` images. The [20250811 image update](https://github.com/actions/runner-images/releases/tag/macos-15-arm64%2F20250811.2170) made some [significant changes](https://github.com/actions/runner-images/issues/12541) that are [incompatible with CPython's iOS test runner](https://github.com/actions/runner-images/issues/12777). At this time, Microsoft's advice is to use the `macos-14` image instead. + ### Specifying an iOS build iOS is effectively 2 platforms - physical devices, and simulators. While the API for these two platforms are identical, the ABI is not compatible, even when dealing with a device and simulator with the same CPU architecture. For this reason, the architecture specification for iOS builds includes *both* the CPU architecture *and* the ABI that is being targeted. There are three possible values for architecture on iOS; the values match those used by `sys.implementation._multiarch` when running on iOS (with hyphens replaced with underscores, matching wheel filename normalization): From e333a6d9cb383d6f0c79b81aef43d197f1da7193 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 20 Aug 2025 07:30:24 +0800 Subject: [PATCH 3/3] Update workflow reference with actual ticket. --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ad392a07d..3338dbb91 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -76,7 +76,7 @@ jobs: - os: macos-13 python_version: '3.13' test_select: ios - - os: macos-14 # 20250811 macos-15 update caused havoc with iOS simulators + - os: macos-14 # See https://github.com/actions/runner-images/issues/12777 python_version: '3.13' test_select: ios - os: macos-13