Add riscv64 to Linux wheel build matrix#9463
Add riscv64 to Linux wheel build matrix#9463gounthar wants to merge 17 commits intopython-pillow:mainfrom
Conversation
Add QEMU emulation for riscv64 and include manylinux_2_28 riscv64 entry in the build-native-wheels matrix.
|
Hi. At the moment, you've only added the QEMU step, you haven't actually changed the matrix. As a word of warning, I expect that once you do update the matrix, this will take a very long time to build - #9462 (comment) |
|
@radarhere: oopsie; I'd added the QEMU step but forgot the matrix entry. Fixed in 7b026c6: added a This should trigger a CI run. I expect it will either hit the libaom/RVV build error or the 6-hour timeout (or both). Either way, we'll have concrete data on what happens under QEMU, which will help decide whether to pursue the self-hosted runner path or close this. |
|
Regarding the general test failures, they should be fixed by #9464 Regarding riscv64, it did fail to build libavif - https://github.com/python-pillow/Pillow/actions/runs/23025132993/job/66876973143?pr=9463#step:6:5045 I don't expect riscv64 to hit the 6 hour limit if you are only building two Python versions. |
|
@radarhere Thanks for pointing to the libavif failure. I'll investigate the build log; it looks like it could be a libaom/RVV (RISC-V Vector) codegen issue in the cross-compilation path. On the build time front: if QEMU overhead becomes a concern, https://cloud-v.co/ provides free native riscv64 GitHub Actions runners to open source projects. That would speed things up and give more representative results. But let me first focus on getting libavif to build (or not) under QEMU. |
|
Following up on the libavif/libaom failure. There is an active review on the aomedia Gerrit fixing RVV handling for specific block sizes in riscv64: https://aomedia-review.googlesource.com/c/aom/+/208401 Not sure yet if this is the exact issue we hit, but it is in the same area. I will rebase and re-run once it lands to see if it unblocks the build. |
da752d6 to
094db1d
Compare
After upstream dropped free-threaded wheels, EXPECTED_DISTS went from 75 to 66. Adding cp312 and cp313 manylinux_2_39_riscv64 brings it to 68. Signed-off-by: Bruno Verachten <gounthar@gmail.com>
libjpeg-turbo 3.1.4.1 simdcoverage.c references jsimd_can_encode_mcu_AC_refine_prepare which is only declared in the RVV SIMD extensions added to upstream main (commit 9817c40) but not included in any stable release yet. Building with -DWITH_SIMD=FALSE avoids the error; riscv64 has no production SIMD support in 3.1.4.1 in any case. Signed-off-by: Bruno Verachten <gounthar@gmail.com>
…age pin cibuildwheel 3.4.0 pins manylinux_2_39_riscv64 to 2026.03.01-1 which does not exist on quay.io (earliest available tag is 2026.03.06-3). 3.4.1 corrects the pin to 2026.03.20-1. Signed-off-by: Bruno Verachten <gounthar@gmail.com>
Fixes #9462.
Changes proposed in this pull request:
manylinux_2_28 riscv64entry tobuild-native-wheelsmatrix inwheels.ymlmanylinux_2_28_riscv64wheels via cibuildwheel + QEMUNote:
EXPECTED_DISTSmay need updating once the exact wheel count is determined.Evidence
Context
manylinux_2_28_riscv64is available in pypa/manylinux