Conversation
debugpy publishes per-interpreter manylinux wheels containing pydevd's two Cython speedups (pydevd_cython, _pydevd_sys_monitoring_cython) but no riscv64 build. Build-from-checkout via cibuildwheel; the pre-generated .c files ship in the tree, so no Cython is needed. REQUIRE_CYTHON_BUILD=1 is load-bearing: setup.py runs the pydevd extension build in a subprocess and swallows failures, shipping a wheel with no .so. Tests run upstream's own suite (tox drives the same pytest invocation) with PYDEVD_USE_CYTHON=yes so pydevd raises rather than falling back to the pure-Python tracer.
pydevd injects its attach shim with a per-arch prebuilt library and add_code_to_python_process.py only accepts x86/i386/x86_64/amd64/arm64, so attach-by-PID cannot work on riscv64. CPython 3.14 goes through sys.remote_exec() instead (debugpy/server/cli.py), which is why the cp314 job passed all 1330 tests while cp312/cp313 failed exactly the 100 attach_pid ones. Drop cp314t: debugpy publishes no free-threaded wheel, its tox envlist stops at py314, and the free-threaded job crashed 40 pytest-xdist workers spread across every test module.
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.
Adds a riscv64 wheel build for debugpy 1.8.21.
Why
debugpy publishes per-interpreter
manylinux_2_34_x86_64wheels that carry pydevd's twoCython speedups —
_pydevd_bundle/pydevd_cython*.soand_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython*.so— plus apy2.py3-none-anyfallback. On riscv64 today
pip install debugpylands on the pure-Python fallback, so thedebugger runs its slow tracer. This builds the compiled wheels.
Shape
Build-from-checkout via cibuildwheel, matrix
cp312/cp313/cp314. pydevd ships thepre-generated
.cnext to each.pyx, so nothing needs Cython at build time.Notes:
REQUIRE_CYTHON_BUILD=1is load-bearing (CLAUDE.md gotcha 20):setup.py'sbuild_py.finalize_optionsshells out tosetup_pydevd_cython.py build_extandswallows the failure, and
ext_modulesis a truthy empty list, so without it abroken compile still produces a correctly-tagged
cp3XX-manylinux_riscv64wheel with no.soin it.PYDEVD_USE_CYTHON=yesin the test phase makespydevd_cython_wrapperraise instead ofsilently falling back to the pure-Python tracer, so the whole suite exercises the
extension; a direct import probe runs ahead of pytest as well.
CIBW_TEST_SOURCES: tests pytest.ini—tests/is a package whoseconftest.pyregisters
tests.pytest_fixtures/tests.pytest_hooks, so it has to sit in the test cwd,and
pytest.inicarriestestpaths/-n8.tests/requirements.txtminusgevent(not on our registry and noriscv64 wheel on PyPI; its single test is
--ignored, and it self-skips on 3.13+ anyway)and the build-only
vswhere/Cython.Attach-by-PID and free-threading
The first CI run put both of these on the record, so they are deselections with evidence
rather than guesses.
attach_pidis skipped below 3.14. pydevd injects its attach shim from a per-archprebuilt library, and
add_code_to_python_process.pyonly acceptsarm64/amd64/x86/x86_64/i386— there is no riscv64 build of it upstream, so attach-by-PIDcannot work. CPython 3.14 attaches through
sys.remote_exec()instead(
debugpy/server/cli.py), which needs no shim. That split is exactly what CI showed: thecp314 job passed all 1330 tests, while cp312 and cp313 failed 100 tests each and every
one of them was an
attach_pidparametrisation (Timed out waiting for debug server to connect). So-k "not attach_pid"is applied on cp312/cp313 only, and 3.14 keeps thefull coverage.
tox.inienvliststops at
py314, and its classifiers list no free-threading support. The cp314t jobmatched that: 40 pytest-xdist workers crashed outright, spread across every test module
(
test_threads,test_evaluate,test_args,test_exception, …), not a subset thatpoints at one feature. Building it would mean shipping riscv64 a configuration upstream
supports nowhere.
Upstream builds its released wheels in a private pipeline; the public
azure-pipelines/pipelines.yamlruns the same pytest suite through tox, which is what thetest command here mirrors.