Conversation
Builds SimpleITK's SWIG Python bindings and the ITK 5.4.7 C++ world behind them for riscv64, the same two-stage recipe upstream's own Linux wheel job runs in Utilities/Distribution/manylinux/imagefiles/cmd.sh: the SuperBuild compiles Lua, PCRE2, SWIG 4.4.1, ITK and the static SimpleITK core, then Wrapping/Python is configured against that build tree and packaged with setup.py. No cibuildwheel, no scikit-build, and no ITK dependency wheel - upstream's wheel statically links its own ITK build into _SimpleITK.so. The interpreter set follows the wheels upstream publishes rather than this repo's default: dist/CMakeLists.txt passes --py-limited-api=cp311, so the limited-API wheel is tagged cp311-abi3 and is built on cp311 to match the tag it carries, covering cp312 through cp314; cp314t is a second build because free-threaded interpreters cannot use the stable ABI. Nothing in ITK or SimpleITK is architecture-specific: every x86 intrinsic in the vendored trees (Eigen, vnl, openjpeg, zlib-ng) sits behind its own ISA gate. The exception is ITK's vendored zlib-ng, which turns its RVV kernels on by default on riscv and probes them with a vsetvli that SIGILLs on this runner hardware, so the build passes WITH_RVV=OFF - which needs one patch, because SuperBuild/External_ITK.cmake forwards no WITH_* variable to the ITK sub-build. Testing runs upstream's Python unit tests from Testing/Unit/Python against the installed wheel; BUILD_TESTING is off in both CMake stages, which skips the C++ test binaries and their ExternalData downloads.
Contributor
|
luhenry
added a commit
that referenced
this pull request
Sep 21, 2026
…hreaded legs Triaged for scale before writing any YAML, and it is not the paddlepaddle/chdb class it looks like: upstream's own CDash dashboard prices the whole SuperBuild (Lua, PCRE2, SWIG, ITK 5.4.7, static SimpleITK core) at 1h03m-1h50m of compile on 4-core x86, with each per-interpreter wrapping build at 2-8m, and upstream's Linux wheels are built inside GitHub's 6h hosted-runner cap on 4 vCPU. One patch, for a WITH_RVV that the SuperBuild forwards to nothing. Full reasoning in the entry; folded as gotchas 476 and 477.
luhenry
marked this pull request as ready for review
September 21, 2026 20:05
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.
simpleitk2.5.6Compiles ITK 5.4.7 and SimpleITK's static C++ core, then SWIG-wraps them into
_SimpleITK.so. Upstream publishes no riscv64 wheel.Mirrors upstream's manylinux wheel recipe, the container
Package.ymlruns for its Linux wheels.Differs from upstream
BUILD_TESTING=OFFin both stages - drops the C++ test binaries and their ExternalData downloads.WITH_RVV=OFF- ITK's vendored zlib-ng probes its RVV kernels with avsetvlithat SIGILLs on this hardware.disttarget packages with the image interpreter - upstream's venv would source-buildnumpy<2.5./usr/bin/cmake- ITK's vendored trees declare minimums the image's cmake 4 rejects.Matrix: cp311 + cp314t -
--py-limited-api=cp311tags the limited-API wheelcp311-abi3, which covers cp312 through cp314; free-threaded builds cannot use the stable ABI.Testing
Testing/Unit/Pythonsuite, run against the installed wheel rather than through ctest in the build tree.License: OK
Patches
0001-SuperBuild-forward-WITH_-cache-variables-to-the-ITK-.patch-Inappropriate: without it-DWITH_RVV=OFFnever reaches the ITK sub-build. Reproduces on any architecture.Built on cp311 and cp314t; CI running.