tilelang: Add version 0.1.14 #16
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 | |
| --- | |
| # This workflow is based on upstream's own wheel build/publish setup: | |
| # https://github.com/tile-ai/tilelang/blob/v0.1.13/.github/workflows/dist.yml | |
| name: Build tilelang wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/tilelang.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-tilelang.yml' | |
| - 'docs/packages/tilelang.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-tilelang.yml' | |
| - 'docs/packages/tilelang.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: tilelang | |
| 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 just packages the source tree plus the vendored TVM/CUTLASS/ | |
| # composable_kernel submodules (see pyproject's [tool.scikit-build.sdist]); | |
| # build it once on x86 instead of burning a scarce riscv runner (gotcha 4). | |
| name: Build tilelang ${{ matrix.version }} sdist | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| env: | |
| TILELANG_VERSION: ${{ matrix.version }} | |
| # Otherwise the sdist's version carries a dirty git-hash suffix that the | |
| # later wheel build (no .git in the extracted sdist) can never reproduce. | |
| NO_VERSION_LABEL: 'ON' | |
| steps: | |
| - name: Checkout tilelang v${{ env.TILELANG_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: tile-ai/tilelang | |
| ref: v${{ env.TILELANG_VERSION }} | |
| submodules: recursive | |
| fetch-depth: 1 | |
| persist-credentials: false | |
| - name: Checkout python-wheels | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| path: python-wheels | |
| persist-credentials: false | |
| - name: Patch tilelang source | |
| run: | | |
| git apply python-wheels/patches/tilelang/${{ env.TILELANG_VERSION }}/00*.patch | |
| - name: Setup Python and uv | |
| uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 | |
| with: | |
| python-version: '3.12' | |
| activate-environment: true | |
| enable-cache: false | |
| - name: Build sdist | |
| id: sdist | |
| run: | | |
| uv run --no-project --with=build -m -- build --sdist --outdir=dist | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: tilelang-${{ env.TILELANG_VERSION }}-sdist | |
| path: dist/*.tar.gz | |
| if-no-files-found: error | |
| build_wheels: | |
| needs: [setup, build_sdist] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build tilelang ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 600 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # pyproject sets wheel.py-api = "cp38" (upstream ships a single | |
| # cp38-abi3 wheel, no free-threaded build - dist.yml: "let user to | |
| # build from source for now"), so one build covers every supported | |
| # interpreter. Build with cp312: tilelang hard-depends on | |
| # apache-tvm-ffi at runtime, whose own riscv64 wheel is cp312-abi3+, | |
| # so nothing below cp312 could import the result on riscv64 anyway. | |
| python: [cp312] | |
| env: | |
| TILELANG_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Download sdist | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: tilelang-${{ env.TILELANG_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 }}-* | |
| CIBW_ARCHS: riscv64 | |
| CIBW_SKIP: '*-musllinux_*' | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| CIBW_BUILD_FRONTEND: build | |
| # Upstream's own [tool.cibuildwheel.linux] always sets USE_CUDA=ON | |
| # and USE_ROCM=ON and installs a CUDA toolkit via dnf; override for | |
| # the CPU-only build upstream documents but never ships itself | |
| # (docs/get_started/Installation.md: "USE_CUDA: ... set to OFF to | |
| # build a CPU version", "USE_LLVM: enable LLVM backend for CPU | |
| # codegen"). USE_LLVM=ON auto-detects llvm-config from PATH. | |
| CIBW_BEFORE_ALL_LINUX: dnf -y --enablerepo=crb install llvm-devel | |
| CIBW_ENVIRONMENT_LINUX: >- | |
| USE_CUDA=OFF USE_ROCM=OFF USE_LLVM=ON | |
| PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ | |
| UV_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ | |
| UV_INDEX_STRATEGY=unsafe-best-match | |
| CIBW_TEST_ENVIRONMENT_LINUX: >- | |
| PIP_ONLY_BINARY=:all: | |
| UV_ONLY_BINARY=:all: | |
| # Mirror upstream's own repair-wheel-command, dropping the | |
| # CUDA-only excludes (no libcuda/CUDA toolkit in a CPU-only build). | |
| # libtvm_ffi.so/libz3.so* come from the apache-tvm-ffi/z3-solver | |
| # dependency wheels, not bundled here. | |
| CIBW_REPAIR_WHEEL_COMMAND_LINUX: >- | |
| auditwheel -v repair --exclude libtvm_ffi.so --exclude 'libz3.so*' -w {dest_dir} {wheel} | |
| CIBW_TEST_COMMAND: 'python -c "import tilelang; print(tilelang.__version__)"' | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: tilelang-${{ env.TILELANG_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: ./wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish tilelang ${{ 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 | |
| with: | |
| artifact-pattern: tilelang-${{ matrix.version }}-*-manylinux_riscv64 |