Conversation
Closely mirrors upstream's own build.yaml (checkout + cibuildwheel directly, no native deps to preinstall), narrowed to the riscv64 manylinux/musllinux targets and testing against the wheel with upstream's own `cd tests; pytest -v` invocation.
Free-threaded CPython warns "use of fork() may lead to deadlocks" when a multi-threaded process calls multiprocessing.Process/os.fork(), and the extra runtime threads race the fixed post-fork sleep(0.1) these tests use to wait for their forked server to be ready, causing intermittent ConnectionRefusedError. Confirmed reproducing identically on both manylinux and musllinux for cp314t only, with cp312/cp313/cp314 green on both. Skip the affected files on cp314t; the GIL builds run the full suite unmodified.
…fault)
Skipping test_all_protocols_binary_field.py on cp314t (the fork-race fix)
also skips its module-level multiprocessing.set_start_method('fork') call,
which was implicitly forcing 'fork' for the whole pytest session on the
other interpreters. Without it, cp314t falls back to CPython 3.14's new
default start method, 'forkserver', which pickles the Process target
instead of inheriting it via COW - and test_apache_json.py::test_client's
locally-defined run_server()/Handler can't be pickled.
…oot)
pytest's rootdir here is {project} (a setup.py sits there), not
{project}/tests, so the real nodeid is
tests/test_apache_json.py::test_client[server_func0] - the bare form
the -v/FAILED output displays is only cwd-relative and silently no-ops
as a --deselect argument.
luhenry
added a commit
that referenced
this pull request
Sep 6, 2026
The first fix used the bare nodeid pytest's -v/FAILED output showed, which turned out to be cwd-relative display only; --deselect needs the rootdir-relative nodeid (tests/test_apache_json.py::...), confirmed by the deselect silently no-oping on PR #1063's next CI run. Use --collect-only -q to get the real nodeid instead.
luhenry
added a commit
that referenced
this pull request
Sep 6, 2026
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.
thriftpy20.7.1Pure-Python Apache Thrift implementation with a handful of small Cython-accelerated transport/protocol extensions. Upstream publishes no riscv64 wheel.
Mirrors upstream's own
build.yaml: checkout the tag and runcibuildwheeldirectly, no in-container build steps needed.Differs from upstream
CIBW_ENABLE: cpython-freethreading- cibuildwheel 4 builds free-threaded wheels without it and no longer recognizes the group.Testing
test_aio_http.py-aiohttphas no riscv64 wheel for cp314/cp314t or for musllinux on the registry.License: OK