Repository navigation
Conversation
Builds cp310-cp313 wheels for networkit, a C++ graph-analysis library with Cython bindings and OpenMP parallelism. CMake build is portable: the only SIMD (AVX2) and x86 inline-asm (ttmath) paths are each gated behind proper __ifdef__ fallbacks to scalar/noasm code, and the vendored tlx/dhb submodules add no arch-specific requirements. Validated locally by cythonizing + cmake/ninja building the full tree and running a smoke import/graph/centrality test against the resulting module. A gpl_sources job collects the manylinux_riscv64 image's gcc, since the build links OpenMP (libgomp).
|
Not fixing anything in the port for this — the matrix's other legs (cp312, cp313 still running at comment time, cp311 queued) aren't affected the same way, consistent with a race rather than a deterministic break. I'll re-run just the failed cp310 job (the one re-run this process allows for a suspected flake) once the rest of this run finishes — GitHub refuses a rerun while sibling jobs in the same run are still in progress. Watching for the result. Generated by Claude Code |
|
Correction to my last comment: this is not a flake. Working theory: cibuildwheel's isolated build uses CMake's default "Unix Makefiles" generator, and the PR's own description says local validation used ninja. A classic cause of this exact symptom (a Cython-generated file's contents duplicated wholesale) is CMake declaring the same Generated by Claude Code |
networkit 11.2.1's build-system.requires leaves Cython unbounded, so the isolated build env resolves Cython 3.3.0, released after 11.2.1. setup.py cythonizes all modules once, serially, before CMake runs; CMake only compiles the pre-generated networkit/<mod>.cpp files (no custom commands), so the Makefiles-vs-Ninja generator choice does not affect the result. Cython 3.3.0 itself emits the vector->list converter helpers for structures.node, double and vector[node] twice into distance.cpp, which GCC rejects as "redefinition of __pyx_convert_vector_to_py_...". A plain `cython -3 --cplus networkit/distance.pyx` reproduces it on x86_64; the other 30 modules are unaffected, and Cython 3.2.9 emits each helper once. Write a Cython<3.3.0 constraint in CIBW_BEFORE_ALL and pass it through both PIP_CONSTRAINT and PIP_BUILD_CONSTRAINT, since the manylinux image's pip 26 only honours the latter inside the isolated build environment.
|
Root cause confirmed, and my Make-vs-Ninja theory was wrong: CMake here only compiles pre-generated Fix pushed: commit 60a61c3, pinning Generated by Claude Code |
networkit11.2.1Builds networkit's CMake/Cython C++ graph-analysis extension modules. Upstream publishes no riscv64 wheel.
Mirrors the Linux job of upstream's
build_wheels.yml.Differs from upstream
gpl_sourcesjob - the build links OpenMP, so auditwheel vendors the manylinux image's libgomp.Matrix: cp310-cp313, matching the ABIs upstream actually released for 11.2.1 (its CI matrix on master also builds cp314/cp315, but the PyPI release doesn't).
Testing
License: Wheel vendors the manylinux image's libgomp (GPL-3.0 with the GCC Runtime Library Exception);
gpl_sourcescollects its sources.