Skip to content

anycrc: add build-anycrc.yml for riscv64 wheels #1

anycrc: add build-anycrc.yml for riscv64 wheels

anycrc: add build-anycrc.yml for riscv64 wheels #1

Workflow file for this run

# SPDX-FileCopyrightText: 2026 The RISE Project
# SPDX-License-Identifier: MIT
---
# Based on the `build_wheels` job of
# https://github.com/marzooqy/anycrc/blob/2.0.0/.github/workflows/github-deploy.yml
name: Build anycrc wheels (riscv64)
on:
workflow_dispatch:
inputs:
version:
description: 'anycrc version/tag to build (e.g. 2.0.0)'
required: true
default: '2.0.0'
pull_request:
paths:
- '.github/workflows/build-anycrc.yml'
concurrency:
group: ${{ github.workflow }}-${{ inputs.version || '2.0.0' }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions:
contents: read # to fetch code (actions/checkout)
env:
ANYCRC_VERSION: ${{ inputs.version || '2.0.0' }}
MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64
jobs:
setup:
uses: $/.github/workflows/_setup.yml
build_wheels:
needs: [setup]
name: Build anycrc ${{ inputs.version || '2.0.0' }} ${{ matrix.tag }}-manylinux_riscv64
runs-on: ubuntu-24.04-riscv
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
include:
# setup.py tags every non-free-threaded CPython wheel cp311-abi3, so
# one build serves them all; the free-threaded build cannot use the
# limited API.
- tag: cp311-abi3
build: >-
cp311-manylinux_riscv64 cp312-manylinux_riscv64
cp313-manylinux_riscv64 cp314-manylinux_riscv64
- tag: cp314t
build: cp314t-manylinux_riscv64
steps:
- name: Checkout anycrc ${{ env.ANYCRC_VERSION }}
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: marzooqy/anycrc
ref: ${{ env.ANYCRC_VERSION }}
submodules: recursive
persist-credentials: false
- name: Write a cibuildwheel config without upstream's `skip`
# Upstream's only [tool.cibuildwheel] setting is `skip = ["cp31[!01]-*"]`,
# which would drop cp312/cp313/cp314 from the abi3 build/test matrix below.
run: printf '[tool.cibuildwheel]\n' > "$RUNNER_TEMP/cibuildwheel.toml"
- uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0
with:
config-file: ${{ runner.temp }}/cibuildwheel.toml
env:
CIBW_ARCHS: riscv64
CIBW_BUILD: ${{ matrix.build }}
CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }}
CIBW_TEST_COMMAND: >-
python -c "import anycrc.crc as m; assert m.__file__.endswith('.so'), m.__file__"
&& python {project}/test.py
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: anycrc-${{ env.ANYCRC_VERSION }}-${{ matrix.tag }}-manylinux_riscv64
path: ./wheelhouse/*.whl
if-no-files-found: error
publish:
name: Publish anycrc ${{ inputs.version || '2.0.0' }}
needs: [setup, build_wheels]
permissions:
contents: write
pull-requests: write
uses: $/.github/workflows/_publish-wheel.yml
with:
artifact-pattern: anycrc-${{ inputs.version || '2.0.0' }}-*-manylinux_riscv64