Skip to content

Commit 65ffae1

Browse files
committed
fix(bench): declare the Windows import-std gap; let 231 run standalone
**Windows 上两条外部臂都没有 `import std`,而这一直是红的。** cmake 死在 `project()` 里的 CXX_MODULE_STD 工具链支持探测 (CMakeTestCXXCompiler → CMakeDetermineCompilerSupport),xmake 死在 `missing std dependency for module ...`。Windows 载荷是 llvm@20.1.7 配 MSVC STL, 它不提供任何一条臂能构建的 std 模块。 mcpp 两条臂在该格子是好的(5 ok),所以**保留格子、豁免那两条臂**而不是把引擎删掉: 豁免的失败在报告里仍然可见,删掉的引擎不可见。矩阵要求 `allow_failed` 必须带 `KNOWN GAP` 说明(e2e 233 强制),原因已写进 note。 另外 `231_jobs_option.sh` 独立跑时死在 `line 45: : command not found` —— 和 `bench/tests/harness.sh` 早先那个是同一个成因:`$MCPP` 由 e2e 运行器导出,手跑时 没有。补上自解释的回退。 ⚠️ 这里有个刻意的不对称:**231 自己填默认值,bench 的 harness 不填**。后者的 `$MCPP` 就是被测对象,猜错了整个测量都是错的,所以它宁可报错也不猜。同一个症状, 两种正确处理。
1 parent 2622754 commit 65ffae1

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

bench/matrix.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,9 @@
161161
"scenarios": "cold,noop,touch-hub,edit-body,edit-comment",
162162
"hub": "src/platform/platform.cppm",
163163
"body": "src/version_req.cppm",
164-
"buildfiles": "mcpp"
164+
"buildfiles": "mcpp",
165+
"allow_failed": "cmake,xmake",
166+
"note": "KNOWN GAP: neither foreign arm has `import std` on Windows. cmake stops inside project() at the CXX_MODULE_STD toolchain-support probe (CMakeTestCXXCompiler -> CMakeDetermineCompilerSupport) and xmake stops at `missing std dependency for module ...`; the Windows payload is llvm@20.1.7 against the MSVC STL, which ships no std module either engine can build. The mcpp arms measure fine, so the cell is kept for them and the two arms are waived rather than dropped — a waived failure stays visible in the report, an excluded engine does not."
165167
},
166168
{
167169
"os": "linux",

tests/e2e/231_jobs_option.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,20 @@
1010
# MCPP_JOBS side channel, and that pre-scan used to walk the whole argv.
1111
set -e
1212

13+
# mcpp's e2e runner exports MCPP as the binary under test. Filled in when unset
14+
# so this file can be run BY HAND — otherwise it dies on
15+
# line 45: : command not found
16+
# which names neither the variable nor the fix. (Same treatment as
17+
# 230_bench_harness.sh; the bench harness itself deliberately refuses to guess,
18+
# because there the binary IS the measurement.)
19+
if [ -z "${MCPP:-}" ]; then
20+
_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
21+
MCPP="$(bash "$_root/.github/tools/newest_artifact.sh" "$_root" mcpp 2>/dev/null || true)"
22+
[ -n "$MCPP" ] || { echo "SKIP: no mcpp binary built yet — run \`mcpp build\` first"; exit 0; }
23+
case "$MCPP" in /*) ;; *) MCPP="$_root/$MCPP" ;; esac
24+
export MCPP
25+
fi
26+
1327
TMP=$(mktemp -d)
1428
trap "rm -rf $TMP" EXIT
1529
cd "$TMP"

0 commit comments

Comments
 (0)