Skip to content

Commit 5a2cf8a

Browse files
committed
Revert "build: turn bmi_schedule ON for mcpp's own build" — CI found a real defect
一个 CI 周期就把它否掉了。`cross-build-test` 的 **windows 宿主 → x86_64-linux-musl** 那个 job 红在 BMI 边: failed: gcm.cache/mcpp.libs.json.gcm src/libs/json.cppm:3: fatal error: json.hpp: No such file or directory 即**分离出来的 BMI 边在那个宿主上拿不到 `include_dirs`**。已记为 #425, 含定位到规则的分析(detach 的 BMI 边把整条命令写进 `$out.cmd`,而 windows 上 普通编译边是把 `$local_includes` 放进另一个 rspfile 再 `@` 引用 —— 两条路径对 它的处理本来就不一样)。 ⚠️ 这条恰好证明了那条规则的价值,也证明了我上一个提交的证据是不够的: linux 自举 + 83 个单测 绿 macOS / windows 原生 e2e 绿(clang ⇒ two-phase) windows 宿主交叉到 linux-musl 红 我在提交信息里写了「本地已验证」,而本地验证覆盖不到这个组合。 「opt-in 直到在**所有平台**过完 CI」说的就是这件事,不是「直到它在我这儿能跑」。 对所有人的默认值 `auto`(= 关)本来就不受影响。mcpp.toml 里那一行换成了 说明为什么不开的注释,修好 #425 之后再开。
1 parent 4ff2ad7 commit 5a2cf8a

1 file changed

Lines changed: 9 additions & 19 deletions

File tree

mcpp.toml

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,17 @@ default-profile = "release"
1515
# nlohmann/json.hpp lives in src/libs/json/; expose it to the global
1616
# module fragment `#include <json.hpp>` in src/libs/json.cppm.
1717
include_dirs = ["src/libs/json"]
18-
# Split the module edge: importers start when the BMI is published rather than
19-
# when the compiler exits. See docs/05-mcpp-toml.md.
18+
# NOT enabled here. `bmi_schedule = "on"` was turned on for mcpp's own build and
19+
# CI rejected it within one cycle: the windows-host cross-build to
20+
# x86_64-linux-musl failed on the BMI edge with
2021
#
21-
# ON HERE, `auto` (= off) EVERYWHERE ELSE — deliberately, and this is the point
22-
# of turning it on at all. The key stays opt-in until it has been through CI on
23-
# every platform, and nothing was exercising it, so it could never accumulate
24-
# the evidence needed to change that. mcpp's own build is where that evidence
25-
# is cheapest to get: whatever this schedule produces then has to pass 83 unit
26-
# tests and the full e2e suite, on Linux (detach-codegen, gcc) and on macOS and
27-
# Windows (two-phase, clang) — three platforms, every PR.
22+
# failed: gcm.cache/mcpp.libs.json.gcm
23+
# src/libs/json.cppm:3: fatal error: json.hpp: No such file or directory
2824
#
29-
# ⚠️ WHY THAT SAFETY NET MATTERS HERE. A scheduling bug does not fail loudly; it
30-
# stops rebuilding something. The one that already happened (§8b in
31-
# bench/README.md) left the object edge with the BMI as its only input, so
32-
# restat cleaned the object and ninja exited while the compiler was still
33-
# running — a binary that was silently short. Running the produced binary
34-
# against its own test suite is what turns that class of defect into a red job
35-
# instead of a bad release.
36-
#
37-
# Revert is this one line if anything here is ever unexplained.
38-
bmi_schedule = "on"
25+
# i.e. the split BMI edge loses `include_dirs` on that host. Linux was green and
26+
# the local self-host build was green (35.40s vs ~80s, 83 unit tests passing),
27+
# which is exactly why the rule is "opt-in until it has been through CI on EVERY
28+
# platform" rather than "until it works here". See issue #425.
3929

4030
[toolchain]
4131
default = "gcc@16.1.0"

0 commit comments

Comments
 (0)