ci: 引导用的 mcpp 自带一份 xlings,而那份早于一次索引移动 - #10
Conversation
fd8220a to
386bff3
Compare
`xim:glibc` 的 `latest` 从 `2.44` 移到了 `2.44.2`。载荷目录按请求**解析成**的版本
命名,而 RuntimeBinding 带的是**声明的**版本 —— 而一个已发布的 mcpp vendor 进自己
沙箱的那份 xlings 仍然声明 `2.44`。于是干净机器装出 `2.44.2`,工具链 fixup 要
`2.44`,构建在编译任何东西之前就停住:
error: selected RuntimeBinding glibc@2.44 requires payload
'.../xpkgs/xim-x-glibc/2.44', but it is not installed
⚠️ 在每一台**新**机器上出现,在任何已存在的机器上都不出现 —— 所以开发机看不见。
索引的 `pkgs/g/glibc.lua` 把这次失败逐字记着,并给出规则:
「The index is DATA and the client is a PROGRAM: the consumer ships first。」
## ⚠️ 我先试过 bump xlings,撤回了
把 `XLINGS_VERSION` 提到 2026.8.27.1 会让**沙箱里那份** xlings 被换掉
(mcpp 的 `acquire_xlings_binary` 在 pin 前移时更新它),绑定于是**前移**到
`glibc@2.44.2`,而已经装好的是 `2.44` —— 请求比已装的**更新**。那是更糟的一侧:
接受一个更旧的载荷去回答更新的请求,等于静默用上索引明说
「IT IS NOT THE ONE TO INSTALL」的那份(带 mcpp#484 的 preload 缺陷)。
⇒ 保持 xlings 不动,把缺的那个载荷直接装上。
⭐ 待 mcpp 2026.8.27.1(mcpp-community/mcpp#515)发布后移除:它接受
「版本精化了请求」的已装载荷,从它引导就不需要这一步。
386bff3 to
741a9ad
Compare
|
Closing: the bridge this branch adds never executed. The guard tested The premise was also unreachable. What actually stopped the failure was reverting the xlings pin, one commit |
缺陷
一个 mcpp 发布内嵌一份 xlings 在
<install>/registry/bin/xlings,而解析 runtime binding 的是那一份,不是quick_install装的那一份。xim:glibc的latest移到2.44.2,而只有 xlings 2026.8.27.1 改为从索引读默认绑定(openxlings/xlings#567)。旧的内嵌副本要glibc@2.44,干净环境装出2.44.2,工具链 post-install 停住:⭐ 在每一台新机器上出现,在任何已存在的机器上都不出现 —— 所以它在开发机上不可见。索引的
pkgs/g/glibc.lua把这次失败逐字记着,并说明「the consumer ships first」。归因(实测)
mcpp_ref指向 mcpp#515 分支mcpp_ref=main(对照)mcpp_ref留空(装已发布版,不从源码构建)这一步做什么
只在内嵌副本与已装副本版本不同时替换,并打印替换了什么 —— 静默替换不可能发生。mcpp 2026.8.27.1 内嵌的就是 2026.8.27.1,那之后是空操作。