Skip to content

Commit c24653d

Browse files
committed
ci: mcpp 0.0.68 + recover GL window/imgui-module smokes to blocking
mcpp 0.0.68 fixes the dimensional ABI bug (glibc C lib buildable under clang/libc++), so the imgui-module smoke (pins llvm@20.1.7 → glfw) and the GL window smoke move back from nightly into the blocking smoke-full-linux. Bump MCPP_VERSION 0.0.67→0.0.68 (incl. portable archives). Verified locally on 0.0.68: imgui-module-smoke runs (Dear ImGui 1.92.8 module package ok). Correct the plan doc §8.2 root cause (was mis-attributed).
1 parent dd7ff48 commit c24653d

2 files changed

Lines changed: 23 additions & 53 deletions

File tree

.agents/docs/2026-06-27-add-cjson-and-nlohmann-json-plan.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -317,13 +317,17 @@ PR #48。两处与「升级到最新 mcpp 0.0.67」相关的 CI 排查:
317317
门控(默认不链)→ 无 main;0.0.46 **忽略** feature 总是链入,故旧版「假绿」。
318318
**修复**:依赖声明改 `gtest = { version = "1.15.2", features = ["main"] }`(本地 0.0.66 实测全绿)。
319319

320-
2. **glfw ABI mismatch(mcpp 0.0.67 回归,已隔离,待 mcpp 侧排查)**:`smoke_compat_imgui_window.sh`
321-
在 0.0.67 CI 报 `ABI mismatch: compat.glfw requires abi=glibc but resolved clang 20.1.7 (libc++)`,
322-
**尽管工程已 `default = "gcc@16.1.0"`**。对照证据:同脚本 0.0.66 本地正常解析 gcc 并通过;glfw 在
323-
0.0.67 别处(linux `smoke_compat_imgui.sh`、mac/windows portable)均正常构建。→ 判定为 **mcpp 0.0.67
324-
工具链解析回归**(对带 abi 要求的 glfw 依赖错误回退 clang/libc++),非配方/非本 PR。
325-
**处置**:把 GL 窗口 + imgui-module 两个 demo 移到 `smoke-gl-linux`(仅 nightly + 手动 dispatch),
326-
不阻塞 PR/main;core/imgui/archive 仍在 0.0.67 阻塞跑。**待 mcpp 侧单独修工具链解析后回收。**
320+
2. **glfw `abi:glibc` 在 clang/libc++ 下误报(mcpp core bug,已在 0.0.68 修复并回收)**:
321+
CI 报 `ABI mismatch: compat.glfw requires abi=glibc but resolved clang 20.1.7 (libc++)`。
322+
**真正肇事**是 `smoke_imgui_module.sh`(**显式 pin `llvm@20.1.7`**,非 imgui_window、非"工具链误解析")——
323+
其传递依赖 glfw 声明 `abi:glibc`。**根因**:mcpp `prepare.cppm` 的 `abi:` 门控把 **libc ABI** 与
324+
**C++ 标准库**混为一谈(`stdlibId=="libc++"` 抢占了 glibc),而 clang+libc++ 的三元组是 `*-linux-gnu`,
325+
libc 仍是 glibc → 把 glibc 的 C 库误判不兼容。检查随 0.0.54 引入,故 CI 旧 pin 0.0.46 不报、0.0.67 报。
326+
**修复**:mcpp **0.0.68**(#178)把 ABI 建成维度模型(libc / cxxstdlib 等正交,未声明即 don't-care);
327+
分析+设计见 mcpp 仓 `.agents/docs/2026-06-27-glfw-abi-glibc-vs-libcxx-conflation-analysis.md`、
328+
`2026-06-27-abi-compat-model-single-pr-design.md`
329+
**回收**:本 PR 把 CI 升到 `0.0.68` 并将 GL window + imgui-module 两 smoke 从 nightly 移回阻塞 `smoke-full-linux`
330+
(本地 0.0.68 实测 `imgui-module-smoke` 在 llvm 下 `Dear ImGui 1.92.8 module package ok`)。
327331

328332
### 8.3 CI 选跑实测(PR #48)
329333
detect 正确产出 `examples=["cjson","nlohmann.json"]`;`smoke-examples (cjson)`/`(nlohmann.json)`

.github/workflows/validate.yml

Lines changed: 12 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ on:
1111
workflow_dispatch:
1212

1313
env:
14-
MCPP_VERSION: "0.0.67"
14+
MCPP_VERSION: "0.0.68"
1515

1616
jobs:
1717
lint:
@@ -216,47 +216,13 @@ jobs:
216216
timeout 1800 bash tests/smoke_compat_core.sh
217217
timeout 1800 bash tests/smoke_compat_imgui.sh
218218
timeout 1800 bash tests/smoke_compat_archive.sh
219-
220-
# ── GLFW/OpenGL window + imgui-module demos (nightly / manual only) ────
221-
# These two depend on `compat.glfw` (abi=glibc) and the GLX/OpenGL runtime.
222-
# On mcpp 0.0.67 the window demo intermittently resolves a clang/libc++
223-
# toolchain for compat.glfw despite a `default = "gcc@16.1.0"` pin, failing
224-
# with `ABI mismatch: compat.glfw requires abi=glibc`. The same scripts pass
225-
# on 0.0.66 locally, and glfw builds fine on 0.0.67 elsewhere (linux imgui
226-
# smoke + mac/windows portable), so this is an mcpp toolchain-resolution
227-
# regression unrelated to package descriptors — tracked separately. Kept out
228-
# of the PR-blocking path (display/driver/ABI-sensitive, already optional)
229-
# but still exercised on the nightly schedule and on manual dispatch.
230-
smoke-gl-linux:
231-
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
232-
runs-on: ubuntu-latest
233-
steps:
234-
- uses: actions/checkout@v4
235-
- name: Restore mcpp registry cache
236-
uses: actions/cache@v4
237-
with:
238-
path: ~/.mcpp/registry
239-
key: mcpp-registry-${{ runner.os }}-${{ env.MCPP_VERSION }}-${{ hashFiles('pkgs/**/*.lua', 'tests/**', '.github/workflows/validate.yml') }}
240-
restore-keys: |
241-
mcpp-registry-${{ runner.os }}-${{ env.MCPP_VERSION }}-
242-
- name: Download mcpp
243-
run: |
244-
curl -L -fsS -o mcpp.tar.gz \
245-
"https://github.com/mcpp-community/mcpp/releases/download/v${MCPP_VERSION}/mcpp-${MCPP_VERSION}-linux-x86_64.tar.gz"
246-
tar -xzf mcpp.tar.gz
247-
root="$PWD/mcpp-${MCPP_VERSION}-linux-x86_64"
248-
mkdir -p "$HOME/.mcpp/registry"
249-
cp -a "$root/registry/." "$HOME/.mcpp/registry/"
250-
echo "MCPP=$root/bin/mcpp" >> "$GITHUB_ENV"
251-
echo "MCPP_VENDORED_XLINGS=$root/registry/bin/xlings" >> "$GITHUB_ENV"
252-
echo "$root/bin" >> "$GITHUB_PATH"
253-
- name: Run GL window + imgui-module smoke tests
254-
env:
255-
MCPP_INDEX_SMOKE_MCPP_HOME: ${{ runner.temp }}/mcpp-smoke-home
256-
MCPP_INDEX_SMOKE_CACHE_DIR: ${{ runner.temp }}/mcpp-smoke-cache
257-
run: |
258-
mkdir -p "$MCPP_INDEX_SMOKE_MCPP_HOME"
259-
"$MCPP" --version
219+
# GLFW/OpenGL window + imgui-module demos. These pull compat.glfw
220+
# (abi:glibc). The imgui-module smoke pins llvm@20.1.7 (clang/libc++);
221+
# on mcpp ≤0.0.67 that tripped the conflated `abi:` gate ("requires
222+
# abi=glibc … is abi=libc++") because a clang+libc++ toolchain on
223+
# *-linux-gnu was mislabelled. Fixed in mcpp 0.0.68 (dimensional ABI
224+
# model: libc and cxxstdlib are independent axes), so these are back in
225+
# the blocking set. The window run itself stays opt-in (needs a display).
260226
timeout 1800 bash tests/smoke_compat_imgui_window.sh
261227
timeout 1800 bash tests/smoke_imgui_module.sh
262228
@@ -272,14 +238,14 @@ jobs:
272238
include:
273239
- platform: macos
274240
os: macos-15
275-
archive: mcpp-0.0.67-macosx-arm64.tar.gz
276-
root: mcpp-0.0.67-macosx-arm64
241+
archive: mcpp-0.0.68-macosx-arm64.tar.gz
242+
root: mcpp-0.0.68-macosx-arm64
277243
mcpp: bin/mcpp
278244
xlings: registry/bin/xlings
279245
- platform: windows
280246
os: windows-latest
281-
archive: mcpp-0.0.67-windows-x86_64.zip
282-
root: mcpp-0.0.67-windows-x86_64
247+
archive: mcpp-0.0.68-windows-x86_64.zip
248+
root: mcpp-0.0.68-windows-x86_64
283249
mcpp: bin/mcpp.exe
284250
xlings: registry/bin/xlings.exe
285251
steps:

0 commit comments

Comments
 (0)