docs: Update projects #47
Workflow file for this run
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 | |
| --- | |
| # SQLAlchemy is pure-Python with *optional* Cython speedups; PyPI ships a compiled | |
| # wheel per interpreter for every arch but riscv64. sdist -> bdist, inheriting | |
| # upstream's [tool.cibuildwheel] test config from the sdist (as build-apache-tvm-ffi.yml). | |
| # https://github.com/sqlalchemy/sqlalchemy/blob/rel_2_0_52/.github/workflows/create-wheels.yaml | |
| name: Build sqlalchemy wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/sqlalchemy.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-sqlalchemy.yml' | |
| - 'docs/packages/sqlalchemy.yaml' | |
| - 'patches/sqlalchemy/**' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-sqlalchemy.yml' | |
| - 'docs/packages/sqlalchemy.yaml' | |
| - 'patches/sqlalchemy/**' | |
| 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: sqlalchemy | |
| version: ${{ inputs.version }} | |
| build_sdist: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| name: Build sqlalchemy ${{ matrix.version }} sdist | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| env: | |
| SQLALCHEMY_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Compute git tag | |
| id: tag | |
| # SQLAlchemy's tags are rel_X_Y_Z, not the PyPI version. | |
| run: echo "ref=rel_$(echo "$SQLALCHEMY_VERSION" | tr . _)" >> "$GITHUB_OUTPUT" | |
| - name: Checkout SQLAlchemy ${{ steps.tag.outputs.ref }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: sqlalchemy/sqlalchemy | |
| ref: ${{ steps.tag.outputs.ref }} | |
| persist-credentials: false | |
| - name: Checkout python-wheels | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| path: python-wheels | |
| persist-credentials: false | |
| - name: Install Python | |
| uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 | |
| with: | |
| python-version: '3.12' | |
| activate-environment: true | |
| enable-cache: false | |
| # ConcurrentAutomapTest.test_concurrent_automaps_w_configure is a real | |
| # thread-stress race in the test itself, not a riscv64 build defect; see | |
| # patches/sqlalchemy/${{ env.SQLALCHEMY_VERSION }} (CLAUDE.md gotcha 38). | |
| - name: Patch SQLAlchemy source | |
| run: git apply python-wheels/patches/sqlalchemy/${{ env.SQLALCHEMY_VERSION }}/*.patch | |
| - name: Build sdist | |
| id: sdist | |
| run: | | |
| set -eux | |
| # Release branches keep tag_build=dev in setup.cfg -> wheels get a .dev0 | |
| # suffix; upstream strips it at release, so must we (CLAUDE.md gotcha 22). | |
| sed -i '/tag_build = dev/d' setup.cfg | |
| uv pip install build twine | |
| python -m build --sdist | |
| twine check dist/* | |
| - name: Upload sdist artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: sqlalchemy-${{ env.SQLALCHEMY_VERSION }}-sdist | |
| path: dist/*.tar.gz | |
| if-no-files-found: error | |
| build_wheels: | |
| needs: [setup, build_sdist] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build sqlalchemy ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| permissions: | |
| contents: read | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # cyextension is a plain per-interpreter C ext (not abi3), so one wheel each. | |
| python: [cp312, cp313, cp314, cp314t] | |
| env: | |
| SQLALCHEMY_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Download sdist | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: sqlalchemy-${{ env.SQLALCHEMY_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_ARCHS: riscv64 # override pyproject's x86_64+aarch64 pin | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| # Extensions are optional=; force the build to fail rather than silently | |
| # ship a mislabeled pure-Python wheel (CLAUDE.md gotcha 20). | |
| CIBW_ENVIRONMENT: REQUIRE_SQLALCHEMY_CEXT=1 | |
| # Upstream's test-command relies on `python -s` to import the built wheel | |
| # over the source tree, but -s doesn't reach xdist -n workers; the env var | |
| # does, so workers test the compiled wheel (CLAUDE.md gotcha 21). | |
| CIBW_TEST_ENVIRONMENT: PYTHONNOUSERSITE=1 | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: sqlalchemy-${{ env.SQLALCHEMY_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: ./wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish sqlalchemy ${{ matrix.version }} | |
| needs: [setup, build_sdist, 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: sqlalchemy-${{ matrix.version }}-*-manylinux_riscv64 |