Repository navigation
docs: Update projects #39
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/pcodec/pcodec/blob/Python_v1.0.3/.github/workflows/python_publish.yml | |
| name: Build pcodec wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/pcodec.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-pcodec.yml' | |
| - 'docs/packages/pcodec.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-pcodec.yml' | |
| - 'docs/packages/pcodec.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: pcodec | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build pcodec ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # PyO3 extension built per-interpreter (upstream ships cp3x-cp3x wheels, | |
| # no abi3). | |
| python: ["cp312", "cp313", "cp314", "cp314t"] | |
| env: | |
| PCODEC_VERSION: ${{ matrix.version }} | |
| steps: | |
| # Checked out at the workspace root: pco_python is a member of pcodec's | |
| # Cargo workspace and builds against its sibling pco/better_io crates. | |
| - name: Checkout pcodec Python_v${{ env.PCODEC_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: pcodec/pcodec | |
| ref: Python_v${{ env.PCODEC_VERSION }} | |
| persist-credentials: false | |
| - name: Stage the licence beside pco_python's pyproject.toml | |
| # maturin globs LICEN[CS]E* relative to the pyproject directory, which | |
| # in this monorepo is pco_python/ -- so upstream's published wheels | |
| # carry no licence text at all, only the classifier. | |
| run: cp LICENSE pco_python/LICENSE | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| package-dir: pco_python | |
| output-dir: wheelhouse/ | |
| # musllinux is dropped: rustup.rs ships no riscv64 musl toolchain. | |
| only: ${{ matrix.python }}-manylinux_riscv64 | |
| env: | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| # pco_python ships no [tool.cibuildwheel], so the Rust toolchain its | |
| # maturin backend needs is installed in-container here. | |
| CIBW_BEFORE_ALL_LINUX: >- | |
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
| CIBW_ENVIRONMENT_LINUX: >- | |
| PATH="$PATH:$HOME/.cargo/bin" | |
| PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ | |
| # numpy is a runtime dependency; public PyPI's newest release always | |
| # outranks our registry's version and has no riscv64 wheel, so pin | |
| # resolution to a binary to avoid a from-source numpy build. | |
| CIBW_TEST_ENVIRONMENT_LINUX: PIP_ONLY_BINARY=numpy | |
| CIBW_TEST_REQUIRES: pytest | |
| # test-sources resolves against the checkout root, not package-dir. | |
| # pco/assets holds the .pco fixture files test_standalone.py reads | |
| # via a ../../pco/assets/*.pco relative path. | |
| CIBW_TEST_SOURCES: pco_python/test pco_python/README.md pco/assets | |
| CIBW_TEST_COMMAND: >- | |
| python -c "import pcodec.pcodec as m; assert m.__file__.endswith('.so'), m.__file__" | |
| && cd pco_python && python -m pytest -v --doctest-glob=*.md test README.md | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: pcodec-${{ env.PCODEC_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish pcodec ${{ 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: pcodec-${{ matrix.version }}-*-manylinux_riscv64 |