本卡屬 FR-114(母卡 CM-2019),CM-2110 第五段 188 全量 build 撞到的 CM-2053 回歸。擋住 188 build(CM-2053 三點實證)。只改 BE build 腳本。

問題是什麼(白話)

CM-2053 把驗簽零件 cryptography、cffi 列為「安全關鍵套件」,要求一律編成機器碼、不可以原樣 .py 附帶(原樣附帶就能被換掉,驗簽失效)。出包前有一道守門檢查這件事,但檢查方式是「產物裡要有 <套件名>/ 這個目錄、而且目錄內沒有 .py」。cryptography 自帶 .so,編完會留一個目錄,所以過得了;cffi 的 Python 部分被 Nuitka 直接編進主程式、不留目錄,只在根目錄留一支 _cffi_backend.so——守門看不到目錄就判「cffi 不在產物內」,整個 build 失敗。cffi 其實有正確編進去(runner 在 binary 裡查得到 cffi.api、cffi.model 字串),是守門的判斷條件寫錯。CM-2053 驗收退回時補 cffi 進清單(b64995ac9),當時只在 188 跑了 cryptography 單支探針、沒跑全量,所以沒被發現。

在哪裡(首腦核對過)

BE scripts/build/security_critical_pkgs.sh
  :7-10   SECURITY_CRITICAL_PKGS=(cryptography cffi)
  :13-22  assert_security_critical_compiled::17 `[[ -d "${target}/${sc}" ]] || 判不在產物內`  ← 條件寫錯
BE scripts/build/build_release.sh:724  呼叫處;:763-764 對每支安全關鍵套件 add_pkg 顯式編譯(這段是對的,不動)
188 失敗 log:/opt/guidant-ai-be/.build/build-cm2110-run2.log
188 半成品產物:.build/dist/guidant-ai-1.20.0(cryptography/ 有 1 個 .so、0 個 .py;無 cffi/ 目錄;根目錄有 _cffi_backend.so)

怎麼修

驗證

紀律

已完成修正(白話)