feat(msvc): add 14.52.36629 -- the toolset xrgui needs -- and qualify the curl dep - #628
Merged
Merged
Conversation
… it is published Two things, and the first one matters more than it looks. **14.52.36629 — the toolset xrgui actually needs.** The package shipped with 14.44.35207 only, and that does not build Sunrisepeak/xrgui#3: that tree needs a 14.52 preview, and the toolset one step below it (14.51) does not merely differ, it ICEs -- mo_yanxi_utility/src/utility/math/basic/vector2.ixx(67): fatal error C1001: Internal compiler error. note: IFC import detected. so 14.44 was never going to serve it. 14.52 comes from the Insiders channel (aka.ms/vs/18/insiders/channel), a different manifest with differently spelled package ids -- Microsoft.VC.14.52.* rather than Microsoft.VC.14.44.17.14.*. It carries a risk the release entry does not: Microsoft rotates Insiders payloads. When 14.52.36629 goes, the URLs 404 -- loudly, and with the sha256 still pinned, so a rotated build cannot quietly take its place. That is the failure mode worth having, and it is why `latest` stays on the release channel: asking for a preview toolset should be a choice. The payload table is now keyed by toolset, which is also what makes the multi-version claim real rather than theoretical -- two toolsets, side by side, `xlings use msvc <ver>` between them. Each one's directory version was read off a real payload, not assumed: 14.44's payloads carry 35228 / 35220 / 35226 and all unpack into 14.44.35207, while 14.52's payloads and directory agree at 36629. **curl.** It is published, so the two bare dependencies become `xim:curl@8.21.0` and the EXEMPT entries come out of check-dep-namespace.lua -- which is exactly what that list's own comment asks for: "REMOVE it in the follow-up that lands after publication. An entry left behind is the bug this check exists to catch, wearing a permit."
msvc.lua:116: attempt to index a nil value (global 'TOOLSETS') A function that closes over a local has to be written below that local. Placed above it, the name it captures is a global -- which is nil, and says so only when the hook runs. Nothing a syntax check can catch, and the local gates cannot either: they read the recipe, they do not install it. windows-test does.
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.
接续 #626 / #627。两件事,第一件比看上去重要。
1. 加上 xrgui 真正需要的 toolset:
14.52.36629msvc目前只有14.44.35207(release 通道,VS 2022 17.14),而它构建不了 Sunrisepeak/xrgui#3 —— 那个仓库需要 14.52 preview,而比它低一级的 14.51 不是「差一点」,是直接 ICE:14.44 更老,从来就不可能满足它。所以这个包在补上 14.52 之前,对最初驱动它的那个用例是没用的。
14.52 来自 Insiders 通道(
aka.ms/vs/18/insiders/channel)—— 另一份清单,包 id 的拼法也不一样:Microsoft.VC.14.52.*而不是Microsoft.VC.14.44.17.14.*。它带着一个 release 条目没有的风险
微软会轮换 Insiders 的 payload。等 14.52.36629 下架,这些 URL 会 404 —— 响亮地失败,而且 sha256 仍然钉着,所以一个轮换后的新构建不可能悄悄顶替它。这正是值得拥有的失败模式。
也正因如此
latest留在 release 通道:要一个 preview toolset 应当是个明确的选择,而不是xlings install msvc默认给你的东西。2. 多版本从「方案上支持」变成「真的有两个」
payload 表现在按 toolset 分组,所以
xlings use msvc <ver>有东西可切。每个版本的目录版本都是从真实 payload 里读出来的,不是推断的 —— 这一步不能省:
两者规律不同,猜错的话没有任何东西会落在 recipe 查找的位置。
3. curl 依赖限定 + 移除豁免
curl已随 #627 发布,所以两处裸名依赖改成xim:curl@8.21.0,check-dep-namespace.lua里的两条 EXEMPT 移除 —— 这正是那个列表自己的注释要求的:本地已通过
windows-test会实际安装 —— 注意它测的是latest(14.44),14.52 那条路径本 PR 不会被 CI 覆盖,两者的差异只在 payload URL 和目录版本,而后者已按上表逐个核对过。