Repository navigation
anycrc: add build-anycrc.yml for riscv64 wheels #1
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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 |