Skip to content

2026.8.5.2 回归:install_packages 装不上 mcpplibs.xpkg@0.0.48(#481 的 semver 范围匹配) #486

Description

@Sunrisepeak

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.2mcpplibs:tinyhttps@0.2.9mcpplibs.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 自己的报错。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions