From 3906be0dd3ec22f9d476e13dbc09edc1ad40127c Mon Sep 17 00:00:00 2001 From: argszero Date: Wed, 5 Aug 2026 03:10:51 +0800 Subject: [PATCH] =?UTF-8?q?emrg:=20build-release=20=E4=BA=8C=E5=8D=81?= =?UTF-8?q?=E6=AC=A1=E4=BF=AE=E5=A4=8D=20=E2=80=94=20smoke=20Windows=20cmd?= =?UTF-8?q?=20=E8=B7=AF=E5=BE=84=20cygpath=20=E8=BD=AC=E6=8D=A2=EF=BC=88ra?= =?UTF-8?q?nt=20#13=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 第 20 次实跑:3/4 平台成功(WINDIR 判断修复生效,POSIX 恢复), Windows Inno 编译通过(artifacts 生成),smoke 第 1 步 ✓,第 2 步 daemon 启动 exit 1(5 秒即挂,短于 15 秒轮询)。 根因:cmd //c start 分支的 $HOME 是 Git Bash POSIX 路径 (/c/Users/runneradmin/...),cmd 是 Windows 原生程序不认识 POSIX 路径 → start 失败 → daemon 未启动 → exit 1。 修复:cmd 分支用 cygpath -m 将 $HOME/.emrg/install/bin/emrgd.cmd 转 Windows 路径(C:/Users/... 正斜杠形式,cmd 可读)。2 处同步。 验证: - bash -n OK - cygpath -m 转换模拟:/c/Users/runneradmin/... → C:/Users/runneradmin/... ✓ - POSIX 分支不受影响(无 WINDIR → nohup)✓ - pytest 464 passed;import checks OK --- packaging/smoke-test.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packaging/smoke-test.sh b/packaging/smoke-test.sh index 25a6cf91..1b858042 100755 --- a/packaging/smoke-test.sh +++ b/packaging/smoke-test.sh @@ -52,7 +52,9 @@ EOF # R101:Windows Git Bash 的 nohup 后台 bash 脚本会立即退出(无 POSIX 进程模型) # → 用 cmd //c start /b emrgd.cmd 后台启动;POSIX 保持 nohup emrgd if [ -n "${WINDIR:-}" ]; then - (cd "$HOME" && cmd //c "start /b $HOME/.emrg/install/bin/emrgd.cmd" >/dev/null 2>&1) + # $HOME 在 Git Bash 是 POSIX 路径(/c/Users/...),cmd 需 Windows 路径(C:\Users\...)→ cygpath -m + EMRGD_CMD="$(cygpath -m "$HOME/.emrg/install/bin/emrgd.cmd")" + (cd "$HOME" && cmd //c "start /b $EMRGD_CMD" >/dev/null 2>&1) else nohup emrgd >/dev/null 2>&1 & fi @@ -112,7 +114,9 @@ if emrg server stop 2>&1 | grep -q "stopped"; then ok "server stop"; else fail " # 5. emrg rant "test"(R107:_send_rant 依赖 daemon——先重起) say "5. emrg rant" if [ -n "${WINDIR:-}" ]; then - (cd "$HOME" && cmd //c "start /b $HOME/.emrg/install/bin/emrgd.cmd" >/dev/null 2>&1) + # $HOME 在 Git Bash 是 POSIX 路径(/c/Users/...),cmd 需 Windows 路径(C:\Users\...)→ cygpath -m + EMRGD_CMD="$(cygpath -m "$HOME/.emrg/install/bin/emrgd.cmd")" + (cd "$HOME" && cmd //c "start /b $EMRGD_CMD" >/dev/null 2>&1) else nohup emrgd >/dev/null 2>&1 & fi