docs: Update projects (#2133) #13
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 upstream's own wheel build at this tag: | |
| # https://github.com/pyocd/cmsis-pack-manager/blob/v0.6.0/.github/workflows/ci-build-wheel.yml | |
| name: Build cmsis-pack-manager wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/cmsis-pack-manager.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-cmsis-pack-manager.yml' | |
| - 'docs/packages/cmsis-pack-manager.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-cmsis-pack-manager.yml' | |
| - 'docs/packages/cmsis-pack-manager.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: cmsis-pack-manager | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build cmsis-pack-manager ${{ matrix.version }} py3-none-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 180 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| env: | |
| CMSIS_PACK_MANAGER_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout cmsis-pack-manager ${{ env.CMSIS_PACK_MANAGER_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: pyocd/cmsis-pack-manager | |
| ref: v${{ env.CMSIS_PACK_MANAGER_VERSION }} | |
| persist-credentials: false | |
| - uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| output-dir: wheelhouse/ | |
| env: | |
| # maturin's cffi bindings reach the Rust cdylib through cffi's ABI mode, so | |
| # the wheel is py3-none: one build serves every interpreter, and the further | |
| # identifiers only re-run the test command against it. | |
| CIBW_BUILD: cp312-manylinux_riscv64 cp313-manylinux_riscv64 cp314-manylinux_riscv64 cp314t-manylinux_riscv64 | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| # Upstream also installs libffi-devel, libatomic and openssl-devel here; the | |
| # first two the image already ships, and the crate graph uses rustls. | |
| CIBW_BEFORE_ALL_LINUX: > | |
| curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain 1.71.1 --profile=minimal -y | |
| CIBW_ENVIRONMENT: >- | |
| PATH="$PATH:$HOME/.cargo/bin" | |
| PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ | |
| CIBW_TEST_SOURCES: tests pyproject.toml | |
| CIBW_TEST_EXTRAS: test | |
| # hypothesis' newest release has no free-threaded riscv64 wheel, and pip | |
| # resolves by version, not by what has one; ours is a release older. | |
| CIBW_TEST_ENVIRONMENT: PIP_ONLY_BINARY=hypothesis | |
| CIBW_TEST_COMMAND: pytest --cache-clear | |
| - name: Check the wheel carries the Rust cdylib | |
| run: | | |
| python3 - wheelhouse/*.whl <<'EOF' | |
| import sys, zipfile | |
| for whl in sys.argv[1:]: | |
| names = zipfile.ZipFile(whl).namelist() | |
| assert any( | |
| n.endswith("cmsis_pack_manager/libcmsis_pack_manager.so") for n in names | |
| ), names | |
| print(whl, "ok") | |
| EOF | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: cmsis-pack-manager-${{ env.CMSIS_PACK_MANAGER_VERSION }}-py3-none-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish cmsis-pack-manager ${{ 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: cmsis-pack-manager-${{ matrix.version }}-py3-none-manylinux_riscv64 |