mirror of
https://github.com/tinygrad/tinygrad.git
synced 2026-01-07 22:23:55 -05:00
* simplify autogen workflow and add avcodec verification - Consolidate all regeneration into single steps (delete + import) - Remove continue-on-error and individual diff checks - Use git diff at end to catch all differences - Show artifact URL in failure message - Add avcodec.py verification 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * patch avcodec --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
147 lines
5.6 KiB
YAML
147 lines
5.6 KiB
YAML
name: Autogen
|
|
env:
|
|
# increment this when downloads substantially change to avoid the internet
|
|
CACHE_VERSION: '13'
|
|
CAPTURE_PROCESS_REPLAY: 1
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
PYTHONPATH: ${{ github.workspace }}
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
paths:
|
|
- 'tinygrad/runtime/autogen/**/*'
|
|
- 'tinygrad/runtime/support/autogen.py'
|
|
- '.github/workflows/autogen.yml'
|
|
workflow_dispatch:
|
|
paths:
|
|
- 'tinygrad/runtime/autogen/**/*'
|
|
- 'tinygrad/runtime/support/autogen.py'
|
|
- '.github/workflows/autogen.yml'
|
|
|
|
jobs:
|
|
autogen:
|
|
name: In-tree Autogen
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 15
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
- name: Setup Environment
|
|
uses: ./.github/actions/setup-tinygrad
|
|
with:
|
|
opencl: 'true'
|
|
amd: 'true'
|
|
cuda: 'true'
|
|
llvm: 'true'
|
|
webgpu: 'true'
|
|
mesa: 'true'
|
|
pydeps: 'pyyaml mako'
|
|
- name: Install autogen support packages
|
|
run: sudo apt-get install -y --no-install-recommends libclang-20-dev llvm-20-dev hip-dev libusb-1.0-0-dev
|
|
- name: Regenerate autogen files
|
|
run: |
|
|
rm tinygrad/runtime/autogen/opencl.py
|
|
python3 -c "from tinygrad.runtime.autogen import opencl"
|
|
rm tinygrad/runtime/autogen/{cuda,nvrtc,nvjitlink,nv_570,nv}.py
|
|
python3 -c "from tinygrad.runtime.autogen import cuda, nvrtc, nvjitlink, nv_570, nv"
|
|
rm tinygrad/runtime/autogen/{comgr,hsa,hip,amd_gpu,sqtt,rocprof}.py
|
|
python3 -c "from tinygrad.runtime.autogen import comgr, hsa, hip, amd_gpu, sqtt, rocprof"
|
|
rm tinygrad/runtime/autogen/am/{am,pm4_soc15,pm4_nv,sdma_4_0_0,sdma_5_0_0,sdma_6_0_0,smu_v13_0_0,smu_v14_0_2}.py
|
|
python3 -c "from tinygrad.runtime.autogen.am import am, pm4_soc15, pm4_nv, sdma_4_0_0, sdma_5_0_0, sdma_6_0_0, smu_v13_0_0, smu_v14_0_2"
|
|
rm tinygrad/runtime/autogen/{libc,kfd,io_uring,ib,pci,vfio}.py
|
|
python3 -c "from tinygrad.runtime.autogen import libc, kfd, io_uring, ib, pci, vfio"
|
|
rm tinygrad/runtime/autogen/llvm.py
|
|
python3 -c "from tinygrad.runtime.autogen import llvm"
|
|
rm tinygrad/runtime/autogen/webgpu.py
|
|
python3 -c "from tinygrad.runtime.autogen import webgpu"
|
|
rm tinygrad/runtime/autogen/{kgsl,qcom_dsp}.py
|
|
python3 -c "from tinygrad.runtime.autogen import kgsl, qcom_dsp"
|
|
rm tinygrad/runtime/autogen/libusb.py
|
|
python3 -c "from tinygrad.runtime.autogen import libusb"
|
|
rm tinygrad/runtime/autogen/mesa.py
|
|
python3 -c "from tinygrad.runtime.autogen import mesa"
|
|
rm tinygrad/runtime/autogen/avcodec.py
|
|
python3 -c "from tinygrad.runtime.autogen import avcodec"
|
|
REGEN=1 python3 -c "from tinygrad.runtime.autogen import libclang"
|
|
- name: Check for differences
|
|
run: |
|
|
if ! git diff --quiet; then
|
|
git diff > autogen-ubuntu.patch
|
|
echo "Autogen files out of date. Apply patch from: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts"
|
|
exit 1
|
|
fi
|
|
- name: Upload patch artifact
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: autogen-ubuntu-patch
|
|
path: autogen-ubuntu.patch
|
|
|
|
autogen-mac:
|
|
name: In-tree Autogen (macos)
|
|
runs-on: macos-14
|
|
timeout-minutes: 15
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
- name: Setup Environment
|
|
uses: ./.github/actions/setup-tinygrad
|
|
with:
|
|
llvm: 'true'
|
|
- name: Regenerate autogen files
|
|
run: |
|
|
rm tinygrad/runtime/autogen/metal.py
|
|
LIBCLANG_PATH=/opt/homebrew/opt/llvm@20/lib/libclang.dylib python3 -c "from tinygrad.runtime.autogen import metal"
|
|
- name: Check for differences
|
|
run: |
|
|
if ! git diff --quiet; then
|
|
git diff > autogen-macos.patch
|
|
echo "Autogen files out of date. Apply patch from: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts"
|
|
exit 1
|
|
fi
|
|
- name: Upload patch artifact
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: autogen-macos-patch
|
|
path: autogen-macos.patch
|
|
|
|
autogen-comgr-3:
|
|
name: In-tree Autogen (comgr 3)
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 15
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
- name: Setup Environment
|
|
uses: ./.github/actions/setup-tinygrad
|
|
- name: Install autogen support packages
|
|
run: |
|
|
wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null
|
|
sudo tee /etc/apt/sources.list.d/rocm.list <<EOF
|
|
deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/6.4 $(lsb_release -cs) main
|
|
EOF
|
|
echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' | sudo tee /etc/apt/preferences.d/rocm-pin-600
|
|
sudo apt -qq update || true
|
|
sudo apt-get install -y --no-install-recommends libclang-20-dev comgr
|
|
- name: Regenerate autogen files
|
|
run: |
|
|
rm tinygrad/runtime/autogen/comgr_3.py
|
|
python3 -c "from tinygrad.runtime.autogen import comgr_3"
|
|
- name: Check for differences
|
|
run: |
|
|
if ! git diff --quiet; then
|
|
git diff > autogen-comgr3.patch
|
|
echo "Autogen files out of date. Apply patch from: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts"
|
|
exit 1
|
|
fi
|
|
- name: Upload patch artifact
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: autogen-comgr3-patch
|
|
path: autogen-comgr3.patch
|