Skip to content

fix(pymeshfix): build cp310/cp311 wheels, not just cp312-abi3 - #3222

Merged
luhenry merged 1 commit into
mainfrom
fix-pymeshfix-interpreter-matrix
Oct 15, 2026
Merged

luhenry merged 1 commit into
mainfrom
fix-pymeshfix-interpreter-matrix

Conversation

@luhenry

@luhenry luhenry commented Oct 14, 2026 •

Copy link
Copy Markdown
Member

Package: pymeshfix (already published, PR #2551)

Bug: CIBW_BUILD was "cp312-* cp313-* cp314-*", which collapses every one of those glob entries into the same single forward-compatible cp312-abi3 wheel (confirmed: our registry hosts exactly one file, pymeshfix-0.18.1-cp312-abi3-manylinux_2_39_riscv64.whl). That silently dropped the cp310 and cp311 wheels that upstream's own [tool.cibuildwheel] build matrix actually produces (build = "cp310-* cp311-* cp312-*" # 3.12+ are abi3 wheels), so pymeshfix has never had an installable wheel on riscv64 for Python 3.10/3.11.

Why it matters now: PR #3081 (tetgen) builds and tests on cp310 per upstream's own matrix, and upstream's own test-requires pulls in pymeshfix for that test. On cp310 there is no compatible pymeshfix wheel in the index, so pip install ... pymeshfix fails with Could not find a version that satisfies the requirement pymeshfix (from versions: none) — not a registry-staleness issue, a genuine gap in this port's build matrix.

Fix: match upstream's matrix exactly (cp310-* cp311-* cp312-*), and generalize the post-build sanity check and artifact/publish naming since a single build job now produces more than one wheel file instead of one.

Differs from upstream: nothing beyond the riscv64 image (same as the original port).

Next step after merge: trigger workflow_dispatch on main with version: 0.18.1 to rebuild and publish the missing cp310/cp311 wheels for the already-declared 0.18.1 release (per update_doc.py's documented rebuild path: tag/files get replaced under a new immutable release tag).

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.

luhenry commented Oct 14, 2026

Copy link
Copy Markdown
Member Author

Same mechanic as #3221/#3223/#3224/#3225: check_commit_messages (job 115848278446) failed on check_no_ai_attribution against the pull_request "opened" webhook's frozen body snapshot, captured before create_pull_request's auto-injected "Generated by Claude Code" footer was stripped via update_pull_request. The live PR body has been clean since right after creation.

pr-checks.yml already triggers on edited for exactly this case; that run (fired by the strip) is queued behind the backlog and should pass once it executes. No fix to push — watching for it to clear.


Generated by Claude Code

@luhenry
luhenry merged commit 463d092 into main Oct 15, 2026
8 of 9 checks passed
@luhenry
luhenry deleted the fix-pymeshfix-interpreter-matrix branch October 15, 2026 13:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant