docs: Update projects #54
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`/`deploy` jobs of | |
| # https://github.com/harfbuzz/uharfbuzz/blob/v0.56.0/.github/workflows/ci.yml | |
| name: Build uharfbuzz wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/uharfbuzz.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-uharfbuzz.yml' | |
| - 'docs/packages/uharfbuzz.yaml' | |
| - 'patches/uharfbuzz/**' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-uharfbuzz.yml' | |
| - 'docs/packages/uharfbuzz.yaml' | |
| - 'patches/uharfbuzz/**' | |
| 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: uharfbuzz | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build uharfbuzz ${{ matrix.version }} cp310-abi3-${{ matrix.libc }}_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # abi3 (setup.py: bdist_wheel py_limited_api="cp310"), so the single | |
| # cp310 build (the abi3 floor, gotcha 96) is loadable on every newer | |
| # CPython; upstream ships no free-threaded wheel (pyproject.toml | |
| # skips cp3??t) so there is no second build. | |
| libc: [manylinux, musllinux] | |
| env: | |
| UHARFBUZZ_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout uharfbuzz v${{ env.UHARFBUZZ_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: harfbuzz/uharfbuzz | |
| ref: v${{ env.UHARFBUZZ_VERSION }} | |
| submodules: recursive | |
| persist-credentials: false | |
| - name: Checkout python-wheels | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| path: python-wheels | |
| persist-credentials: false | |
| # The extension statically links the vendored HarfBuzz C++ sources | |
| # (harfbuzz/, a git submodule); their licence isn't otherwise shipped | |
| # in the wheel. See patches/uharfbuzz/0.56.0 for details. | |
| - name: Patch uharfbuzz source | |
| run: git apply python-wheels/patches/uharfbuzz/${{ env.UHARFBUZZ_VERSION }}/00*.patch | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| output-dir: wheelhouse/ | |
| env: | |
| CIBW_ARCHS: riscv64 | |
| CIBW_BUILD: cp310-${{ matrix.libc }}_riscv64 | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| CIBW_MUSLLINUX_RISCV64_IMAGE: ${{ env.MUSLLINUX_RISCV64_IMAGE }} | |
| # The riscv64-compat patch leaves the checkout dirty relative to the | |
| # tag, so setuptools_scm would otherwise compute a dev version. | |
| CIBW_ENVIRONMENT: SETUPTOOLS_SCM_PRETEND_VERSION=${{ env.UHARFBUZZ_VERSION }} | |
| # Upstream's own repair-wheel-command pipes into a pipx-installed | |
| # abi3audit, which the riscv64 image doesn't carry (gotcha 217); | |
| # cibuildwheel's own default audit-command already abi3audits every | |
| # abi3-tagged wheel natively once this repair step finishes. | |
| CIBW_REPAIR_WHEEL_COMMAND_LINUX: auditwheel repair -w {dest_dir} {wheel} | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: uharfbuzz-${{ env.UHARFBUZZ_VERSION }}-cp310-abi3-${{ matrix.libc }}_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish uharfbuzz ${{ 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: uharfbuzz-${{ matrix.version }}-*riscv64 |