mcpp 把内带 xlings 从 2026.8.5.1 升到 2026.8.5.2 后,mcpp builds & runs xlings 这条集成 CI 挂了,重跑可复现(两次都在同一处):
Downloading mcpplibs.xpkg v0.0.48
Downloading compat:xpkg v0.0.48 ← mcpp 的兜底重试
Downloading compat.xpkg v0.0.48 ← 兜底重试
error: xlings install_packages failed (exit 1) for 'mcpplibs.xpkg@0.0.48'
with 1 index repo configured [mcpplibs -> https://github.com/mcpplibs/mcpp-index.git]
为什么怀疑是 2026.8.5.2
可疑点
#481 把匹配从字符串相等换成了「相等 OR semver 范围满足」:
bool dep_version_matches_(std::string_view nodeVersion, std::string_view depVersion) {
if (depVersion.empty()) return true;
if (nodeVersion == depVersion) return true;
return semver::satisfies_expr(nodeVersion, depVersion);
}
注释里说相等优先是为了让非 semver 版本仍能自匹配。但失败的这个包版本是 0.0.48,而且同一批里 mcpplibs:cmdline@0.0.2、mcpplibs:tinyhttps@0.2.9、mcpplibs.capi:lua@0.0.3 都装成功了 —— 所以不是所有包都受影响,像是 xpkg 的某个 runtime_deps 触发了新路径。
注意日志里 xpkg 被尝试了三种拼写(mcpplibs:xpkg / compat:xpkg / compat.xpkg)。那是 mcpp 侧的兜底重试,不代表索引里有三个包;真正的失败在第一次。
现场
mcpp 侧的处理
内带 xlings 暂时回退到 2026.8.5.1,等这边发新版本再升。mcpp 的 PR #361 其余部分(命令长度架构)不受影响,照常推进。
我没有进一步定位到是 xpkg 的哪一条 runtime_deps 触发的 —— 装包过程的 stderr 被 2>/dev/null 吞掉了(interface install_packages ... 2>/dev/null),日志里只剩 mcpp 转述的那一行。如果需要,我可以在 mcpp 侧临时去掉那个重定向再跑一次拿到 xlings 自己的报错。
mcpp 把内带 xlings 从 2026.8.5.1 升到 2026.8.5.2 后,
mcpp builds & runs xlings这条集成 CI 挂了,重跑可复现(两次都在同一处):为什么怀疑是 2026.8.5.2
f18d5b1 fix(xim): a ranged dep matched no node, so nothing got an RPATH (#481)runtime_deps的版本匹配,而失败正好发生在依赖安装阶段。可疑点
#481 把匹配从字符串相等换成了「相等 OR semver 范围满足」:
注释里说相等优先是为了让非 semver 版本仍能自匹配。但失败的这个包版本是
0.0.48,而且同一批里mcpplibs:cmdline@0.0.2、mcpplibs:tinyhttps@0.2.9、mcpplibs.capi:lua@0.0.3都装成功了 —— 所以不是所有包都受影响,像是xpkg的某个runtime_deps触发了新路径。现场
mcpp 侧的处理
内带 xlings 暂时回退到 2026.8.5.1,等这边发新版本再升。mcpp 的 PR #361 其余部分(命令长度架构)不受影响,照常推进。
我没有进一步定位到是
xpkg的哪一条runtime_deps触发的 —— 装包过程的 stderr 被2>/dev/null吞掉了(interface install_packages ... 2>/dev/null),日志里只剩 mcpp 转述的那一行。如果需要,我可以在 mcpp 侧临时去掉那个重定向再跑一次拿到 xlings 自己的报错。