目标合并分支: master ## 问题 从 `v1.14.0` 的干净 Git 快照执行 Linux 官方构建入口时,如果 `rust-msc-latest-linux` 下载失败,`init.sh` 会继续执行;随后 `only_make.sh` 中 Ninja 编译失败后仍继续执行复制和报告命令,最终可能返回成功。 调用方因此不能在真实失败点得到非零退出,而是在后续运行 benchmark 或测试二进制时才看到“文件不存在”。 ## 已复现链路 ```text update-compiler.sh: rust-msc 下载失败 init.sh: rust-msc 不存在,API 头文件未生成 ninja: PikaCV_Filter.h、GTestTask.h 等生成头文件缺失 only_make.sh: 继续执行 cp 和报告命令 后续命令: build/benchmark/pikascript_benchmark 不存在 ``` ## 期望 - 代码生成器下载、API 生成、CMake、Ninja 任一步失败时,官方构建入口立即返回非零退出。 - stderr 保留首个实际失败原因。 - 成功路径行为、产物和架构不变。 - 增加覆盖“代码生成器不可用”和“Ninja 失败”的脚本级回归测试。 - 不把网络 fallback 或预置二进制写死进 PikaPython 源码。 ## 关联证据 - pika_workspace benchmark job `d2502f9a0911` 暴露该问题。 - workspace 已通过显式构建网络让 `v1.14.0` benchmark 成功,但无法替代官方脚本的退出码修复。
Activity
pikasTech commentedon Jul 21, 2026
修复已提交 PR #377,commit
85c2a2028。验证证据:
init.sh保留退出码 23,only_make.sh保留 Ninja 退出码 29。init.sh && only_make.sh成功。guarded merge 当前仅等待一个 GitHub Actions check。按项目规则不等待或人工追踪 Actions 收敛,PR 保持开放,由正常检查完成后合并。