From 02c2c4392d8d37bff8e2978434347e65f0eb6b38 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Wed, 14 Oct 2026 12:18:55 +0000 Subject: [PATCH] fix(pymeshfix): build cp310/cp311 wheels, not just cp312-abi3 CIBW_BUILD was "cp312-* cp313-* cp314-*", collapsing every interpreter into the single forward-compatible abi3 wheel and never producing the cp310/cp311 wheels upstream's own [tool.cibuildwheel] build matrix ("cp310-* cp311-* cp312-*") actually ships. Downstream consumers that test against pymeshfix on cp310/cp311 (e.g. tetgen) can't install it there since no compatible wheel is published for those interpreters. Matches upstream's matrix exactly; generalizes the post-build check and artifact naming since a build now produces more than one wheel. --- .github/workflows/build-pymeshfix.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-pymeshfix.yml b/.github/workflows/build-pymeshfix.yml index a47918ea445a..9e0219f85022 100644 --- a/.github/workflows/build-pymeshfix.yml +++ b/.github/workflows/build-pymeshfix.yml @@ -47,7 +47,7 @@ jobs: fail-fast: false matrix: version: ${{ fromJSON(needs.setup.outputs.versions) }} - name: Build pymeshfix ${{ matrix.version }} cp312-abi3-manylinux_riscv64 + name: Build pymeshfix ${{ matrix.version }} manylinux_riscv64 runs-on: ubuntu-24.04-riscv timeout-minutes: 120 env: @@ -66,9 +66,11 @@ jobs: with: output-dir: wheelhouse/ env: - # wheel.py-api = "cp312": built once on cp312, reused and tested on - # cp313/cp314 like upstream's test_abi3 job. Upstream ships no cp314t. - CIBW_BUILD: "cp312-* cp313-* cp314-*" + # Matches upstream's own [tool.cibuildwheel] build matrix exactly: + # cp310/cp311 each get a real per-version extension, cp312+ collapse + # into one forward-compatible cp312-abi3 wheel (upstream ships no + # cp313/cp314 glob entries - abi3 covers those interpreters already). + CIBW_BUILD: "cp310-* cp311-* cp312-*" CIBW_ARCHS: riscv64 CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} CIBW_ENVIRONMENT: PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ @@ -78,18 +80,16 @@ jobs: run: | python3 - wheelhouse/*.whl <<'EOF' import sys, zipfile - assert len(sys.argv) == 2, sys.argv[1:] - whl = sys.argv[1] - assert "-cp312-abi3-" in whl, whl - names = zipfile.ZipFile(whl).namelist() - assert "pymeshfix/_meshfix.abi3.so" in names, names - assert any(n.endswith(".dist-info/licenses/LICENSE") for n in names), names - print(whl, "ok") + for whl in sys.argv[1:]: + names = zipfile.ZipFile(whl).namelist() + assert any(n.endswith(".so") and "_meshfix" in n for n in names), (whl, names) + assert any(n.endswith(".dist-info/licenses/LICENSE") for n in names), (whl, names) + print(whl, "ok") EOF - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: - name: pymeshfix-${{ env.PYMESHFIX_VERSION }}-cp312-abi3-manylinux_riscv64 + name: pymeshfix-${{ env.PYMESHFIX_VERSION }}-manylinux_riscv64 path: wheelhouse/*.whl if-no-files-found: error @@ -108,4 +108,4 @@ jobs: secrets: app-private-key: ${{ secrets.RISEPROJECT_APP_PRIVATE_KEY }} with: - artifact-pattern: pymeshfix-${{ matrix.version }}-*-manylinux_riscv64 + artifact-pattern: pymeshfix-${{ matrix.version }}-manylinux_riscv64