ci: add riscv64 wheel builds#506
Conversation
Add a build_wheels_riscv64 job using cibuildwheel with QEMU emulation. Targets CPython 3.10-3.14 (including free-threaded) on manylinux_riscv64. Skips musllinux (no riscv64 image available). Higher timeout (120 min) to account for QEMU + Rust compilation overhead. Closes openai#502
|
Native build verified on riscv64 hardware (BananaPi F3, SpacemiT K1, rv64gc, GCC 14.2.0): SUCCESS. |
|
Successful riscv64 build on native RISE runner (~5 min): https://github.com/gounthar/tiktoken/actions/runs/23745982111 |
| python-version: [310, 311, 312, 313, 313t, 314, 314t] | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v6 |
There was a problem hiding this comment.
maybe use a pinned version as other jobs do?
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
There was a problem hiding this comment.
@justeph Done. Pinned all four actions in the riscv64 job (checkout, setup-qemu-action, cibuildwheel, upload-artifact) to commit hashes, matching the pattern used in the other jobs.
| platforms: linux/riscv64 | ||
|
|
||
| - name: Build wheels | ||
| uses: pypa/cibuildwheel@v3.1.4 |
| CIBW_ENVIRONMENT_LINUX: PATH="$PATH:$HOME/.cargo/bin" CARGO_NET_GIT_FETCH_WITH_CLI=true | ||
| CIBW_ENABLE: cpython-freethreading | ||
|
|
||
| - uses: actions/upload-artifact@v6 |
|
Any chance to get this merged? For reference, I forked @gounthar branch into my namespace to run the workflow, and it succeeded in 23 mins. See https://github.com/justeph/tiktoken/actions/runs/25152519227. Is that acceptable? |
Mirror the pinning pattern used in build_wheels and build_wheels_aarch64. Signed-off-by: Bruno Verachten <gounthar@gmail.com>
Summary
Add
linux_riscv64wheels to the build workflow, mirroring the existingaarch64 build job.
Changes
build_wheels_riscv64job using cibuildwheel + QEMU emulationmanylinux_riscv64join_artifactsdependency listEvidence
A tested riscv64 wheel is available in our community index:
https://gounthar.github.io/riscv64-python-wheels/simple/tiktoken/
Built natively on BananaPi F3 (SpacemiT K1, rv64imafdcv, 8 cores @ 1.6 GHz, 16 GB RAM).
Context
manylinux_2_28_riscv64is available in pypa/manylinuxriscv64gc-unknown-linux-gnuinside the manylinux containerCloses #502
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.