fix(build): 入口.so放overlay顶层(root_dir=dirname(dirname(__file__))上两级须为应用根,accounting worker getConfig实抓崩)+runner移_runners/

This commit is contained in:
yumoqing 2026-09-17 18:05:02 +08:00
parent 87e8863208
commit 2e9beeb014
2 changed files with 22 additions and 19 deletions

View File

@ -110,11 +110,14 @@ echo "$MANIFEST" | grep -v '^$' | while read -r entry; do
gen_jobs "$pkgdir" "$pkg"
done
# 入口与 app 顶层模块script 形态,编译成顶层模块进 _appbin5 字段与 worker 对齐)
mkdir -p "$OUT/_appbin"
# 入口与 app 顶层模块script 形态5 字段与 worker 对齐)。
# 入口 .so 放 **overlay 顶层**2026-09-17 实抓):入口模块 top-level 有
# root_dir = dirname(dirname(__file__)) 形态accounting worker 拿它 getConfig——虚拟
# __file__=overlay/<stem>.py 时上两级恰为应用根;放 _appbin/ 子目录则上两级=overlay 崩。
mkdir -p "$OUT"
for f in "$ROOT"/app/*.py; do
stem=$(basename "$f" .py)
printf "%s\t%s\tmod\t%s\t%s\n" "$f" "$OUT/_appbin" "$stem" "$OUT/_appbin" >> "$JOBS"
printf "%s\t%s\tmod\t%s\t%s\n" "$f" "$OUT" "$stem" "$OUT" >> "$JOBS"
done
cat > "$WORK/worker.sh" <<'EOS'
@ -138,10 +141,13 @@ echo "编译任务 $total 个,并行 4 …"
xargs -a "$JOBS" -P 4 -n 5 bash "$WORK/worker.sh"
# app 命名空间包2026-09-17 编译态起服务实抓):入口目录 app/ 无 __init__.py源码态靠
# sys.path 插 root_dir 以命名空间包形式被 `from app.quality_gate import ...` 引用;编译态
# 必须把 app 模块 .so 复制一份进 overlay/app/(无 __init__ = 命名空间包py3 原生支持
# 目录内 .so 子模块。_appbin 顶层副本保留给入口自身 `from ktv_adapter import ...` 形态
# 把入口模块 .so 复制一份进 overlay/app/(无 __init__ = 命名空间包py3 原生支持目录内
# .so 子模块。overlay 顶层副本服务入口自身 `from ktv_adapter import ...` 与 root_dir 语义
mkdir -p "$OUT/app"
cp "$OUT"/_appbin/*.so "$OUT/app/" 2>/dev/null
for f in "$ROOT"/app/*.py; do
stem=$(basename "$f" .py)
cp "$OUT/$stem.$TAG.so" "$OUT/app/" 2>/dev/null
done
# 清理 .build 残留NFS 上 rm -rf 偶发 Directory not empty--remove-output 只删自己那轮)
find "$OUT" -maxdepth 4 -type d -name "*.build" -exec rm -rf {} + 2>/dev/null
find "$OUT" -maxdepth 4 -type d -name "*.build" -exec rm -rf {} + 2>/dev/null
@ -150,28 +156,25 @@ ok=$(wc -l < "$OKLOG"); fail=$(wc -l < "$FAILLOG")
echo "完成: OK=$ok FAIL=$fail"
if [ "$fail" -gt 0 ]; then echo "== 失败清单 =="; cat "$FAILLOG"; exit 1; fi
# runner工具脚本非业务代码保留源码形态
cat > "$OUT/_appbin/run_compiled.py" <<'EOS'
# runner工具脚本非业务代码保留源码形态放 _runners/ 不污染 overlay 顶层模块面)
mkdir -p "$OUT/_runners"
cat > "$OUT/_runners/run_compiled.py" <<'EOS'
#!/usr/bin/env python3
"""编译态入口 runnersys.argv 原样透传给 ahserver webapp 的参数解析。
sys.path 顺序_appbin(入口编译模块) > overlay 根(编译业务包,遮蔽 site-packages 源码) > 其余"""
sys.pathoverlay 根(入口编译模块+业务包,遮蔽 site-packages 源码)"""
import os, sys
_here = os.path.dirname(os.path.abspath(__file__))
_overlay = os.path.dirname(_here)
_overlay = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, _overlay)
sys.path.insert(0, _here)
import pipeline_app
pipeline_app.main()
EOS
cat > "$OUT/_appbin/run_accounting_compiled.py" <<'EOS'
cat > "$OUT/_runners/run_accounting_compiled.py" <<'EOS'
#!/usr/bin/env python3
"""编译态记账 worker runnersys.argv 透传(-w workdir。"""
import os, sys
_here = os.path.dirname(os.path.abspath(__file__))
_overlay = os.path.dirname(_here)
_overlay = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, _overlay)
sys.path.insert(0, _here)
import pipeline_accounting_worker
pipeline_accounting_worker.main()
EOS

View File

@ -36,7 +36,7 @@ echo "Starting pipeline-app ($MODE mode) on port $PORT..."
export PATH="$WORKDIR/bin:$PATH"
# Nuitka 编译态开关2026-09-17conf/compiled_mode 文件存在 → 用 overlay 的编译入口;
# 删除该文件即回退源码态。overlay 与 runner 由 scripts/build_binary.sh 产出(测试机构建)。
COMPILED_ENTRY=$WORKDIR/binpkg_overlay/_appbin/run_compiled.py
COMPILED_ENTRY=$WORKDIR/binpkg_overlay/_runners/run_compiled.py
if [ -f "$WORKDIR/conf/compiled_mode" ] && [ -f "$COMPILED_ENTRY" ]; then
ENTRY="$COMPILED_ENTRY"
else
@ -59,8 +59,8 @@ if [ "$MODE" != "web" ]; then
fi
fi
if [ ! -f "$ACC_PIDFILE" ]; then
if [ -f "$WORKDIR/conf/compiled_mode" ] && [ -f "$WORKDIR/binpkg_overlay/_appbin/run_accounting_compiled.py" ]; then
ACC_ENTRY="$WORKDIR/binpkg_overlay/_appbin/run_accounting_compiled.py"
if [ -f "$WORKDIR/conf/compiled_mode" ] && [ -f "$WORKDIR/binpkg_overlay/_runners/run_accounting_compiled.py" ]; then
ACC_ENTRY="$WORKDIR/binpkg_overlay/_runners/run_accounting_compiled.py"
else
ACC_ENTRY="$WORKDIR/app/pipeline_accounting_worker.py"
fi