Skip to content

igraph: add build-igraph.yml for riscv64 wheels - #1014

Merged
luhenry merged 5 commits into
mainfrom
igraph
Sep 6, 2026
Merged

igraph: add build-igraph.yml for riscv64 wheels#1014
luhenry merged 5 commits into
mainfrom
igraph

Conversation

@luhenry

@luhenry luhenry commented Sep 6, 2026

Copy link
Copy Markdown
Member

Builds 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/musllinux build_wheel_linux* jobs).

Differs from upstream

  • Nothing beyond the riscv64 image.

Matrix: single cp39-abi3 build (upstream's own bdist_wheel_abi3 tag), reused+tested on cp312-cp314; no cp314t (upstream skips it too, Py_LIMITED_API can't target free-threaded).

Testing

  • same as upstream, except the manylinux cp39 leg skips tests: numpy/scipy/pandas/matplotlib/Pillow (upstream's test extra) have no riscv64 wheel below cp312 on our registry. test-musl needs none of them, so musllinux tests on every interpreter.

License: Wheel bundles the build image's libgomp (GPL runtime library); a gpl_sources job attaches its source RPM to the release.

Validated locally end to end on manylinux_2_39_aarch64 and musllinux_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).

luhenry and others added 5 commits September 6, 2026 11:41
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).
@luhenry
luhenry merged commit 86eecaa into main Sep 6, 2026
8 checks passed
@luhenry
luhenry deleted the igraph branch September 6, 2026 17:32
@luhenry luhenry linked an issue Sep 6, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

igraph riscv64 support

1 participant