Skip to content

docs: the verification found the packaged toolset could not link a default build - #435

Merged
Sunrisepeak merged 2 commits into
mainfrom
docs/msvc-crt-payload-finding
Aug 16, 2026
Merged

docs: the verification found the packaged toolset could not link a default build#435
Sunrisepeak merged 2 commits into
mainfrom
docs/msvc-crt-payload-finding

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Summary

Not a planned item — it turned up while working through the "not covered" list in the cross-repo plan, checking whether the packaged 14.52 toolset could build xrgui. It could not, and neither could it build anything else.

The payload set carried only the static CRT (libcmt / libcpmt / libvcruntime), so /MD — the default — failed on an unresolved msvcprt.lib. The header decides:

#if defined(_DLL) && !defined(_STATIC_CPPLIB)
#define _LIB_STEM "msvcprt"      // /MD  <- absent
#else
#define _LIB_STEM "libcpmt"      // /MT  <- present

Fixed in openxlings/xim-pkgindex#630 (the libs live in Microsoft.VC.<ver>.CRT.x64.Store.base — a name that reads as UWP, which is why it was skipped).

Why it belongs in this doc

Because of what it says about the acceptance table in §4. Both of these were true at the same time as the toolchain being unusable:

  • 1790 static checks pass
  • windows-test installs it on a real Windows runner, green

installed() checked cl.exe and std.ixx — both present — and nothing anywhere links with this toolset, so no gate could have reported it.

An "installed" criterion weaker than "usable" reports that the archive unpacked, not that the package works.

The "not covered" section is renumbered and gains the honest version of this: strengthening installed() makes file presence stricter, which is not the same as links successfully. Only xrgui's V3 covers that, and it has not run yet.

Test plan

  • Docs only, no runtime change
  • The use_ansi.h quote is from the 14.52 CRT.Headers.base payload, extracted locally

…fault build

Not a planned item -- it turned up while working through the "not covered"
list, checking whether the packaged 14.52 could build xrgui. It could not,
and neither could it build anything else: the payload set carried only the
static CRT, so /MD (the default) failed on an unresolved msvcprt.lib.

Fixed in xim-pkgindex#630. Recorded here because of what it says about the
acceptance table in §4: "1790 static checks pass" and "windows-test installs
it on a real Windows runner" were both true while the toolchain was broken.
`installed()` checked cl.exe and std.ixx, and nothing anywhere links with
this toolset -- so no gate could have reported it.

An "installed" criterion weaker than "usable" reports that the archive
unpacked, not that the package works.
…et that never appeared

`toolchain list` asked for `root/bin`; msvc keeps cl.exe four levels deeper.
Three places need that layout, two had it. Fixed in #436.

Recorded here for how it was found: not by a test. The unit test written for
this pinned `identify_xim_payload("msvc")`, which was already correct --
identity mapping and enumeration are different questions and only one was
being asked. e2e 239 step 1b would catch it, but only once the package is
published and the Windows e2e runs again.

"Has a test" and "has been tested" are not the same thing.
@Sunrisepeak
Sunrisepeak merged commit 47a6b89 into main Aug 16, 2026
18 checks passed
@Sunrisepeak
Sunrisepeak deleted the docs/msvc-crt-payload-finding branch August 16, 2026 07:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants