docs: Update projects #6
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/onnx/optimizer/blob/v0.4.2/.github/workflows/build-and-test.yml | |
| name: Build onnxoptimizer wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/onnxoptimizer.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-onnxoptimizer.yml' | |
| - 'docs/packages/onnxoptimizer.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-onnxoptimizer.yml' | |
| - 'docs/packages/onnxoptimizer.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: onnxoptimizer | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build onnxoptimizer ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # Upstream ships cp310/cp311/cp312-abi3 (no free-threaded wheel: setup.py's | |
| # py_limited_api targets the stable cp312 ABI unconditionally once | |
| # py_minor >= 12, with no separate Py_GIL_DISABLED build path). cp310 is | |
| # dropped: onnx (the runtime dependency) has no riscv64 wheel for it on our | |
| # registry, at any version, and no py3-none-any fallback either (it's a | |
| # compiled extension). cp311 stays: onnx ships a riscv64 cp311 wheel up to | |
| # 1.21.0, and the build-time `protobuf` dependency resolves too, via its | |
| # py3-none-any fallback wheel (no riscv64-specific protobuf build exists | |
| # below cp312, but the pure-Python one installs anywhere). | |
| include: | |
| - python: cp311 | |
| # No riscv64 onnxruntime wheel on cp311; the rest of the suite still runs. | |
| onnxruntime: '' | |
| - python: cp312 | |
| onnxruntime: onnxruntime | |
| env: | |
| ONNXOPTIMIZER_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout onnxoptimizer v${{ env.ONNXOPTIMIZER_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: onnx/optimizer | |
| ref: v${{ env.ONNXOPTIMIZER_VERSION }} | |
| submodules: recursive | |
| persist-credentials: false | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| output-dir: wheelhouse/ | |
| only: ${{ matrix.python }}-manylinux_riscv64 | |
| env: | |
| # The riscv64 manylinux image's own cmake (3.31.8) already satisfies | |
| # CMakeLists.txt's cmake_minimum_required(3.22); upstream's | |
| # CIBW_BEFORE_ALL_LINUX pip-installs a newer one only for its older | |
| # manylinux_2_28 x86_64/aarch64 images. | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| CIBW_ENVIRONMENT: >- | |
| CMAKE_ARGS=" | |
| -DONNX_USE_PROTOBUF_SHARED_LIBS=OFF | |
| -DProtobuf_USE_STATIC_LIBS=ON | |
| -DONNX_USE_LITE_PROTO=ON | |
| -DCMAKE_POLICY_VERSION_MINIMUM=3.5 | |
| " | |
| PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ | |
| CIBW_BEFORE_BUILD_LINUX: pip install protobuf | |
| # Upstream's flake8p/mypy lint step and its onnxscript/torch/torchvision | |
| # installs cover optional test paths guarded by try/except in | |
| # onnxoptimizer/test/optimizer_test.py (onnxscript itself isn't even | |
| # imported by any test); torch and torchvision have no riscv64 wheels, so | |
| # those paths are left to skip rather than installed. onnxruntime does | |
| # have a riscv64 wheel on our registry, but only from cp312 (matrix.onnxruntime). | |
| CIBW_TEST_REQUIRES: pytest pytest-xdist ${{ matrix.onnxruntime }} | |
| CIBW_TEST_COMMAND: pytest {project}/onnxoptimizer/test/ | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: onnxoptimizer-${{ env.ONNXOPTIMIZER_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish onnxoptimizer ${{ 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: onnxoptimizer-${{ matrix.version }}-*-manylinux_riscv64 |