Skip to content

Commit fb60758

Browse files
committed
ci: 引导用的 mcpp 自带一份 xlings,而那份早于一次索引移动
一个 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 停住: error: selected RuntimeBinding glibc@2.44 requires payload '.../xpkgs/xim-x-glibc/2.44', but it is not installed 在每一台**新**机器上出现,在任何已存在的机器上都不出现 —— 所以它在开发机上不可见。 索引的 pkgs/g/glibc.lua 把这次失败逐字记着。 ⭐ mcpp 2026.8.27.1(mcpp-community/mcpp#515)内嵌的就是 2026.8.27.1,那之后本步骤 是空操作。只在版本不同时替换,并**打印替换了什么** —— 静默替换不可能发生。 待 pin 发布后移除。
1 parent e556d34 commit fb60758

1 file changed

Lines changed: 68 additions & 0 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,74 @@ jobs:
8080
fi
8181
mcpp --version
8282
mcpp self config --mirror GLOBAL
83+
# ⚠️⚠️ TRANSITION: THE BOOTSTRAP mcpp CARRIES ITS OWN xlings, AND
84+
# THAT COPY PREDATES AN INDEX MOVE.
85+
#
86+
# An mcpp release BUNDLES an xlings at `<install>/registry/bin/xlings`
87+
# (mcpp's `pinned::kXlingsVersion`), and that copy — not the one
88+
# installed above — is what resolves runtime bindings for everything
89+
# mcpp does. `xim:glibc`'s `latest` moved to 2.44.2, and only
90+
# xlings 2026.8.27.1 reads the default binding from the index instead
91+
# of a constant compiled into itself (openxlings/xlings#567). An
92+
# older bundled copy asks for `glibc@2.44`, a clean environment
93+
# installs `2.44.2`, and the toolchain post-install fixup stops:
94+
#
95+
# error: selected RuntimeBinding glibc@2.44 requires payload
96+
# '…/xpkgs/xim-x-glibc/2.44', but it is not installed
97+
#
98+
# on every NEW environment and on none that already existed. The
99+
# index records this failure verbatim in `pkgs/g/glibc.lua`.
100+
#
101+
# ⭐ REMOVE THIS ONCE THE PIN SHIPS. mcpp 2026.8.27.1 bundles
102+
# 2026.8.27.1, so a bootstrap from it needs nothing here. The step is
103+
# a no-op when the bundled copy is already new enough, and it says
104+
# which copy it replaced so a silent substitution is not possible.
105+
mcpp_home="${MCPP_HOME:-$HOME/.mcpp}"
106+
bundled="$mcpp_home/registry/bin/xlings"
107+
if [ -x "$bundled" ] && [ -n "$(command -v xlings)" ]; then
108+
have="$("$bundled" --version 2>/dev/null | head -1)"
109+
outer="$(xlings --version 2>/dev/null | head -1)"
110+
if [ "$have" != "$outer" ]; then
111+
cp "$(command -v xlings)" "$bundled"
112+
echo "bundled xlings: $have -> $("$bundled" --version | head -1) (was older than the installed one)"
113+
else
114+
echo "bundled xlings: $have (already the installed one)"
115+
fi
116+
fi
117+
# ⚠️⚠️ TRANSITION: THE BOOTSTRAP mcpp CARRIES ITS OWN xlings, AND
118+
# THAT COPY PREDATES AN INDEX MOVE.
119+
#
120+
# An mcpp release BUNDLES an xlings at `<install>/registry/bin/xlings`
121+
# (mcpp's `pinned::kXlingsVersion`), and that copy — not the one
122+
# installed above — is what resolves runtime bindings for everything
123+
# mcpp does. `xim:glibc`'s `latest` moved to 2.44.2, and only
124+
# xlings 2026.8.27.1 reads the default binding from the index instead
125+
# of a constant compiled into itself (openxlings/xlings#567). An
126+
# older bundled copy asks for `glibc@2.44`, a clean environment
127+
# installs `2.44.2`, and the toolchain post-install fixup stops:
128+
#
129+
# error: selected RuntimeBinding glibc@2.44 requires payload
130+
# '…/xpkgs/xim-x-glibc/2.44', but it is not installed
131+
#
132+
# on every NEW environment and on none that already existed. The
133+
# index records this failure verbatim in `pkgs/g/glibc.lua`.
134+
#
135+
# ⭐ REMOVE THIS ONCE THE PIN SHIPS. mcpp 2026.8.27.1 bundles
136+
# 2026.8.27.1, so a bootstrap from it needs nothing here. The step is
137+
# a no-op when the bundled copy is already new enough, and it says
138+
# which copy it replaced so a silent substitution is not possible.
139+
mcpp_home="${MCPP_HOME:-$HOME/.mcpp}"
140+
bundled="$mcpp_home/registry/bin/xlings"
141+
if [ -x "$bundled" ] && [ -n "$(command -v xlings)" ]; then
142+
have="$("$bundled" --version 2>/dev/null | head -1)"
143+
outer="$(xlings --version 2>/dev/null | head -1)"
144+
if [ "$have" != "$outer" ]; then
145+
cp "$(command -v xlings)" "$bundled"
146+
echo "bundled xlings: $have -> $("$bundled" --version | head -1) (was older than the installed one)"
147+
else
148+
echo "bundled xlings: $have (already the installed one)"
149+
fi
150+
fi
83151
# ⭐⭐ CROSS-VALIDATION: BUILD THE mcpp UNDER REVIEW AND USE THAT ONE.
84152
#
85153
# Empty in the ordinary run, so this job keeps testing the RELEASED

0 commit comments

Comments
 (0)