fix(chv-muse-r11fix): authd 层 1 叶子树补 errors.py + stub __init__、层 2 seed 补三键

层 1:真实的 cloud/chv/__init__.py import executor/orphans,拷进
authd 最小叶子树(/usr/local/lib/chv-authd)会让 chv-authd 在
import 时 ModuleNotFoundError 而 crash loop——先是 errors.py
缺失,补上后又在 executor 上失败(探针 fixprobe3)。新增
chv-guest/authd_init_stub.py(仅导出 ChvFailure),build.sh 拷
errors.py + stub 作叶子树的 __init__.py,不再拷真实包 __init__;
P3_LIBS_PRESENT 条件加 errors.py;EXTRA_CONTENTS 加 errors.py 与
__init__.py;两 lockfile 脚本的 DECLARED_SOURCES 同款登记。
层 2:_seed_env_entries 把 guest-env 里的
GITEA_URL/GITEA_USER/SYNC_REPO 抄进 authd-seed(build_server
要求四键齐全,只 GITEA_TOKEN 即 ValueError);没有不补、不编
默认值。测试:seed 三键落盘/缺键不补、干跑夹具含新文件、lockfile
合成清单含新两项。
This commit is contained in:
host committed 2026-11-07 03:56:24 +00:00
1 parent b41fb67026
commit 2d12179b9a
8 files changed
+110 -13

No files matched your search

