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@v6 - name: Setup Environment uses: ./.github/actions/setup-tinygrad with: key: 'autogen' amd: 'true' llvm: '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 libdrm-dev - name: Regenerate autogen files run: | find tinygrad/runtime/autogen -type f -name "*.py" -not -path "*/amd/*" -not -name "__init__.py" -not -name "comgr.py" -not -name "metal.py" -not -name "iokit.py" -not -name "corefoundation.py" -not -name "libclang.py" -delete python3 -c "from tinygrad.runtime.autogen import opencl" python3 -c "from tinygrad.runtime.autogen import cuda, nvrtc, nvjitlink, nv_570, nv_580, nv" python3 -c "from tinygrad.runtime.autogen import comgr_3, hsa, hip, amd_gpu, sqtt, rocprof, amdgpu_kd, amdgpu_drm" python3 -c "from tinygrad.runtime.autogen.am import *" python3 -c "from tinygrad.runtime.autogen.nv_regs import *" python3 -c "from tinygrad.runtime.autogen import libc, kfd, io_uring, ib, pci, vfio" python3 -c "from tinygrad.runtime.autogen import llvm" python3 -c "from tinygrad.runtime.autogen import webgpu" python3 -c "from tinygrad.runtime.autogen import kgsl, qcom_dsp" python3 -c "from tinygrad.runtime.autogen import libusb" python3 -c "from tinygrad.runtime.autogen import mesa" python3 -c "from tinygrad.runtime.autogen import avcodec" python3 -c "from tinygrad.runtime.autogen import llvm_qcom" python3 -c "from tinygrad.runtime.autogen import mlx5" python3 -c "from tinygrad.runtime.autogen import ggml_common" REGEN=1 python3 -c "from tinygrad.runtime.autogen import libclang" - name: Check for differences run: | if ! git diff --quiet; then git diff git diff > autogen-ubuntu.patch echo "Autogen mismatch detected. Patch available at: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts" exit 1 fi - name: Upload patch artifact if: failure() uses: actions/upload-artifact@v7 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@v6 - name: Setup Environment uses: ./.github/actions/setup-tinygrad with: key: 'autogen-mac' llvm: 'true' - name: Regenerate autogen files run: | rm tinygrad/runtime/autogen/metal.py tinygrad/runtime/autogen/iokit.py tinygrad/runtime/autogen/corefoundation.py python3 -c "from tinygrad.runtime.autogen import metal, iokit, corefoundation" - name: Check for differences run: | if ! git diff --quiet; then git diff git diff > autogen-macos.patch echo "Autogen mismatch detected. Patch available at: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts" exit 1 fi - name: Upload patch artifact if: failure() uses: actions/upload-artifact@v7 with: name: autogen-macos-patch path: autogen-macos.patch autogen-comgr-2: name: In-tree Autogen (comgr 2) runs-on: ubuntu-24.04 timeout-minutes: 15 steps: - name: Checkout Code uses: actions/checkout@v6 - name: Setup Environment uses: ./.github/actions/setup-tinygrad with: key: 'autogen-comgr' - 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-comgr2.patch echo "Autogen mismatch detected. Patch available at: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts" exit 1 fi - name: Upload patch artifact if: failure() uses: actions/upload-artifact@v7 with: name: autogen-comgr2-patch path: autogen-comgr2.patch