[tmp] MSVC system-toolchain detection (msvc@system) — Windows CI iteration#207
Closed
Sunrisepeak wants to merge 6 commits into
Closed
[tmp] MSVC system-toolchain detection (msvc@system) — Windows CI iteration#207Sunrisepeak wants to merge 6 commits into
Sunrisepeak wants to merge 6 commits into
Conversation
…stem) (0.0.88) MSVC joins as the first *system* toolchain: mcpp locates and identifies an installed Visual Studio / Build Tools (vswhere → env → well-known paths; cl.exe banner → compiler version/arch, localization-tolerant) but never installs or removes MSVC itself. - toolchain default msvc: detect + report (VS product, VC tools, cl version, std.ixx availability), persist stable 'msvc@system'; absent → install guidance (VS Installer C++ workload / winget BuildTools), exit non-zero. msvc@<prefix> acts as pin-verify against the detected install. - toolchain list: Windows 'System:' section; install msvc reports what's there or guides; remove msvc refuses (system component). - self doctor: Windows 'msvc (system)' check section. - manifest [toolchain] windows = "msvc@system" now actually works; msvc specs on non-Windows hosts error clearly. - build: native cl.exe (.ifc) pipeline is gated off with one owned message pointing at llvm@20.1.7 (MSVC-ABI Clang) until it lands. - detect(): cl.exe classification path (filename short-circuit, banner enrich); bmi_traits gains the MSVC .ifc branch. - tests: unit (banner/guidance/spec/traits) + e2e 95 (Windows, requires msvc cap) / 96 (non-Windows rejection); run_all.sh msvc capability. - design: .agents/docs/2026-07-13-msvc-system-toolchain-detection-design.md
Temporary-branch-only commit — dropped before the real PR. Keeps CI turnaround on tmp/msvc-windows-ci to the single Windows job that exercises msvc@system.
toolchain list stars the *effective* default; the repo root's mcpp.toml [toolchain] windows=llvm@20.1.7 would shadow the freshly-set global msvc@system when run_all.sh executes from the workspace.
…ontent (release.yml only runs on tag push / dispatch, so it costs nothing on PR CI)
The rebuild cleans target/, invalidating the job's $MCPP_SELF fingerprint path — the MSVC step then failed with exit 127 (binary gone).
Member
Author
|
Windows CI green (run 29213815360): E2E incl. 95_msvc_system_toolchain + the dedicated MSVC detection step passed — detected msvc 19.51.36248 (VS 18 Enterprise). Superseded by the real PR #208 with all workflows restored. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Temporary iteration PR for #206-to-be: MSVC system-toolchain detection & selection (0.0.88).
Do not merge. All workflows except
ci-windows.ymlare stripped on this branch to keep CI turnaround fast while iterating on the Windows-only behavior. The real PR will carry the same implementation commit with all workflows restored.Design:
.agents/docs/2026-07-13-msvc-system-toolchain-detection-design.mdScope (detection-first):
mcpp toolchain default msvc→ locate (vswhere/env/paths) + identify (VS product, VC tools, cl banner version) + persist stablemsvc@system; absent → install guidance, non-zero exit (mcpp never installs MSVC)toolchain listSystem section,install/removemsvc semantics, doctor section[toolchain] windows = "msvc@system"