fix(launcherd): M42 包安装入口改委托 nyai — 删内联解包/验签/部署,复用 M35 安全链
- app_launcher.c 删掉 meow_pkg_install 旧内联实现(文件名推包名、硬要 .mpk 后缀、 rm -rf 目标目录直解、失败不回滚 .bak_、不拒 ./..、系统包大小写敏感比较); 导出保留签名逻辑不动(验签仍只 shell-out meow_verify)。 - 新增 pkg_install.c:fork+exec /usr/bin/nyai install <路径>(argv 直传不经 shell; MEOW_NYAI_BIN 覆写,缺省不走 PATH)。包身份/暂存/清理/防降级/大小写全由 nyai 闭环。 - stdout/stderr 分两条管道收:nyai 进度是缓冲 stdout,错误是即时 stderr,合流会把 真错误顶掉(真机首测即踩到);错误文案只取 stderr 尾行。 - start/poll 两段式(+busy 查询)供 UI 主循环按帧驱动不假死;同步封装 20ms 切片轮询, 180s 超时 SIGTERM→SIGKILL,不用时钟 ABI(M40 time32 教训)。 - main_menu --pkg-install 失败打 stderr 可读文案、退出码统一 0/1。 - test_pkg_install.c:44 断言(路径预检含任意文件名可装/目录/不可读/控制字符/超长、 错误文案矩阵、argv 直传、start 立即返回、并发拒装、超时、nyai 缺失)。 - 重链 meow_launcherd 894940B/cea0a735(链 meow_ui.a 86800633,0 warning); fw_content.conf 同步钉值。
This commit is contained in:
1 parent
ebd64d07e1
commit
58cdb73bf8
8 files changed
+654
-108
No files matched your search
@@ -2132,7 +2132,7 @@ static void usage(void)
|
||||
" [--sim-exit-tap N] [--sim-power-hold N]\n"
|
||||
" [--sim-power-pick N] [--sim-no-exec]\n"
|
||||
" [--dumpkeys N] [--scan] [--sysdump]\n"
|
||||
" [--pkg-install <pkg.mpk>] [--pkg-export <pkg> <out.mpk>]\n"
|
||||
" [--pkg-install <file>] [--pkg-export <pkg> <out.mpk>]\n"
|
||||
" [--ipc-only N] [--ipc-sock <path>] [--appinfo <app.json>]\n"
|
||||
" [--fontscan <card_root>]\n");
|
||||
}
|
||||
@@ -2253,10 +2253,12 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
if (pkg_install_mpk) {
|
||||
/* M2.12 .mpk 安装接口(CLI 钩子;UI 后期)。安全、离开主循环。 */
|
||||
/* M42:安装委托 nyai(唯一权威实现;包身份只看包内 app.json,文件名/后缀不参与)。
|
||||
* 失败必须给可读原因(nyai stderr 尾行),不能静默;退出码统一 0/1。 */
|
||||
int r = meow_pkg_install(pkg_install_mpk);
|
||||
printf("pkg_install %s -> %d\n", pkg_install_mpk, r);
|
||||
return r;
|
||||
if (r != 0) fprintf(stderr, "pkg_install failed: %s\n", meow_pkg_install_error());
|
||||
return r == 0 ? 0 : 1;
|
||||
}
|
||||
if (pkg_export_name && pkg_export_out) {
|
||||
/* M2.12 .mpk 导出接口(CLI 钩子;UI 后期)。 */
|
||||
|
||||
Reference in new issue
Block a user