Repository navigation
Conversation
Adds build-cppyy-cling.yml, following build-libclang.yml's shape for the same reason: this is a from-source LLVM/Clang build, here with Cling's interpreter layer and PCH/dictionary generation on top. Checked out at wlav/cppyy-backend's cppyy-cling-6.32.8 tag and verified directly against it (not just the PyPI sdist): src/interpreter/ CMakeLists.txt has a first-class `ROOT_ARCHITECTURE MATCHES riscv64` branch (same shape as its AArch64/ARM/PowerPC/SystemZ branches), and the bundled llvm-project snapshot carries the complete modern upstream RISCV backend. But ROOT_ARCHITECTURE is never actually set in this cling-only build (src/CMakeLists.txt never pulls in ROOT's SetUpLinux.cmake), so that branch is dead and setup.py's cmake invocation falls through to building every LLVM backend on Linux. Patch 0002 scopes it to RISCV;NVPTX the same way setup.py's own macOS-arm64 branch already scopes to ARM;AArch64;NVPTX. Patch 0001 generalizes setup.py's manylinux detection (hardcoded to three old CentOS release strings) to also recognize our Rocky Linux 10-based manylinux_2_39_riscv64 image via AUDITWHEEL_PLAT, so the build picks Release over debug-laden RelWithDebInfo and the default C++ standard matches every other published platform. No gpl_sources job: unlike libclang, this build does not pass -static-libgcc/-static-libstdc++ anywhere, so it carries no gcc runtime into the wheel.
luhenry
added a commit
that referenced
this pull request
Oct 15, 2026
luhenry
marked this pull request as draft
October 15, 2026 12:13
git -C cppyy-backend apply <glob> hands git the literal glob: the shell expands it in the step's own cwd ($GITHUB_WORKSPACE), which -C only moves git past, not the shell. The runner's workspace directory is itself named python-wheels, so ../python-wheels from the workspace root resolves back onto the workspace and the glob silently matches nothing instead of erroring on a missing directory - git then receives the unexpanded glob verbatim and fails with "No such file or directory". Use working-directory: cppyy-backend instead, matching every other build-<pkg>.yml in this repo that checks out its source under path: <pkg> (build-pyicu-binary.yml, build-labmaze.yml, build-minorminer.yml, ...), so the shell and git share one base for the relative path. Verified by applying 0001/0002 with the fixed relative path against a fresh checkout of wlav/cppyy-backend's cppyy-cling-6.32.8 tag - both patches apply cleanly.
This branch has not been deployed
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.
cppyy-cling6.32.8Re-packaged Cling (ROOT's C++ interpreter), the backend cppyy JITs against; building it compiles LLVM/Clang plus Cling's interpreter layer from source. Upstream publishes no riscv64 wheel.
Mirrors upstream's
cling-wheels.yml, driving the manylinux_riscv64 image directly instead of through cibuildwheel, the same shape asbuild-libclang.yml.Differs from upstream
LLVM_TARGETS_TO_BUILDtoRISCV;NVPTX- setup.py never sets it on Linux, so it silently built every LLVM backend.AUDITWHEEL_PLAT/_PYTHON_HOST_PLATFORM- setup.py's manylinux detection predates PEP 600 images.Testing
License: OK
Patches
0001-setup-recognize-current-generation-manylinux-images.patch- To upstream. Without it the build silently drops to RelWithDebInfo and a different default C++ standard than every other published platform; not riscv64-specific.0002-setup-scope-llvm-targets-to-build-on-riscv64-linux.patch- To upstream. Without it the build compiles every LLVM backend instead of just RISCV;NVPTX, multiplying an already multi-hour build.From-source LLVM/Clang/Cling build, this repo's largest build shape (
build-libclang.yml's bracket); CI run in progress at time of writing.