build(ncm): 宿主交叉适配层 + 全量测试补跑(M8)
- 新增 build_ncm_cross_host.sh:同构 HOME 复用容器脚本,串起 sdk/vendor/host-mbedtls/core/tests/ncm - libs_common.sh 工具链路径改为 MEOW_R3PROII_ROOT/$HOME 可覆盖,容器默认不变 - build_mbedtls.sh 递归清理 library/ 与 3rdparty/ 旧对象,修宿主/mipsel 混架构归档 - test_ncm_core.c 改用 $TMPDIR,Termux /tmp 不可写不再导致 store/cache/tag 用例失败 - REPORT §40:构建/测试/热更结果(ncm md5 1bbd2a55…,Music du 前后恒定)
This commit is contained in:
1 parent
2c69070cc4
commit
7d4906828d
5 files changed
+226
-10
No files matched your search
@@ -3429,3 +3429,54 @@ MP3 ≤128k→标准,>128k→极高 HQ。列表显示**实际档**(如 hires
|
||||
切到「极高」档再播同名曲,会按实际档新落一份 `song_<id>_exhigh.mp3`(一次性重下,旧文件不删,
|
||||
列表按 (id,实际档,ext) 去重只显示一行,旧文件由 LRU/清空自然回收)。未对旧名做向上探测扫描
|
||||
(避免每次 miss 扫目录 + 读多份文件头);如需「旧名跨档零重下」,可作为后续优化加一次目录级兼容探测。
|
||||
|
||||
## 40. M8:交叉编译 + 真机热更(2026-11-04)
|
||||
|
||||
用户原话:「跑」(把 M5/M6 已合并代码交叉编译并热更上卡真机验证)。
|
||||
|
||||
### 40.1 宿主适配层(新增入库)
|
||||
|
||||
| 文件 | 改动 |
|
||||
|---|---|
|
||||
| `build_ncm_cross_host.sh`(新) | 不改原脚本的容器路径约定:临时布局同构 `$HOME/Project/R3ProII`(`.tools/zig-mipsel-cc`、`mipsel-linux-muslsf-cross/mipsel-linux-muslsf` → 本机 `~/.tools/mipsel-linux-musleabi-sysroot`、`zig-env/bin/zig` → 系统 `ar` 包装)+ launcher 镜像(仓库头文件 + 取回的 `meow_font.a`),导出 `CC_MIPS`/`AR_MIPS`/`TMPDIR` 后按 `sdk → vendor → host-mbedtls → core → tests → ncm` 原样执行;每步日志落 `~/.cache/meow-ncm-build/logs/`。缺省 `all`,也可单步跑。 |
|
||||
| `libs_common.sh` | `CC_MIPS`/`AR_MIPS` 由硬编码 `/home/Aska/...` 改为 `MEOW_R3PROII_ROOT`(缺省 `$HOME/Project/R3ProII`)+ 环境变量可覆盖;容器行为不变。 |
|
||||
| `build_mbedtls.sh` | 清旧对象从 `library/*.o` 改为递归清 `library/` + `3rdparty/`(everest/p256-m 的对象在 3rdparty),否则混架构对象会被归档进库。 |
|
||||
| `test/test_ncm_core.c` | 三处硬编码 `/tmp`(store/cache/tag)改为 `$TMPDIR` 优先,默认 data_dir 同改;Termux `/tmp` 不可写,否则 deviceId 持久化/机器密钥直接 FAIL。 |
|
||||
|
||||
> 任务建议的 `build_ncm_host.sh` 名称已被「宿主 UI 截图/内存 harness」占用,适配层改用 `build_ncm_cross_host.sh`。
|
||||
|
||||
### 40.2 构建结果
|
||||
|
||||
| 项 | 结果 |
|
||||
|---|---|
|
||||
| `build_sdk_host.sh --verify` | 75 成员(31 OBJS + meow_font.o + 43 freetype),全 ELF32 MIPS32 rel2(o32);`meow_ui.a` 5,701,866 B;本机约 16s |
|
||||
| mbedtls(裁剪 config,102 enabled) | mipsel:crypto text 267,933 / x509 39,074 / tls 112,485(合计 419,492 ≈ 410 KB) |
|
||||
| `build_ncm.sh` | `ncm` **1,193,464 B**;text 1,084,494 / data 1,948 / bss 1,493,360;ELF32 MIPS32 rel2、静态链接、已 strip;**0 warning**(自有代码 -Wall -Wextra) |
|
||||
| md5 | `1bbd2a5527dc992de60cdf4b0ba8656d` |
|
||||
| 耗时 | 首次整链约 13s;清空 `out/app-mipsel` 后重编 39 个对象约 5s(zig cc 进程级缓存命中) |
|
||||
|
||||
### 40.3 宿主全量测试(补齐 M5/M6 缺口)
|
||||
|
||||
| 测试 | 结果 |
|
||||
|---|---|
|
||||
| `test/test_ncm_core_host`(全量,含 M5 `test_cache_tag` / M6 `test_cache_actual_naming`) | **139 PASS / 0 FAIL / 2 SKIP**(SKIP 均为 live 网络项:Termux 环境 unikey rc=-5;计数不含 `== RESULT: PASS ==` 横幅) |
|
||||
| `test/test_ncm_tag_host`(FLAC/MP3 tag 嵌入/读回/分块/降级) | **52 PASS / 0 FAIL** |
|
||||
| `test/test_ncm_cache_host`(实际档命名/命中下探/旧名兼容/LRU) | **63 PASS / 0 FAIL** |
|
||||
| 告警 | core/tag/cache/ncm 各构建日志 `warning:` 计数均为 0 |
|
||||
| mipsel 测试二进制 | `out/test_ncm_core_mipsel` text 545,098 链接成功;本机无 `qemu-mipsel`,未执行 |
|
||||
|
||||
### 40.4 真机热更(白名单仅 MeowAPPs/dev.player.ncm/)
|
||||
|
||||
- 设备 `root@10.76.208.50`,`app.json.exec=/usr/data/mnt/sd_0/MeowAPPs/dev.player.ncm/ncm`。
|
||||
- 旧件 md5 `276b6caaf3212389f7f9dab1c289ac27`(1,160,092 B)→ 备份 `ncm.bak.276b6caaf3212389f7f9dab1c289ac27`(同目录;原有 `ncm.bak` 保留)。
|
||||
- 新件经 `ssh 'cat > ncm.new'` 流式写入 → 卡上 md5 核对一致 → `chmod 755` + `mv` → `sync`。
|
||||
- 卡上 md5 `1bbd2a5527dc992de60cdf4b0ba8656d` == 本地;大小 1,193,464 B。
|
||||
- **红线校验**:`du -s /usr/data/mnt/sd_0/Music` 写前/写后均为 **199,164,288 B**,恒定;未触碰 Music/MeowData/固件,未重启设备。
|
||||
- 生效方式:launcher 直接执行 `MeowAPPs/<pkg>/` 二进制,替换文件即生效,app 列表无需 rescan。热更时 ncm 未在运行,用户重新打开 App 即加载新件(物理验收由用户做)。
|
||||
|
||||
### 40.5 遗留
|
||||
|
||||
- **mipsel 侧未运行**:本机无 `qemu-mipsel`,`out/test_ncm_core_mipsel` 只完成编译+链接;真机功能验证依赖用户打开 App(顶栏入口/列表)。
|
||||
- **live 网络测试跳过**:Termux 环境 HTTPS 到 music.163.com 返回 rc=-5(网络/证书被拒),2 项 SKIP;加密/缓存/API 解析等离线项全部 PASS。
|
||||
- **产物不入库**:`ncm` 二进制、`meow_ui.a`、vendor、`out/` 均只在本机产出;仓库中原本被跟踪的旧 `ncm`/`test_ncm_core_host` 已恢复为 HEAD 版本,避免把本机构建产物带进提交。
|
||||
- 卡上保留两份备份(`ncm.bak` 与 `ncm.bak.<旧md5>`),需要回滚可 `cp` 任一覆盖。
|
||||
Reference in new issue
Block a user