From f57fe52d8bf3c81049c3a96341ac3e96e27bff8d Mon Sep 17 00:00:00 2001 From: Bruno Verachten Date: Thu, 12 Mar 2026 10:00:21 +0100 Subject: [PATCH 1/2] feat: add riscv64 to Linux wheel build matrix Add manylinux_2_28_riscv64 wheel builds via QEMU emulation. Uses include entries since riscv64 only has manylinux_2_28 (no manylinux2014, no musllinux). --- .github/workflows/wheel.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/wheel.yml b/.github/workflows/wheel.yml index 5d9d5d06..7f170098 100644 --- a/.github/workflows/wheel.yml +++ b/.github/workflows/wheel.yml @@ -81,6 +81,7 @@ jobs: CIBW_MANYLINUX_I686_IMAGE: quay.io/pypa/${{ matrix.image }}_i686:latest CIBW_MANYLINUX_PPC64LE_IMAGE: quay.io/pypa/${{ matrix.image }}_ppc64le:latest CIBW_MANYLINUX_S390X_IMAGE: quay.io/pypa/${{ matrix.image }}_s390x:latest + CIBW_MANYLINUX_RISCV64_IMAGE: quay.io/pypa/${{ matrix.image }}_riscv64:latest CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/${{ matrix.image }}_x86_64:latest CIBW_MUSLLINUX_AARCH64_IMAGE: quay.io/pypa/${{ matrix.image }}_aarch64:latest CIBW_MUSLLINUX_I686_IMAGE: quay.io/pypa/${{ matrix.image }}_i686:latest @@ -98,7 +99,7 @@ jobs: version: "0.8.11" - name: Set up QEMU - if: ${{ matrix.arch == 'ppc64le' || matrix.arch == 's390x' }} + if: ${{ matrix.arch == 'ppc64le' || matrix.arch == 's390x' || matrix.arch == 'riscv64' }} uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0 - name: Build wheels From 169e6fbb21a5c1c0aec99a238fd60554c7e5bbc2 Mon Sep 17 00:00:00 2001 From: Bruno Verachten Date: Thu, 12 Mar 2026 10:02:12 +0100 Subject: [PATCH 2/2] feat: add riscv64 include entries to wheel matrix Add manylinux_2_28_riscv64 builds for cp310-cp314t via include entries. Include entries bypass the existing manylinux_2_28 excludes that would otherwise block riscv64 combinations. --- .github/workflows/wheel.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/.github/workflows/wheel.yml b/.github/workflows/wheel.yml index 7f170098..99bdcb47 100644 --- a/.github/workflows/wheel.yml +++ b/.github/workflows/wheel.yml @@ -70,6 +70,33 @@ jobs: image: 'musllinux_1_1' - py: 'cp314t' image: 'musllinux_1_1' + include: + # riscv64 only has manylinux_2_28 (no manylinux2014, no musllinux). + # Using include entries to bypass the manylinux_2_28 excludes above. + - py: 'cp310' + arch: 'riscv64' + abi: 'manylinux' + image: 'manylinux_2_28' + - py: 'cp311' + arch: 'riscv64' + abi: 'manylinux' + image: 'manylinux_2_28' + - py: 'cp312' + arch: 'riscv64' + abi: 'manylinux' + image: 'manylinux_2_28' + - py: 'cp313' + arch: 'riscv64' + abi: 'manylinux' + image: 'manylinux_2_28' + - py: 'cp314' + arch: 'riscv64' + abi: 'manylinux' + image: 'manylinux_2_28' + - py: 'cp314t' + arch: 'riscv64' + abi: 'manylinux' + image: 'manylinux_2_28' runs-on: ${{ matrix.arch == 'aarch64' && 'ubuntu-22.04-arm' || 'ubuntu-22.04' }} env: CIBW_ARCHS: ${{ matrix.arch }}