docs: Update projects #45
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/jax-ml/ml_dtypes/blob/v0.6.0/.github/workflows/wheels.yml | |
| name: Build ml-dtypes wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/ml-dtypes.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-ml-dtypes.yml' | |
| - 'docs/packages/ml-dtypes.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-ml-dtypes.yml' | |
| - 'docs/packages/ml-dtypes.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: ml-dtypes | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build ml-dtypes ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 120 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| python: | |
| - "cp312" | |
| - "cp313" | |
| - "cp314" | |
| - "cp314t" | |
| env: | |
| ML_DTYPES_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout ml_dtypes ${{ env.ML_DTYPES_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: jax-ml/ml_dtypes | |
| ref: v${{ env.ML_DTYPES_VERSION }} | |
| # third_party/eigen is a submodule and the extension compiles against it. | |
| 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: | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| CIBW_ENVIRONMENT: PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ PIP_ONLY_BINARY=numpy | |
| CIBW_TEST_REQUIRES: absl-py pytest pytest-xdist | |
| # riscv64's FP-invalid status flag diverges on casts between ml_dtypes' | |
| # non-IEEE custom float types (same class of divergence the project's own | |
| # CMakeLists.txt documents for Mac ARM); ml_dtypes' filterwarnings=error | |
| # promotes it to a hard failure even though the underlying assertions pass. | |
| CIBW_TEST_COMMAND: pytest -n auto -W "ignore:invalid value encountered in cast:RuntimeWarning" {project} | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: ml-dtypes-${{ env.ML_DTYPES_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| eigen_sources: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Collect eigen sources | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| env: | |
| ML_DTYPES_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout ml_dtypes ${{ env.ML_DTYPES_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: jax-ml/ml_dtypes | |
| ref: v${{ env.ML_DTYPES_VERSION }} | |
| submodules: recursive | |
| persist-credentials: false | |
| # The extension compiles MPL-2.0 eigen headers into the wheel, so the | |
| # matching sources are published next to it. | |
| - run: tar cf gpl-sources.tar third_party/eigen | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: ml-dtypes-${{ env.ML_DTYPES_VERSION }}-gpl-sources | |
| path: gpl-sources.tar | |
| if-no-files-found: error | |
| publish: | |
| name: Publish ml-dtypes ${{ matrix.version }} | |
| needs: [setup, build_wheels, eigen_sources] | |
| 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: ml-dtypes-${{ matrix.version }}-*-manylinux_riscv64 | |
| gpl-sources-artifact: ml-dtypes-${{ matrix.version }}-gpl-sources | |
| gpl-sources-description: eigen (MPL-2.0) |