Skip to content

ci: add riscv64 wheel builds#926

Open
gounthar wants to merge 2 commits intoyaml:mainfrom
gounthar:add-riscv64-wheels
Open

ci: add riscv64 wheel builds#926
gounthar wants to merge 2 commits intoyaml:mainfrom
gounthar:add-riscv64-wheels

Conversation

@gounthar
Copy link
Copy Markdown

@gounthar gounthar commented Mar 12, 2026

Summary

Add linux_riscv64 wheels to the CI workflow for both libyaml and pyyaml builds.

Changes

  • Add { platform: manylinux_2_28, arch: riscv64 } to the libyaml build matrix
  • Add manylinux_2_28 riscv64 entries for CPython 3.10–3.14 (including free-threaded) to the pyyaml build matrix
  • Add CIBW_MANYLINUX_RISCV64_IMAGE environment variable for cibuildwheel
  • Marked as slow jobs (omit: skip_slow_jobs) to avoid running on every PR/push

How it works

The existing workflow already handles riscv64 correctly:

  • Runner selection: ubuntu-24.04 (non-aarch64 fallback)
  • QEMU setup: already triggers for matrix.arch != 'x86_64' && matrix.arch != 'aarch64'
  • Docker image: quay.io/pypa/manylinux_2_28_riscv64 exists and works

Evidence

A tested riscv64 wheel is available in our community index:
https://gounthar.github.io/riscv64-python-wheels/simple/pyyaml/

Built natively on BananaPi F3 (SpacemiT K1, rv64imafdcv, 8 cores @ 1.6 GHz, 16 GB RAM).

Context

  • manylinux_2_28_riscv64 is available in pypa/manylinux
  • cibuildwheel supports riscv64 via QEMU
  • Several packages already ship riscv64 wheels on PyPI (aiohttp, yarl, multidict, regex)
  • RISC-V hardware is shipping (SiFive, SpacemiT K1/K3, Sophgo SG2044)

Closes #924


Note: this work is part of the RISE Project effort to improve Python ecosystem support on riscv64 platforms. Native riscv64 CI runners are available for free via RISE RISC-V runners.

Add manylinux_2_28 riscv64 entries to both libyaml and pyyaml build
matrices. QEMU emulation is already configured for non-x86_64/non-aarch64
architectures, so riscv64 builds work without additional setup steps.

Targets CPython 3.10-3.14 (including free-threaded). Marked as slow jobs
to allow skipping during CI for PRs and pushes.

Closes yaml#924
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.

Add riscv64 (linux_riscv64) wheel to PyPI releases

1 participant