You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(toolchain): narrow the sweep, and stop spawning cl.exe to ask a yes/no (#444)
Both found by reviewing the 2026.8.16.3 diff after tagging it.
**The sweep could delete another version mid-install.** It walked the whole
family directory and removed any version directory containing no regular
files. But an install populates a version directory over time -- which is why
package_fetcher tracks completeness with a marker file rather than by
existence -- so a DIFFERENT version being extracted right now is briefly
indistinguishable from a leftover skeleton. Two mcpp processes against one
MCPP_HOME is ordinary on a shared or self-hosted runner, and this feature
exists for long-lived installs on exactly those machines.
`.trash-*` is still swept family-wide: that name is only ever written by this
code, so deleting one is safe whoever else is running. The file-less-skeleton
rule now applies to the single version the command names.
**`msvc_available_here()` ran a compiler to answer a yes/no.** It wanted to
know whether a usable toolset exists and called the full `installation_at()`,
which spawns cl.exe for its banner to identify the version. That question is
asked on every build at the MSVC-ABI gate, so a machine with several
installed toolsets paid several subprocess spawns per build -- and those are
precisely the machines this predicate was added for.
`installation_at(..., identifyVersion = false)` skips the banner. The layout
still has exactly ONE implementation; this is a parameter, not a second copy
of the path arithmetic.
The new test was run against the family-wide sweep and fails there.
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
0 commit comments