Skip to content

Commit 644fd88

Browse files
committed
ci: mcpp 2026.8.8.2 是这份改动的前置,而那个新检查从没被跑过
两件事,都是评审提问逼出来的。 一、`MCPP_VERSION` 2026.8.6.2 → 2026.8.8.2。不是顺手升级。 `compat.glx-runtime` 依赖 mesa,mesa 声明 `xim:glibc@>=2.38`;下限被任何更高版本 满足,于是安装图形栈会在既有 glibc 旁边再装一个。2026.8.8.2 之前的 mcpp 用 `readdir` 的第一项解析「那个 glibc payload」,编译侧与产物 interpreter 因此可以 指向不同版本 —— 这正是 #179 落地后 asio-module 和 core 变红、整份改动被 #180 revert 的原因。用更旧的 mcpp 重新落地,就是在仍会犯这个错的引擎上复现事故条件。 二、`tests/check_graphics_install_side_effects.sh` 不被任何 workflow 引用。 它是一个永远不会运行的检查 —— 与它自己反对的东西同一形状。现在有专属作业, Linux,装 pin 住的 mcpp 后执行。 顺带回答「为什么触发了全量 CI」:选择规则里 `tests/*.sh` 一律 full。这条规则是为 共享测试骨架写的,而新文件匹配了它。就本 PR 而言全量恰恰是想要的 —— 上次坏掉的 正是与图形无关的成员,只跑图形相关的那几个看不见任何东西。 注意:动 `MCPP_VERSION` 会改变 registry 缓存键(它进 key 也进 restore-keys), 所以这一轮所有 workspace 作业都从冷缓存起步。潜伏的缺陷可能因此「突然出现」—— 那是暴露,不是新增。
1 parent f14f2bf commit 644fd88

1 file changed

Lines changed: 48 additions & 1 deletion

File tree

.github/workflows/validate.yml

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,19 @@ env:
127127
# index.toml 的 min_mcpp **不动**。两个会撞的 compat 邻居都是 Form B,所以旧客户端
128128
# 撞上时是响亮报错而不是静默用错包;下限是一道让整个索引对旧客户端失效的闸门
129129
# (mcpp#349),只该在描述符真的读不动时抬。这里读得动,差的是解析得对。
130-
MCPP_VERSION: "2026.8.6.2"
130+
#
131+
# 2026.8.8.2 是本 PR 的**前置**,不是顺手升级。
132+
#
133+
# `compat.glx-runtime` 依赖 mesa,mesa 声明 `xim:glibc@>=2.38`;下限被任何更高
134+
# 版本满足,于是安装图形栈会在既有 glibc 旁边**再装一个**。2026.8.8.2 之前的
135+
# mcpp 用 `readdir` 的第一项来解析「那个 glibc payload」,编译侧与产物的
136+
# interpreter 因此可以指向不同版本 —— 这正是 #179 落地后 `asio-module` 和
137+
# `core` 变红、并导致整份改动被 #180 revert 的原因。
138+
#
139+
# 用早于 2026.8.8.2 的 mcpp 重新落地这份改动,就是在仍会犯这个错的引擎上复现
140+
# 事故条件。tests/check_graphics_install_side_effects.sh 也需要它 —— 该测试在
141+
# 更旧的 mcpp 上失败是**有意的**。
142+
MCPP_VERSION: "2026.8.8.2"
131143

132144
jobs:
133145
lint:
@@ -508,6 +520,41 @@ jobs:
508520
echo "plan=$(cat /tmp/plan.json)" >> "$GITHUB_OUTPUT"
509521
jq . /tmp/plan.json
510522
523+
# Installing the graphics stack must not change what UNRELATED members link
524+
# against. This is the check #179 did not have: every test in this repo asks
525+
# about its own package, so nothing asked whether installing one changes
526+
# things for everyone else -- and `asio-module` / `core` went red on a
527+
# change that never touched them.
528+
#
529+
# Its own job, on Linux, because it needs a real toolchain and a home it can
530+
# watch payloads appear in. It reports INCONCLUSIVE (and fails) rather than
531+
# green whenever its preconditions do not hold; see the script.
532+
graphics-side-effects:
533+
name: "graphics install: no side effects on unrelated members"
534+
runs-on: ubuntu-latest
535+
timeout-minutes: 60
536+
steps:
537+
- uses: actions/checkout@v4
538+
- name: Download mcpp
539+
shell: bash
540+
env:
541+
MCPP_ARCHIVE: mcpp-${{ env.MCPP_VERSION }}-linux-x86_64.tar.gz
542+
MCPP_ROOT: mcpp-${{ env.MCPP_VERSION }}-linux-x86_64
543+
run: |
544+
curl -L -fsS -o "$MCPP_ARCHIVE" \
545+
"https://github.com/mcpp-community/mcpp/releases/download/v${MCPP_VERSION}/${MCPP_ARCHIVE}"
546+
tar -xzf "$MCPP_ARCHIVE"
547+
root="$PWD/$MCPP_ROOT"
548+
mkdir -p "$HOME/.mcpp/registry"
549+
cp -a "$root/registry/." "$HOME/.mcpp/registry/"
550+
echo "MCPP=$root/bin/mcpp" >> "$GITHUB_ENV"
551+
echo "MCPP_VENDORED_XLINGS=$root/registry/bin/xlings" >> "$GITHUB_ENV"
552+
- name: Side-effect check
553+
shell: bash
554+
run: |
555+
"$MCPP" self config --mirror GLOBAL 2>/dev/null || true
556+
bash tests/check_graphics_install_side_effects.sh
557+
511558
workspace:
512559
# The shard suffix appears only when the platform is actually split.
513560
name: workspace (${{ matrix.platform }}${{ matrix.shards == 1 && '' || format(' {0}/{1}', matrix.shard, matrix.shards) }})

0 commit comments

Comments
 (0)