Skip to content

Linux 构建脚本会吞掉代码生成和 Ninja 失败 #376

Description

@pikasTech

目标合并分支: master

问题

从 v1.14.0 的干净 Git 快照执行 Linux 官方构建入口时,如果 rust-msc-latest-linux 下载失败,init.sh 会继续执行;随后 only_make.sh 中 Ninja 编译失败后仍继续执行复制和报告命令,最终可能返回成功。

调用方因此不能在真实失败点得到非零退出,而是在后续运行 benchmark 或测试二进制时才看到“文件不存在”。

已复现链路

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

  1. pikasTech commented on Jul 21, 2026

    @pikasTech
    OwnerAuthor

    修复已提交 PR #377,commit 85c2a2028。

    验证证据:

    • Docker 失败注入测试通过,init.sh 保留退出码 23,only_make.sh 保留 Ninja 退出码 29。
    • Docker 完整 Linux init.sh && only_make.sh 成功。
    • PR workflow YAML 解析通过。
    • 主代理 bounded review 通过。

    guarded merge 当前仅等待一个 GitHub Actions check。按项目规则不等待或人工追踪 Actions 收敛,PR 保持开放,由正常检查完成后合并。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions