fix: --encrypt/--license 构建链修复(网关收集项、[license] 注入点、契约测试)
- config.toml:--encrypt 会先 PyArmor 混淆 main.py / server.py,PyInstaller 静态 分析跟不到里面的 `from chongming.app import app`,网关包整个漏收(打包"成功"、 产物启动即报 No module named 'chongming')—— 收集清单显式列出 chongming / chongming.app 等入口包,注释也从"静态分析可跟到"改准; - public/config.toml:补 [license] 段(public_key 留空),--license 的注入点, 缺了会在 prepare 阶段报"未找到 [license] 段的 public_key"; - README:补 --license 的公钥前置条件(keygen → license_public.key 或环境变量); - test_build_flags.py:4 条契约守卫 —— 真实模板/骨架可注入 [license]、收集清单含 网关入口包、加密包密钥写进包内且按运行端口径(get_key())可导入。此前用例都 自造 config.toml,这两类模板漂移测不出来。 实测(device-hub):修复前 --encrypt --license 产物启动报错;修复后网关启动、 授权校验通过、插件从加密 mbank 正常加载、HTTP 正常返回。
This commit is contained in:
+12
-2
@@ -102,8 +102,10 @@ config_path = "./config/workers/config.toml"
|
||||
|
||||
[pyinstaller_build_import]
|
||||
# 打包收集清单(PyInstaller --hidden-import / Nuitka --include-module)。
|
||||
# 网关本体依赖随 chongming-gateway 包发布,打包时能沿 `from chongming.app import app`
|
||||
# 静态跟到;本清单保留两类:
|
||||
# 网关本体(chongming-gateway 包)**未混淆时**能沿 `from chongming.app import app`
|
||||
# 静态跟到;但 --encrypt 会先 PyArmor 混淆 main.py / server.py,此时静态分析跟不到,
|
||||
# 网关入口包必须显式列出(见 base 前几项)。本清单保留三类:
|
||||
# - 网关入口包(chongming / chongming.app 与骨架直接引用的子模块)
|
||||
# - 动态导入、静态分析看不到的(granian 内部子模块、amqtt 插件、
|
||||
# sqlite_vfs.contrib、chongming_worker 子模块等)
|
||||
# - public 骨架自身(server / utils)与服务器可选实现(uvloop 等)
|
||||
@@ -122,6 +124,14 @@ base = [
|
||||
"chongming_request",
|
||||
"chongming_auth",
|
||||
"server",
|
||||
# 网关入口包:--encrypt 时 main.py / server.py 先被 PyArmor 混淆,里面的
|
||||
# `from chongming.app import app` 对 PyInstaller 静态分析不可见 —— 漏了会在
|
||||
# 打包期"成功"、产物启动即报
|
||||
# "无法导入网关(chongming.app): No module named 'chongming'"
|
||||
"chongming",
|
||||
"chongming.app",
|
||||
"chongming.app.core.logger",
|
||||
"chongming.app.core.parent_death",
|
||||
"module_bank", # 模块化打包工具
|
||||
"sqlite_vfs",
|
||||
"sqlite_vfs.core",
|
||||
|
||||
Reference in New Issue
Block a user