目標與動力
我們在 2020 年推出了新的建構範本,用於定義套件、元件和測試。新範本更能反映專案的架構目標和方向會取代 2016 年的舊範本,主要是 package()
、test_package()
和 unittest_package()
。
新版範本有一些優點:
- 避免重複,且語法更簡潔。從將舊目標遷移至新範本的經驗,新定義的範圍會減少 30% 至 50%。
- 元件只能定義一次,然後用於多個套件。舉例來說,執行個體可以重複使用參與產品定義的正式版套件定義中的相同元件,以及包含元件和其他元件整合測試測試的套件。
- 由於元件和套件可以單獨定義,因此建構系統會知道依附元件屬於哪個元件,因此可以執行更複雜的建構時間驗證,自動偵測錯誤,提供更明確的意見回饋。
- 系統額外支援更多用途,因此不需要特殊語法。舉例來說,包含驅動程式、其他資料檔案或共用程式庫的套件不需要特殊語法,只要在可定義元件使用或套件包含項目的建構目標中加入
deps
即可。 - 較容易定義無須手動編寫元件資訊清單 (
.cml
檔案) 的簡單測試。 - 推出更優質的說明文件,涵蓋更多語言和用途。
遷移至新範本可讓建構定義更容易理解與實用,並有助於清除與包裝相關的基礎技術債,而這些債務僅會在舊版 package()
範本的服務中留存。請協助我們繼續操作,將舊範本的所有用途替換成新範本,以利後續處理。
技術背景
請參閱建築物元件指南。
我們建議對 BUILD.gn
檔案的一般使用經驗,但並非必要。請參閱 GN 參考資料指南。
如何提供幫助
選取工作
最好先從群組 "deprecated_package"
下的 //build/BUILD.gn
中列出的清單開始。
找出熟悉的目錄,或隨機挑選。
在這個目錄的 BUILD.gn
檔案中,您可能會看到包含舊範本的建構目標,例如:
package("foo") {
...
}
執行工作
在自選目錄中,移除 package()
、test_package()
或 unittest_package()
範本 BUILD.gn
檔案中所有使用情形。請注意,檔案中可能使用其他範本包裝這些範本。請務必刪除 //build/BUILD.gn
中的相關行,並確認您仍然可以產生建構作業 (執行 fx gen
,並觀察 GN 已成功產生沒有錯誤的 Ninja 檔案)。
完成工作
準備變更時,請務必從 //build/BUILD.gn
列出您清除的目錄中移除任何行。
找出您要變更建構定義的目錄擁有者,或傳送給自願協助處理這些遷移作業的目錄擁有者:
- shayba@google.com
- xbhatnag@google.com
您是新的志工嗎?請將自己加入清單!
範例
- 464409:[時間] 將所有套件和測試遷移至新的建構規則
- 464407:[build] 將 //src/sys/lib 中的測試遷移至新的建構規則
- 464410:[build] 將 //src/sys 中的套件遷移至新的建構規則
- 473597:[工作階段] 將所有套件和測試遷移至新的建構規則
贊助者
提問或詢問最新進度: