Skip to content

ci: add riscv64 manylinux wheels with native RISE runners#234

Open
gounthar wants to merge 1 commit intopython-cffi:mainfrom
gounthar:feat/riscv64-native-runners
Open

ci: add riscv64 manylinux wheels with native RISE runners#234
gounthar wants to merge 1 commit intopython-cffi:mainfrom
gounthar:feat/riscv64-native-runners

Conversation

@gounthar
Copy link

Summary

Add riscv64 manylinux wheel builds using native RISE RISC-V runners instead of QEMU emulation.

Based on the excellent work by @justeph in #227. This PR builds on that approach with native runner support for significantly faster builds.

Changes

  • Add riscv64 matrix entries (cp39-cp314t) following the s390x pattern
  • Use ubuntu-24.04-riscv native runner (no QEMU needed)
  • Skip docker/setup-qemu-action for riscv64
  • Add CIBW_MANYLINUX_RISCV64_IMAGE defaulting to manylinux_2_39 (first manylinux with riscv64)

Why native runners over QEMU

QEMU emulation (as in #227) works but is slow. Native RISE runners provide real riscv64 hardware at no cost to the project, with build times comparable to other architectures.

Evidence

  • cffi 2.0.0 built successfully on native riscv64: BananaPi F3, SpacemiT K1, rv64gc, GCC 14.2.0
  • RISE runners validated on numpy (3.5 min build), bcrypt, xet-core, and other projects

Credits

Supersedes #227

Add riscv64 matrix entries (cp39-cp314t) following the s390x pattern,
with native RISE riscv64 runners instead of QEMU emulation.

Based on the work by @justeph in python-cffi#227, with the addition of:
- Native runner support (ubuntu-24.04-riscv) for faster builds
- Skip QEMU setup for riscv64 (not needed on native hardware)

Verified on native riscv64 hardware (BananaPi F3, SpacemiT K1).
Native RISE runners provided by the RISE project.

Signed-off-by: Bruno Verachten <gounthar@gmail.com>
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.

1 participant