Skip to content

ExprInterpreter.

ExprInterpreter. #240

name: Windows
on:
pull_request:
types: [ opened, synchronize, reopened ]
paths-ignore:
- "doc/**"
- "README.md"
- "CODE_OF_CONDUCT.md"
- "LICENSE.txt"
- ".gitignore"
- ".gitattributes"
- ".gitmodules"
- ".lldbinit"
- ".github/**"
- "!.github/workflows/testing-windows.yml"
- "packaging/**"
- "Makefile"
- "Makefile.inc"
- 'run-clang-tidy.sh'
- '**.clang-tidy'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
permissions:
contents: read
defaults:
run:
shell: bash
jobs:
windows:
if: "!contains(github.event.pull_request.labels.*.name, 'skip_buildbots')"
name: windows-${{ matrix.bits }} / ${{ matrix.uv_group }}
runs-on: windows-2022
strategy:
fail-fast: false
matrix:
bits: [ "32" ] # Intentionally not 64, as we haven't configured self-hosted runners for it yet.
uv_group: [ "ci-llvm-main", "ci-llvm-22", "ci-llvm-21" ]
include:
- bits: 32
arch: x86
python: cpython-3.10.20-windows-x86-none
# - bits: 64 # Intentionally not 64, as we haven't configured self-hosted runners for it yet.
# arch: x64
# python: cpython-3.10.20-windows-x86_64-none
steps:
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v7
- uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.arch }}
- name: Sync CI environment
run: |
# uv uses the host platform for dependency resolution regardless of the target
# Python, so on Windows it would download x86_64 halide-llvm (~250MB) even for
# a 32-bit build. Instead: read the pinned version from the lockfile (no download),
# sync only ci-base (no LLVM), then fetch the correct win32 wheel directly.
LLVM_VER=$(uv export --group '${{ matrix.uv_group }}' --no-emit-project \
| awk -F'==' '/^halide-llvm==/ { gsub(/ .*/, "", $2); print $2 }')
uv sync --python '${{ matrix.python }}' --group ci-base --no-install-project
uv pip install --python-platform i686-pc-windows-msvc --only-binary :all: \
--extra-index-url https://pypi.halide-lang.org/simple/ \
"halide-llvm==${LLVM_VER}"
echo "${GITHUB_WORKSPACE}/.venv/Scripts" >> "$GITHUB_PATH"
echo "VIRTUAL_ENV=${GITHUB_WORKSPACE}/.venv" >> "$GITHUB_ENV"
- name: Configure LLVM
run: echo "Halide_LLVM_ROOT=$(halide-llvm --prefix)" >> "$GITHUB_ENV"
- name: Configure CMake
run: cmake --preset ci-windows-x86-${{ matrix.bits }}
- name: Initial build
run: cmake --build build
- name: Test (host)
run: |
cmake -S . -B build -DHalide_TARGET=host
cmake --build build
ctest --test-dir build --build-config RelWithDebInfo --output-on-failure -LE performance -j "$(nproc)"
ctest --test-dir build --build-config RelWithDebInfo --output-on-failure -L performance --repeat until-pass:5
- name: Test (no extensions)
run: |
cmake -S . -B build -DHalide_TARGET=cmake
cmake --build build
ctest --test-dir build --build-config RelWithDebInfo --output-on-failure -LE performance -j "$(nproc)"
ctest --test-dir build --build-config RelWithDebInfo --output-on-failure -L performance --repeat until-pass:5