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 < 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