docs: Update projects #160
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 `make_sdist`/`build_wheels` jobs of | |
| # https://github.com/scikit-hep/awkward/blob/cef1a524fb52896b86ef505526f2fe4689f5e217/.github/workflows/reusable-build-wheels.yml | |
| name: Build awkward-cpp wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/awkward-cpp.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-awkward-cpp.yml' | |
| - 'docs/packages/awkward-cpp.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-awkward-cpp.yml' | |
| - 'docs/packages/awkward-cpp.yaml' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read # to fetch code (actions/checkout) | |
| env: | |
| # awkward-cpp is released from the scikit-hep/awkward monorepo by a | |
| # workflow_dispatch-only job (deploy-cpp.yml) that never pushes a git tag | |
| # (gotcha 103). This is the version-bump commit ("awkward 2.13.0 and | |
| # awkward-cpp 56"), verified byte-identical to the PyPI sdist. Update | |
| # alongside AWKWARD_CPP_VERSION. | |
| AWKWARD_CPP_REF: cef1a524fb52896b86ef505526f2fe4689f5e217 | |
| MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64 | |
| jobs: | |
| setup: | |
| uses: $/.github/workflows/_setup.yml | |
| with: | |
| package: awkward-cpp | |
| version: ${{ inputs.version }} | |
| build_sdist: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # The sdist is architecture-independent; build it once on x86 instead of | |
| # burning a scarce riscv runner (CLAUDE.md gotcha 4). | |
| name: Build awkward-cpp ${{ matrix.version }} sdist | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| env: | |
| AWKWARD_CPP_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout scikit-hep/awkward ${{ env.AWKWARD_CPP_REF }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: scikit-hep/awkward | |
| ref: ${{ env.AWKWARD_CPP_REF }} | |
| # rapidjson is a submodule of awkward-cpp/, and its LICENSE is one of | |
| # the project's declared license-files. | |
| submodules: true | |
| persist-credentials: false | |
| - name: Prepare build files | |
| run: pipx run nox -s prepare | |
| - name: Build awkward-cpp sdist | |
| id: sdist | |
| run: | | |
| pipx run build --sdist awkward-cpp | |
| pipx run twine check awkward-cpp/dist/* | |
| - name: Upload sdist artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: awkward-cpp-${{ env.AWKWARD_CPP_VERSION }}-sdist | |
| path: awkward-cpp/dist/*.tar.gz | |
| if-no-files-found: error | |
| build_wheels: | |
| needs: [setup, build_sdist] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build awkward-cpp ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 180 | |
| permissions: | |
| contents: read | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| python: [cp312, cp313, cp314, cp314t] | |
| env: | |
| AWKWARD_CPP_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Download sdist | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: awkward-cpp-${{ env.AWKWARD_CPP_VERSION }}-sdist | |
| path: dist/ | |
| - id: sdist_path | |
| run: echo "path=$(echo dist/*.tar.gz)" >> "$GITHUB_OUTPUT" | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| package-dir: ${{ steps.sdist_path.outputs.path }} | |
| env: | |
| CIBW_BUILD: ${{ matrix.python }}-manylinux_riscv64 | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| # Override upstream's build-frontend = "build[uv]": cibuildwheel's | |
| # audit step makes a venv on the host and asserts a host `uv` | |
| # exists, which this self-hosted runner has none of (gotcha 13). | |
| CIBW_BUILD_FRONTEND: build | |
| CIBW_ENVIRONMENT: >- | |
| PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ | |
| PIP_ONLY_BINARY=cmake,numpy | |
| CIBW_TEST_REQUIRES: pytest>=6 | |
| CIBW_TEST_SOURCES: >- | |
| tests-cpu-kernels tests-cpu-kernels-explicit | |
| tests-spec tests-spec-explicit | |
| # Upstream's own test-command also runs {project}/tests, which is | |
| # the parent `awkward` package's suite (imports `awkward`, not | |
| # awkward_cpp) - out of scope here since we only build awkward-cpp | |
| # and `awkward` has no riscv64 wheel of its own. | |
| CIBW_TEST_COMMAND: >- | |
| pytest {package}/tests-cpu-kernels {package}/tests-cpu-kernels-explicit | |
| {package}/tests-spec {package}/tests-spec-explicit | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: awkward-cpp-${{ env.AWKWARD_CPP_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: ./wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish awkward-cpp ${{ 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: awkward-cpp-${{ matrix.version }}-*-manylinux_riscv64 |