Story: Hotfix: Windows Clang CI compiler-launcher wrapper
Table of Contents
This page documents a story in Sprint 23. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Restore the Windows Clang CI builds (windows-clang-debug-ninja and
windows-clang-release-ninja), which currently fail to configure with
ninja: fatal: CreateProcess: %1 is not a valid Win32 application.
Root cause: CMakePresets.json's hidden clang preset sets
CMAKE_C_COMPILER_LAUNCHER=/=CMAKE_CXX_COMPILER_LAUNCHER to
build/scripts/compiler_cache_wrapper.sh via its environment block.
CMake seeds the CMAKE_<LANG>_COMPILER_LAUNCHER cache variable from the
same-named environment variable at project()-time, before
CMakeLists.txt's own WIN32-aware launcher logic (which would
otherwise pick the sccache/ccache binary directly) gets a chance to run.
windows-clang inherits the clang preset and so inherits this leak;
windows-msvc* presets do not inherit clang=/=gcc and are unaffected.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 23 |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-07-11 |
Acceptance
windows-clang-debug-ninjaandwindows-clang-release-ninjaconfigure and build successfully in CI (verified via a scheduled/triggered run or local Windows-equivalent reasoning, since we cannot run Windows CI locally).windows-msvc*and Linux/macOS presets are unaffected.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Scaffold story: Hotfix: Windows Clang CI compiler-launcher wrapper | DONE | 2026-07-11 | 2026-07-11 | Story scaffolding rides this task: documents, sprint wiring, and the scaffold PR. Close it before merging that PR. |
| Implement Hotfix: Windows Clang CI compiler-launcher wrapper | DONE | 2026-07-11 | 2026-07-11 | Initial task for: Hotfix: Windows Clang CI compiler-launcher wrapper |
Decisions
- Split the launcher
environmentoverride out of the sharedclang=/=gcchidden presets into a newunix-compiler-cache-wrapperpreset, inherited only by the Linux clang/gcc presets, rather than making CMakeLists.txt's WIN32 branch run beforeproject()(not possible) or adding a Windows-specific override inwindows-clang(would leave the same footgun for future Unix-inheriting presets).