Files
pybind11/.github/workflows/tests-cibw.yml
Henry Schreiner 28b98f2d39 ci: update cibuildwheel to v4.1 and pyodide to 314 (#6095)
* ci: update cibuildwheel to v4.1 and pyodide to 314

Bump pypa/cibuildwheel from v3.4 to v4.1 across the Pyodide, iOS, and
Android jobs. Move the Pyodide build to cp314-pyodide_wasm32
(pyodide 314.0.0).

Drop the iOS CIBW_SKIP: cp314-* workaround now that pypa/cibuildwheel#2494
is resolved.

Assisted-by: ClaudeCode:claude-opus-4.8

* test: xfail array resize on numpy<2.4 + Python 3.14

Removing the cp314 iOS skip surfaced a pre-existing numpy bug, not a
cibuildwheel regression: numpy<2.4 has a resize(refcheck=True) regression
on Python 3.14 where the reference held by the bound function isn't
detected, so a resize that should raise instead succeeds and the later
reshape rejects the non-square size. Fixed in numpy>=2.4, but the iOS test
environment has no numpy wheel newer than 2.3.5.post1, so xfail the test
for that specific combination.

Assisted-by: ClaudeCode:claude-opus-4.8

* test: link numpy resize aliasing issue and trim comment

iOS numpy wheels updated to 2.5.0, so the xfail is a general numpy<2.4 +
Python 3.14 guard rather than iOS-specific. Reference numpy/numpy#30265.

Assisted-by: ClaudeCode:claude-opus-4.8
2026-07-08 23:31:36 -04:00

80 lines
1.8 KiB
YAML

name: CIBW
on:
# Run on Wednesday and Friday at 06:47 UTC.
schedule:
- cron: "47 6 * * 3,5"
workflow_dispatch:
pull_request:
branches:
- master
- stable
- v*
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-wasm-emscripten:
name: Pyodide wheel
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
submodules: true
fetch-depth: 0
- uses: pypa/cibuildwheel@v4.1
env:
PYODIDE_BUILD_EXPORTS: whole_archive
with:
package-dir: tests
only: cp314-pyodide_wasm32
build-ios:
name: iOS wheel ${{ matrix.runs-on }}
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: false
matrix:
runs-on: [macos-14, macos-15-intel]
steps:
- uses: actions/checkout@v7
with:
submodules: true
fetch-depth: 0
# We have to uninstall first because GH is now using a local tap to build cmake<4, iOS needs cmake>=4
- run: brew uninstall cmake && brew install cmake
- uses: pypa/cibuildwheel@v4.1
env:
CIBW_PLATFORM: ios
with:
package-dir: tests
build-android:
name: Android wheel ${{ matrix.runs-on }}
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: false
matrix:
runs-on: [macos-latest, macos-15-intel, ubuntu-latest]
steps:
- uses: actions/checkout@v7
with:
submodules: true
fetch-depth: 0
# GitHub Actions can't currently run the Android emulator on macOS.
- name: Skip Android tests on macOS
if: contains(matrix.runs-on, 'macos')
run: echo "CIBW_TEST_COMMAND=" >> "$GITHUB_ENV"
- uses: pypa/cibuildwheel@v4.1
env:
CIBW_PLATFORM: android
with:
package-dir: tests