目標和動力
在任何建構系統中定義建構動作時,請務必正確 並完整指定該動作的輸入和輸出內容 漸進式建構作業 (在對來源稍有變更之後進行部分重新建構) 必須 確認建構圖表中呈現的資訊皆正確無誤 辨識並執行重建作業如果這項資訊有誤或不完整 重新建構可能會產生錯誤結果,或導致完全不同的結果 乾淨的建構作業
只會讀取其宣告的輸入內容,且只會寫入其宣告內容的動作 宣告的輸出內容對建構系統而言是密封的。 今天我們沒有完全遺傳的架構 而是可以進行數十種動作 以及讀取/寫入不在宣告輸入/輸出中的檔案 這樣我們就不用在實際工作環境中完全仰賴漸進式重建。 必須要求我們執行完整簡潔的版本,速度會慢約 10 倍。
再者,這些非密封的動作通常表明自己有連貫性 工程師運作並浪費時間 正在嘗試排解問題
這項專案的目標是調查並修正所有非密封化的例項 建構動作
技術背景
熟悉 GN 和 BUILD.gn
檔案很重要,特別是
指定類型:
在許多情況下,您也需要瞭解 depfile 的運作方式:
如需更多重要資訊,請參閱本指南:
如何提供協助
選取工作
選擇任何標示為非密封的建構目標。如下所示:
action("foo") {
...
# TODO(https://fxbug.dev/xxxxx): delete the line below and fix this
hermetic_deps = false
}
執行工作
重現問題
如果要瞭解動作無法密封的原因,就需要使用 動作追蹤工具這項工具會在追蹤時執行所有建構動作 然後將這些存取與宣告的 這些動作的輸入 / 輸出 / depfile
如要在本機重現問題,請先移除 hermetic_deps = false
,然後
請按照下列方式設定建構作業:
fx set what --args=build_should_trace_actions=true
使用上述設定執行建構作業應會產生錯誤 可行的疑難排解資訊。
根據預設,CQ 會執行動作追蹤,因此您可以使用本 API 取得相同的 來解決連線問題
如果問題已提報,該錯誤應包含 錯誤訊息中的資訊如果沒有錯誤,請回報錯誤並 記錄您收集的資訊
修正問題
有幾個常見原因可能造成歷史上的問題。您可以在 本指南。 如果您遇到的問題未列於指南中,請考慮 改善指南內容
如果您可以移除 hermetic_deps = false
,並仍成功建構
若是使用追蹤記錄或追蹤嘗試通過,就表示您的變更已可套用至
現場業務代表受過訓練
會提交 AI 客戶商機以供審查
完成工作
尋找 OWNERS 的審查者並合併變更。
範例
- 472565:[建構] 在 generate_fidl_json.py 中產生 depfile
- 472657:[建構] 修正 hotsort_target_internal 的功用
- 473980:[建構] 修正 fidl-c-header 的基數
- 472658:[build] 以傳統手法建構 go_library
- 472637:[建構] 修正扁平緩衝區的特徵
贊助者
如有問題或想掌握最新狀態,請與我們聯絡: