From a34a4fe8a2964e641a89c937ead7adc41691da8c Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Thu, 5 Mar 2026 05:31:10 -0500 Subject: [PATCH 1/2] ci: add actionlint to GitHub Actions checks --- .github/workflows/presubmit.yml | 52 +++++++++++++++++++++--------- .github/workflows/testing-make.yml | 10 +++--- 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 104349c76ae7..006de1aaed12 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -12,7 +12,7 @@ on: - '**.cmake' - 'run-clang-tidy.sh' - 'run-clang-format.sh' - - '.github/workflows/presubmit.yml' + - '.github/workflows/**' - '**.clang-tidy' permissions: @@ -34,17 +34,19 @@ jobs: CLANG_FORMAT_LLVM_INSTALL_DIR: /opt/homebrew/opt/llvm@21 - uses: astral-sh/ruff-action@v3 + check_clang_tidy: name: Check clang-tidy runs-on: macos-14 steps: - uses: actions/checkout@v4 - name: Install clang-tidy - run: brew install llvm@21 ninja lld@21 + run: brew install llvm@21 lld@21 - name: Run clang-tidy run: ./run-clang-tidy.sh env: CLANG_TIDY_LLVM_INSTALL_DIR: /opt/homebrew/opt/llvm@21 + check_cmake_file_lists: name: Check CMake file lists runs-on: ubuntu-22.04 @@ -52,16 +54,36 @@ jobs: - uses: actions/checkout@v4 - name: Run test sources check run: | - shopt -s nullglob - (cd test/autoschedulers/adams2019 && comm -23 <(ls *.{c,cpp} | sort) <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) | tee missing_files && [ ! -s missing_files ]) - (cd test/autoschedulers/anderson2021 && comm -23 <(ls *.{c,cpp} | sort) <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) | tee missing_files && [ ! -s missing_files ]) - (cd test/autoschedulers/li2018 && comm -23 <(ls *.{c,cpp} | sort) <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) | tee missing_files && [ ! -s missing_files ]) - (cd test/autoschedulers/mullapudi2016 && comm -23 <(ls *.{c,cpp} | sort) <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) | tee missing_files && [ ! -s missing_files ]) - (cd test/correctness && comm -23 <(ls *.{c,cpp} | sort) <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) | tee missing_files && [ ! -s missing_files ]) - (cd test/error && comm -23 <(ls *.{c,cpp} | sort) <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) | tee missing_files && [ ! -s missing_files ]) - (cd test/failing_with_issue && comm -23 <(ls *.{c,cpp} | sort) <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) | tee missing_files && [ ! -s missing_files ]) - (cd test/fuzz && comm -23 <(ls *.{c,cpp} | sort) <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) | tee missing_files && [ ! -s missing_files ]) - (cd test/generator && comm -23 <(ls *.{c,cpp} | sort) <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) | tee missing_files && [ ! -s missing_files ]) - (cd test/performance && comm -23 <(ls *.{c,cpp} | sort) <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) | tee missing_files && [ ! -s missing_files ]) - (cd test/runtime && comm -23 <(ls *.{c,cpp} | sort) <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) | tee missing_files && [ ! -s missing_files ]) - (cd test/warning && comm -23 <(ls *.{c,cpp} | sort) <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) | tee missing_files && [ ! -s missing_files ]) + check_dir() { + local dir="$1" + ( + cd "$dir" && + comm -23 \ + <(find . -maxdepth 1 -type f \( -name '*.c' -o -name '*.cpp' \) -printf '%f\n' | sort) \ + <(grep -P '^\s*#?\s*[A-Za-z0-9_.]+$' CMakeLists.txt | tr -d '# ' | sort) \ + | tee missing_files && + [ ! -s missing_files ] + ) + } + + check_dir test/autoschedulers/adams2019 + check_dir test/autoschedulers/anderson2021 + check_dir test/autoschedulers/li2018 + check_dir test/autoschedulers/mullapudi2016 + check_dir test/correctness + check_dir test/error + check_dir test/failing_with_issue + check_dir test/fuzz + check_dir test/generator + check_dir test/performance + check_dir test/runtime + check_dir test/warning + + check_gha_workflows: + name: Check GitHub Actions workflows + runs-on: ubuntu-slim + steps: + - uses: actions/checkout@v4 + + - name: actionlint + uses: raven-actions/actionlint@v2 diff --git a/.github/workflows/testing-make.yml b/.github/workflows/testing-make.yml index ccd6c600f851..4a82e2be9ec9 100644 --- a/.github/workflows/testing-make.yml +++ b/.github/workflows/testing-make.yml @@ -34,21 +34,21 @@ jobs: run: | if [ "$RUNNER_OS" = "Linux" ]; then wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc - echo "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-$LLVM_VERSION main" | sudo tee /etc/apt/sources.list.d/llvm-$LLVM_VERSION.list + echo "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-${LLVM_VERSION} main" | sudo tee "/etc/apt/sources.list.d/llvm-${LLVM_VERSION}.list" sudo apt-get update sudo apt-get install -y \ build-essential pkg-config libpng-dev libjpeg-turbo8-dev \ - llvm-$LLVM_VERSION-dev clang-$LLVM_VERSION lld-$LLVM_VERSION liblld-$LLVM_VERSION-dev + "llvm-${LLVM_VERSION}-dev" "clang-${LLVM_VERSION}" "lld-${LLVM_VERSION}" "liblld-${LLVM_VERSION}-dev" elif [ "$RUNNER_OS" = "macOS" ]; then - brew install llvm@$LLVM_VERSION lld@$LLVM_VERSION libjpeg-turbo libpng pkgconf protobuf + brew install "llvm@${LLVM_VERSION}" "lld@${LLVM_VERSION}" libjpeg-turbo libpng pkgconf protobuf fi - name: Set up environment run: | if [ "$RUNNER_OS" = "Linux" ]; then - echo "LLVM_CONFIG=llvm-config-$LLVM_VERSION" | tee -a "$GITHUB_ENV" + echo "LLVM_CONFIG=llvm-config-${LLVM_VERSION}" | tee -a "$GITHUB_ENV" elif [ "$RUNNER_OS" = "macOS" ]; then - echo "LLVM_CONFIG=$(brew --prefix llvm@$LLVM_VERSION)/bin/llvm-config" | tee -a "$GITHUB_ENV" + echo "LLVM_CONFIG=$(brew --prefix "llvm@${LLVM_VERSION}")/bin/llvm-config" | tee -a "$GITHUB_ENV" fi echo "MAKEFLAGS=-j $(getconf _NPROCESSORS_ONLN)" | tee -a "$GITHUB_ENV" From 0a0da2777e874abb09ab8772c765fe1d42e1414f Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Thu, 5 Mar 2026 16:56:52 -0500 Subject: [PATCH 2/2] Fix LLD find hint for Homebrew pinned versions --- cmake/FindHalide_LLVM.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/FindHalide_LLVM.cmake b/cmake/FindHalide_LLVM.cmake index fb30f5d4df1e..055003cc244a 100644 --- a/cmake/FindHalide_LLVM.cmake +++ b/cmake/FindHalide_LLVM.cmake @@ -73,7 +73,7 @@ if (LLVM_FOUND) # Homebrew split the LLVM and LLD packages as of version 19, so # having multiple LLVM versions installed leads to the newest # LLD being found without this hint. - "${LLVM_INSTALL_PREFIX}/../lld@${LLVM_VERSION_MAJOR}" + "${LLVM_DIR}/../../../../lld@${LLVM_VERSION_MAJOR}" "${LLVM_DIR}/../lld" "${LLVM_DIR}/../lib/cmake/lld" )