Fix 1875#1902
Merged
Merged
Conversation
…ssbario#1875) The aarch64 CPython 3.14 wheel in 26.6.x shipped the free-threaded ABI (cp314-cp314t-...aarch64.whl) in the GIL cp314 slot, so there was no GIL cp314 aarch64 wheel and those users fell back to the sdist. Root cause: an older uv resolved `cpython-3.14` to the free-threaded interpreter on the aarch64 manylinux container. Verified under QEMU aarch64 on asgard1 that current uv (0.11.26) resolves `cpython-3.14` -> GIL (Py_GIL_DISABLED=0) and `cpython-3.14t` -> free-threaded (Py_GIL_DISABLED=1), so the interpreter spec is already correct; a rebuild now yields the right cp314 wheel. To make it regression-proof (the wheel ABI tag is fixed by the building interpreter), add a `_check-venv-abi` guard invoked by `just build`: it asserts the interpreter's GIL/free-threaded status matches the env name (cpy314 -> GIL, cpy314t -> free-threaded, pypy skipped) and aborts on mismatch. Also add a reserved `cpy314t` -> `cpython-3.14t` spec for the future free-threaded wheel variant (Part 2, gated on an NVX free-threading assessment). Verified locally on x86_64: the guard passes for cpy314 (GIL) and cpy314t (free-threaded), skips pypy311, and rejects a free-threaded interpreter in a GIL slot. Note: the `_check-venv-abi` recipe exceeds the 10-line new-logic guideline in AI_POLICY.md and warrants explicit human review. Note: This work was completed with AI assistance (Claude Code).
…e gate) (crossbario#1875) Advance the .cicd (wamp-cicd) submodule f77ca2b -> f9a9a7e, which includes the exact CPython ABI-tag matching fix in the shared check-release-fileset action (wamp-cicd crossbario#11). This is the release-gate companion to the build-time _check-venv-abi guard: a cp314t wheel in a cp314 slot now fails both the build and the release fileset check. The action is consumed at @main, so the fix is already effective in CI; this pins the vendored .cicd tooling to match. Note: This work was completed with AI assistance (Claude Code).
…rossbario#1875) CI proved the real root cause: the ARM64 manylinux_2_28 image pre-installs both GIL (/opt/python/cp314-cp314) and free-threaded (/opt/python/cp314-cp314t) 3.14 and prepends both to PATH, with the free-threaded dir ahead of the GIL one. uv 0.11.26 then resolved `cpython-3.14` to the free-threaded interpreter (log: "Using CPython 3.14.6+freethreaded ... cp314-cp314t"), which the _check-venv-abi guard correctly caught (Py_GIL_DISABLED=1) and aborted the build. (My earlier QEMU/debian test missed this because bare debian has no system 3.14, so uv downloaded a managed GIL build.) Fix in the shared `create` recipe: for GIL envs, drop free-threaded `…t/bin` dirs from PATH before `uv venv`, so uv selects the GIL /opt/python interpreter (the reserved cpy314t env keeps them for building free-threaded wheels). No-op off manylinux (local builds download a managed GIL python as before). The build-time guard stays as defence-in-depth. Verified locally: the PATH filter strips cp314t/cp315t and keeps cp314 (GIL) against the exact failing CI PATH; `just create cpy314` still builds a GIL venv (Py_GIL_DISABLED=0) and passes the guard. Note: the create PATH filter and the guard exceed the 10-line new-logic guideline in AI_POLICY.md and warrant explicit human review. Note: This work was completed with AI assistance (Claude Code).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fixes #1875