Repository navigation
docs: Update projects #100
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 the `Linux` job of | |
| # https://github.com/vlaci/lzallright/blob/v0.2.6/.github/workflows/CI.yml | |
| name: Build lzallright wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/lzallright.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-lzallright.yml' | |
| - 'docs/packages/lzallright.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-lzallright.yml' | |
| - 'docs/packages/lzallright.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 | |
| jobs: | |
| setup: | |
| uses: $/.github/workflows/_setup.yml | |
| with: | |
| package: lzallright | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build lzallright ${{ matrix.version }} ${{ matrix.tag }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 90 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| include: | |
| # pyo3/abi3-py38 is on unconditionally ([tool.maturin] features in | |
| # pyproject.toml), so one abi3 wheel serves every GIL-ful interpreter; | |
| # pyo3 disables abi3 under Py_GIL_DISABLED, giving the free-threaded | |
| # build its own wheel. cp38 itself isn't in the riscv64 image (floor | |
| # cp39); cp313t is dropped too (image ships no cp313t) -- cp314t | |
| # substitutes for upstream's cp313-cp313t, same shape as build-primp.yml. | |
| - tag: cp38-abi3 | |
| # Built on cp39 -- the oldest interpreter the riscv64 image has -- | |
| # and re-tested on the newer ones via find_compatible_wheel. | |
| build: >- | |
| cp39-manylinux_riscv64 cp310-manylinux_riscv64 | |
| cp311-manylinux_riscv64 cp312-manylinux_riscv64 | |
| cp313-manylinux_riscv64 cp314-manylinux_riscv64 | |
| - tag: cp314t | |
| build: cp314t-manylinux_riscv64 | |
| env: | |
| LZALLRIGHT_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout lzallright v${{ env.LZALLRIGHT_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: vlaci/lzallright | |
| ref: v${{ env.LZALLRIGHT_VERSION }} | |
| persist-credentials: false | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| output-dir: wheelhouse/ | |
| env: | |
| # musllinux is dropped: rustup.rs ships no riscv64 musl toolchain. | |
| CIBW_BUILD: ${{ matrix.build }} | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| # lzallright ships no [tool.cibuildwheel]: install the Rust toolchain | |
| # its maturin backend needs, plus the static C++ runtime lzokay-sys's | |
| # build.rs links (libstdc++-static is CRB-only, per gotcha 77). | |
| CIBW_BEFORE_ALL_LINUX: | | |
| set -euo pipefail | |
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
| dnf -y --enablerepo=crb install libstdc++-static | |
| CIBW_ENVIRONMENT_LINUX: PATH="$PATH:$HOME/.cargo/bin" | |
| CIBW_TEST_REQUIRES: pytest | |
| # tests/test_python.py's `lorem` fixture reads benches/lorem.txt via | |
| # request.session.path; with test-sources set, cwd is already the | |
| # copied test root, so a bare invocation (no path arg, matching | |
| # upstream's own `pytest`) keeps pytest's rootdir there too. | |
| CIBW_TEST_SOURCES: tests benches/lorem.txt | |
| CIBW_TEST_COMMAND: python -m pytest -v | |
| - name: Check the extension module made it into the wheel | |
| run: | | |
| python3 - wheelhouse/*.whl <<'EOF' | |
| import sys, zipfile | |
| for whl in sys.argv[1:]: | |
| names = zipfile.ZipFile(whl).namelist() | |
| assert any(n.startswith("lzallright/_lzallright") and n.endswith(".so") | |
| for n in names), names | |
| print(whl, "ok") | |
| EOF | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: lzallright-${{ env.LZALLRIGHT_VERSION }}-${{ matrix.tag }}-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish lzallright ${{ 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: lzallright-${{ matrix.version }}-*-manylinux_riscv64 |