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 的注入点;
- README.project.md:补授权公钥前置条件(keygen → license_public.key 或环境变量),
  以及 --only 对 obfuscate 同样划界(加密构建要显式带上,否则混淆被静默跳过)。
This commit is contained in:
2026-10-14 15:29:25 +08:00
parent 042ac0e8d5
commit d58be74123
3 changed files with 28 additions and 1 deletions
+13 -1
View File
@@ -81,7 +81,11 @@ config_path = "./config/workers/config.toml"
[pyinstaller_build_import]
# 打包收集清单(PyInstaller --hidden-import / Nuitka --include-module),`uv run build` 的
# pack 步骤使用。网关本体依赖随 chongming-gateway 包发布、静态分析可跟到;这里保留:
# pack 步骤使用。网关本体(chongming-gateway 包)**未混淆时**能沿骨架的
# `from chongming.app import app` 静态跟到;但 --encrypt 会先 PyArmor 混淆
# main.py / server.py,此时静态分析跟不到,网关入口包必须显式列出(见 base 前几项)。
# 这里保留:
# - 网关入口包(chongming / chongming.app 与骨架直接引用的子模块)
# - 动态导入、静态分析看不到的(granian 内部子模块、amqtt 插件、sqlite_vfs 等)
# - public 骨架自身(server / utils)与服务器可选实现(uvloop 等)
# 内置插件专属依赖(网关本体不 import 的第三方包)写根目录 plugins_deps.toml,按插件分节声明。
@@ -90,6 +94,14 @@ base = [
"utils.launch",
"utils.config",
"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",
"granian",
"granian._compat",