package() 遷移

目標和動機

我們在 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

你是新志工嗎?請將自己加入清單!

範例

贊助商

如有任何問題或想瞭解最新進度,請與我們聯絡: