Repository navigation
docs: Update projects #23
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 | |
| --- | |
| # This workflow is based on: https://github.com/sagemath/cysignals/blob/1.12.6/.github/workflows/dist.yml | |
| name: Build cysignals wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/cysignals.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-cysignals.yml' | |
| - 'docs/packages/cysignals.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-cysignals.yml' | |
| - 'docs/packages/cysignals.yaml' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read # to fetch code (actions/checkout) | |
| env: | |
| MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64 | |
| MUSLLINUX_RISCV64_IMAGE: quay.io/pypa/musllinux_1_2_riscv64 | |
| jobs: | |
| setup: | |
| uses: $/.github/workflows/_setup.yml | |
| with: | |
| package: cysignals | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build cysignals ${{ matrix.version }} ${{ matrix.python }}-${{ matrix.libc }}_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| # cysignals's own test suite deliberately triggers stack overflows, infinite | |
| # loops and alarm-based interrupts; fail fast if one of those hangs instead | |
| # of recovering on this architecture. | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # 1.13.0 raised requires-python to >=3.13 (was >=3.12 in 1.12.6), so | |
| # cp312 is no longer a valid build target: cibuildwheel selects zero | |
| # build identifiers for it and exits with "No build identifiers | |
| # selected". | |
| python: ["cp313", "cp314", "cp314t"] | |
| libc: [manylinux, musllinux] | |
| env: | |
| CYSIGNALS_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout cysignals ${{ env.CYSIGNALS_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: sagemath/cysignals | |
| ref: ${{ env.CYSIGNALS_VERSION }} | |
| persist-credentials: false | |
| - name: Checkout python-wheels | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| path: python-wheels | |
| persist-credentials: false | |
| - name: Patch cysignals source | |
| run: git apply python-wheels/patches/cysignals/${{ env.CYSIGNALS_VERSION }}/00*.patch | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| output-dir: wheelhouse/ | |
| only: ${{ matrix.python }}-${{ matrix.libc }}_riscv64 | |
| env: | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| CIBW_MUSLLINUX_RISCV64_IMAGE: ${{ env.MUSLLINUX_RISCV64_IMAGE }} | |
| # Upstream's pyproject.toml sets build-frontend = "build[uv]"; that | |
| # crashes cibuildwheel's post-build audit step on our self-hosted | |
| # runner, which has no host `uv` (gotcha 13). | |
| CIBW_BUILD_FRONTEND: build | |
| - name: Check the wheel ships the extensions and licence | |
| run: | | |
| python3 - wheelhouse/*.whl <<'EOF' | |
| import sys, zipfile | |
| for whl in sys.argv[1:]: | |
| names = zipfile.ZipFile(whl).namelist() | |
| assert any(n.startswith("cysignals/") and n.endswith(".so") for n in names), whl | |
| # meson-python 0.22 implements PEP 639: license files land under | |
| # <dist-info>/licenses/, not directly in <dist-info>/ as older | |
| # (setuptools-era) tooling placed them. | |
| assert any(n.endswith(".dist-info/licenses/LICENSE") for n in names), whl | |
| print(whl, "ok") | |
| EOF | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: cysignals-${{ env.CYSIGNALS_VERSION }}-${{ matrix.python }}-${{ matrix.libc }}_riscv64 | |
| path: ./wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish cysignals ${{ matrix.version }} | |
| needs: [setup, build_wheels] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| uses: $/.github/workflows/_publish-wheel.yml | |
| secrets: | |
| app-private-key: ${{ secrets.RISEPROJECT_APP_PRIVATE_KEY }} | |
| with: | |
| artifact-pattern: cysignals-${{ matrix.version }}-*riscv64 |