+14
View File
@@ -0,0 +1,14 @@
"""chv-authd 叶子树的 stub cloud/chv/__init__.py(round-11 真机修复,层 1)。
真实的 cloud/chv/__init__.py import executor/orphans(进而要整套
cloud 包),拷进 authd 的最小叶子树(/usr/local/lib/chv-authd)
会让 chv-authd 在 import 时 ModuleNotFoundError 而 crash loop:
先是 cloud.chv.errors 缺失,补上 errors.py 后又会在 executor
上失败。探针 fixprobe3 的形状:叶子树里只放 errors.py + 仅导出
ChvFailure 的 stub __init__.py——authd 只需要这个名字。
build.sh 拷本文件作叶子树的 cloud/chv/__init__.py,不拷真实的
包 __init__。
"""
from cloud.chv.errors import ChvFailure
__all__ = ["ChvFailure"]
+15 -4
View File
@@ -188,14 +188,18 @@ done
#(test_chv_residual.BuildScriptMinimalAppTest 钉住),缺失时只
# 警告、不失败——缺叶子模块的镜像里 chv-authd 起不来,chv-sync
# 按 P3 差距表 §3.5 回落旧落盘路径并警告,绝不静默假装有 authd。
for p3_file in authd.py git-credential-chv-authd chv-authd.service; do
# round-11 真机修复(层 1):叶子树还须 errors.py + stub
# __init__(authd_init_stub.py)——真实的 cloud/chv/__init__.py
# import executor/orphans,拷进最小叶子树会让 chv-authd
# ModuleNotFoundError 而 crash loop(探针 fixprobe3 的形状)。
for p3_file in authd.py git-credential-chv-authd chv-authd.service authd_init_stub.py; do
if [ ! -f "$SCRIPT_DIR/$p3_file" ]; then
echo "缺少 $p3_file(Muse P3 客机文件):$SCRIPT_DIR" >&2
exit 1
fi
done
P3_LIBS_PRESENT=0
if [ -f "$REPO_DIR/cloud/chv/authd.py" ] && [ -f "$REPO_DIR/cloud/chv/sentinel.py" ] && [ -f "$REPO_DIR/cloud/__init__.py" ] && [ -f "$REPO_DIR/cloud/chv/__init__.py" ]; then
if [ -f "$REPO_DIR/cloud/chv/authd.py" ] && [ -f "$REPO_DIR/cloud/chv/sentinel.py" ] && [ -f "$REPO_DIR/cloud/chv/errors.py" ] && [ -f "$REPO_DIR/cloud/__init__.py" ] && [ -f "$REPO_DIR/cloud/chv/__init__.py" ]; then
P3_LIBS_PRESENT=1
else
echo "警告:Muse P3 云端叶子模块不在仓库里(cloud/chv/authd.py 与 sentinel.py),镜像暂不含 authd 叶子模块" >&2
@@ -319,11 +323,18 @@ VC_ARGS=(-a "$OUT/disk.raw"
# 拷入镜像(本分支已有,合入后自动生效);不存在时只警告、不失败——
# M4 既定 build.sh 不硬要求 cloud/,见上。缺叶子模块时 chv-authd
# 守护进程起不来,chv-sync 按差距表 §3.5 回落旧路径并警告。
# round-11 真机修复(层 1):叶子树是 errors.py + stub __init__
#(authd_init_stub.py),不拷真实的 cloud/chv/__init__.py(它
# import executor/orphans,会让 authd 在最小叶子树里
# ModuleNotFoundError 而 crash loop);cloud/__init__.py 本身只
# 有 docstring,照常拷。
if [ "$P3_LIBS_PRESENT" = "1" ]; then
VC_ARGS+=(--copy-in "$REPO_DIR/cloud/chv/authd.py:/usr/local/lib/chv-authd/cloud/chv/"
--copy-in "$REPO_DIR/cloud/chv/sentinel.py:/usr/local/lib/chv-authd/cloud/chv/"
--copy-in "$REPO_DIR/cloud/chv/errors.py:/usr/local/lib/chv-authd/cloud/chv/"
--copy-in "$REPO_DIR/cloud/__init__.py:/usr/local/lib/chv-authd/cloud/"
--copy-in "$REPO_DIR/cloud/chv/__init__.py:/usr/local/lib/chv-authd/cloud/chv/")
--copy-in "$SCRIPT_DIR/authd_init_stub.py:/usr/local/lib/chv-authd/cloud/chv/"
--run-command 'mv /usr/local/lib/chv-authd/cloud/chv/authd_init_stub.py /usr/local/lib/chv-authd/cloud/chv/__init__.py')
fi
# P1 交接(Muse P1 的 vsock_notify.py):文件在仓库里存在时拷入
# 镜像(P1 分支才有,本分支尚无);不存在时只警告、不失败——
@@ -395,7 +406,7 @@ else
echo "警告:CHROMIUM_HEADLESS_SHELL_REV 未设,Chromium 版本只记录、不钉死(V-9 验收须设该变量重建)" >&2
fi
EXTRA_CONTENTS=""
[ "$P3_LIBS_PRESENT" = "1" ] && EXTRA_CONTENTS="cloud/chv/authd.py,cloud/chv/sentinel.py"
[ "$P3_LIBS_PRESENT" = "1" ] && EXTRA_CONTENTS="cloud/chv/authd.py,cloud/chv/sentinel.py,cloud/chv/errors.py,cloud/chv/__init__.py"
[ "$VSOCK_NOTIFY_PRESENT" = "1" ] && EXTRA_CONTENTS="${EXTRA_CONTENTS:+$EXTRA_CONTENTS,}vsock_notify"
python3 "$SCRIPT_DIR/buildinfo.py" "$OUT" "$TAG" "$UBUNTU_VERSION" "$CODEX_VERSION" "$REPO_COMMIT" "$UBUNTU_IMAGE_SHA256" "${PLAYWRIGHT:-1}" "${CHROMIUM_HEADLESS_SHELL_REV:-}" "$EXTRA_CONTENTS"
fi
+4
View File
@@ -34,11 +34,15 @@ DECLARED_SOURCES = {
# 叶子模块与 vsock 通知脚本,均是仓库内脚本,版本随
# repo_commit。缺了它们 check 会报 contents 未覆盖(717efc4
# 真机实测:6 项 unresolved,verify 与 check 双双失败)。
# round-11 真机修复(层 1):叶子树新增 errors.py 与 stub
# __init__.py(authd_init_stub.py),同款 repo_commit 登记。
"chv-authd": "repo_commit",
"git-credential-chv-authd": "repo_commit",
"chv-authd.service": "repo_commit",
"cloud/chv/authd.py": "repo_commit",
"cloud/chv/sentinel.py": "repo_commit",
"cloud/chv/errors.py": "repo_commit",
"cloud/chv/__init__.py": "repo_commit",
"vsock_notify": "repo_commit",
}
+5
View File
@@ -55,11 +55,16 @@ DECLARED_SOURCES = {
# 叶子模块与 vsock 通知脚本,均是仓库内脚本,版本随
# repo_commit。缺了它们 generate 会记 6 项 unresolved,
# verify 与 check 双双失败(717efc4 真机实测)。
# round-11 真机修复(层 1):叶子树新增 errors.py 与 stub
# __init__.py(authd_init_stub.py),同款 repo_commit 登记,
# 缺了它们新镜像的 lockfile 同样会 unresolved。
"chv-authd": "repo_commit",
"git-credential-chv-authd": "repo_commit",
"chv-authd.service": "repo_commit",
"cloud/chv/authd.py": "repo_commit",
"cloud/chv/sentinel.py": "repo_commit",
"cloud/chv/errors.py": "repo_commit",
"cloud/chv/__init__.py": "repo_commit",
"vsock_notify": "repo_commit",
}