From d464d5cc17b7a516563157160b9f8aafe894e64b Mon Sep 17 00:00:00 2001 From: Kyle Barron Date: Thu, 15 Oct 2026 12:04:33 -0400 Subject: [PATCH] ci: Skip 3.14t wheels on 32-bit Linux rust-numpy 0.30, pulled in through pyo3-arrow by the pyo3 0.30 bump, refuses to compile free-threaded Python before 3.15 on 32-bit targets. This broke the armv7 (and would break the x86) Linux wheel builds for py-v0.12.0. Free-threaded Python 3.15+ on these targets is still covered by the abi3t-py315 wheels. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/wheels.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 54053251..567fd9e7 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -27,21 +27,29 @@ jobs: - runner: ubuntu-latest target: x86_64 manylinux: auto + extra-interpreters: ["3.14t", "pypy3.11"] - runner: ubuntu-latest target: x86 manylinux: auto + # No 3.14t: rust-numpy requires Python 3.15+ for free-threaded 32-bit builds + extra-interpreters: ["pypy3.11"] - runner: ubuntu-latest target: aarch64 manylinux: "2_24" + extra-interpreters: ["3.14t", "pypy3.11"] - runner: ubuntu-latest target: armv7 manylinux: auto + # No 3.14t: rust-numpy requires Python 3.15+ for free-threaded 32-bit builds + extra-interpreters: ["pypy3.11"] - runner: ubuntu-latest target: s390x manylinux: auto + extra-interpreters: ["3.14t", "pypy3.11"] - runner: ubuntu-latest target: ppc64le manylinux: auto + extra-interpreters: ["3.14t", "pypy3.11"] steps: - uses: actions/checkout@v7 @@ -74,7 +82,7 @@ jobs: uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} - args: --release --out dist -i 3.14t -i pypy3.11 --manifest-path obstore/Cargo.toml + args: --release --out dist -i ${{ join(matrix.platform.extra-interpreters, ' ') }} --manifest-path obstore/Cargo.toml sccache: "true" manylinux: ${{ matrix.platform.manylinux }} @@ -91,12 +99,18 @@ jobs: platform: - runner: ubuntu-latest target: x86_64 + extra-interpreters: ["3.14t", "pypy3.11"] - runner: ubuntu-latest target: x86 + # No 3.14t: rust-numpy requires Python 3.15+ for free-threaded 32-bit builds + extra-interpreters: ["pypy3.11"] - runner: ubuntu-latest target: aarch64 + extra-interpreters: ["3.14t", "pypy3.11"] - runner: ubuntu-latest target: armv7 + # No 3.14t: rust-numpy requires Python 3.15+ for free-threaded 32-bit builds + extra-interpreters: ["pypy3.11"] steps: - uses: actions/checkout@v7 @@ -129,7 +143,7 @@ jobs: uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} - args: --release --out dist -i 3.14t -i pypy3.11 --manifest-path obstore/Cargo.toml + args: --release --out dist -i ${{ join(matrix.platform.extra-interpreters, ' ') }} --manifest-path obstore/Cargo.toml sccache: "true" manylinux: musllinux_1_2