Files
MeowOS-For-R3P2/patch_v2/meow_audiod
AskaEth d36a3a02a6 fix(audiod): build_audiod.sh 评审 P2 两条 — CC 单一命令词 + ZIG guard 下沉;顺手两处可见性
评审 r2(p2-2items/merge,reviewed 234b4d1)两条:

① P2-1 `CC="zig cc --target=mipsel-linux-musleabi"` 是死代码:多词整串存进变量,`"$CC"`
   按一个命令名展开 → `command not found`(评审实测 exit 127)。**M51 在 git worktree 里跑
   必踩**(`$ROOT/.tools/zig-mipsel-cc` 基本不存在 → 走 PATH 回退 → meow_audio 编不出来,
   而 meow_audio 正是 M43 带 time32 的那个 CLI)。
   - `CC` 只存**单个命令词**,多词 target flags 另放 `CC_EXTRA`(未加引号展开,故意分词);
   - PATH 回退改为 `CC="$(command -v zig)"` + `CC_EXTRA="cc --target=mipsel-linux-musleabi"`;
   - cli 分支加 `[ -n "$CC" ] || { 明确提示 CC=/ZIG= 或把 zig 放进 PATH; exit 1; }`——
     缺编译器时是**清晰错误**,不再是 command not found。

② P2-2 `[ -n "$ZIG" ] || exit 1` 放得太早:`$ZIG` 只有 audiod 目标用,却在 host/cli 分支之前,
   没有 zig 的机器上 `build_audiod.sh host`(只需宿主 cc)会被无谓打断。guard 下沉到 audiod
   段(MAIN 之后、LIBBT 之前),提示语也改成「audiod 目标需要它」。

顺带(评审附带观察):
③ host 目标不再用「先编一次 2>/dev/null、失败再编一次」兜底——那会把成功路径的 warning 吞掉。
   改成先跑一个 trivial 链接探针决定 `AS_LINK`(`-l:libasound.so.2` 或 `-lasound`),真正的编译
   全程保留 stderr。
④ `libasound.so.2.0.0 not found` 现在**列出试过的全部路径** + 覆盖语法(M51 在陌生环境里的
   唯一路标)。同时把 MAIN 的推导改成「git 不可用就留空」,避免产生 `/`、`$HOME` 这类伪候选。

自证(本 worktree 真跑):
- `ROOT=/nonexistent ./build_audiod.sh cli` → 正常出件 88888B/md5 3909c8d2…(评审的复现命令)
- PATH 里没有 zig → cli:`!! mipsel CC 未找到:设置 CC=…`(不再 command not found);
  audiod:`!! zig not found(audiod 目标需要它)…`
- PATH 里没有 zig → **host 目标照常 4 个产物 + test_bt_dev 71/71 + test_audiod_host 109/0**
- 正常环境两目标产物**一字未变**:meow_audiod 68604B/md5 9f58b219…、meow_audio 88888B/md5 3909c8d2…
- `test_time32_abi.sh --builds` ALL PASS,`build meow_audio src=yes macro=yes`
2026-11-11 20:05:49 +08:00
..