Conversation
Builds python-igraph's abi3 wheel (cp39-abi3, matching upstream's own bdist_wheel_abi3 tag) for both manylinux and musllinux riscv64, mirroring upstream's build.yml (build_c_core via vendored CMake, then setuptools). Locally validated end to end on manylinux_2_39_aarch64 and musllinux_1_2_aarch64: the C core builds in under two minutes and the full upstream test suite (515 tests) passes on both libcs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Az13NcXsVZzzxXmaxxUEy7
CMake's version.cmake in vendor/source/igraph falls back to git_describe() when no IGRAPH_VERSION file exists (only present in release tarballs). Our checkout's default fetch-depth: 1 also shallow-clones the submodule, so the C core has no reachable tags and build_c_core's cmake configure step fails with "Cannot find out the version number of this package". Upstream's own CI checks out with fetch-depth: 0, which the checkout action mirrors onto the submodule clone. Match that (gotcha 268).
abi3audit flagged PyLong_AsInt_OutArg, PyLong_to_integer_t, PyUnicode_CopyAsString and PyUnicode_IsEqualToUTF8String as non-abi3 symbols leaking from _igraph.abi3.so: python-igraph declares them with default (extern) visibility even though their names collide with real (non-limited-API) CPython C-API symbols. Patch upstream to mark the two convert.c-only helpers static and give the two cross-file pyhelpers.c ones hidden visibility, apply it before the cibuildwheel step, and add patches/igraph/** to the pull_request trigger paths.
…lure matplotlib's image_comparison (tol=4.0) diffs test_labels' rendered vertex labels against a bundled baseline PNG; the riscv64 manylinux image's font stack anti-aliases just differently enough to push RMS to 6.084, while the other 522 tests in the suite pass. Not a functional igraph bug (gotcha 282).
…e flake igraph's own vendored ARPACK seeds hub/authority-score eigensolves with an uncontrollable random starting vector; upstream has already triaged this exact test/error as a non-deterministic convergence flake on other platforms (glibc x86_64, mips64el), not something specific to riscv64. It only shows up in our musllinux leg, not manylinux, so deselect it there only (gotcha 286).
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.
igraph1.0.0Builds python-igraph's C extension against its vendored igraph C core (CMake, GLPK/ARPACK/GMP/PLFIT bundled in-tree). Upstream publishes no riscv64 wheel.
Mirrors upstream's
build.yml(the manylinux/musllinuxbuild_wheel_linux*jobs).Differs from upstream
Matrix: single
cp39-abi3build (upstream's ownbdist_wheel_abi3tag), reused+tested on cp312-cp314; no cp314t (upstream skips it too,Py_LIMITED_APIcan't target free-threaded).Testing
testextra) have no riscv64 wheel below cp312 on our registry.test-muslneeds none of them, so musllinux tests on every interpreter.License: Wheel bundles the build image's libgomp (GPL runtime library); a
gpl_sourcesjob attaches its source RPM to the release.Validated locally end to end on
manylinux_2_39_aarch64andmusllinux_1_2_aarch64(same Rocky 10 / Alpine image family): C core builds in under 2 minutes, 515 passed / 2 skipped (manylinux), 478 passed / 17 skipped (musllinux, no numpy/scipy/pandas/matplotlib/Pillow).