2017-07-19 77 views
0

我知道bazel並沒有強加任何特定的文件結構,但是有一些文件夾命名約定,後面跟着使用Bazel的產品,其中一些(例如「third_party」)確實有特殊的處理方式(它需要指定licenses)。Bazel文件夾命名約定

所以我不太明白toolsthird_party之間的區別。例如,如果我想要一個「ruby toolchain」,它就是一個工具,因爲它是語言解釋器,但它也是第三方,因爲它是由社區開發的。它應該去哪裏?

bazel規則呢?應該在哪裏放置地點?

回答

2

我是Bazel開發人員,我同意這裏的使用可能會有點混亂。

通常,我們建議您將third_party用於您要導入的用於項目的任何外部代碼。例如,Bazel本身就有很多用於Python標記解析,Java編譯和其他許多事情的庫。

另一方面,工具將用於編寫作爲獨立程序幫助您的項目的代碼。例如,如果您編寫了一個將靜態文本文件轉換爲代碼的腳本(也許您可以將這些數據作爲in-language常量訪問),那麼可以將其用於工具,因爲它是獨立的,但對您項目。 (作爲說明,Bazel的工具目錄與此有點不同:我們將它們打包幷包含在Bazel二進制文件中,以便它們可以在運行時使用,而不是在構建時使用)。

如果您正在編寫自定義Skylark規則,您可以將其放在任何有意義的地方,但我想問一下,如果您認爲它們可能對您的項目非常有用,則爲它們創建單獨的存儲庫,以便其他開發人員可以使用它們。使用專用存儲庫中的自定義規則要容易得多,因爲您只需在WORKSPACE中使用http_archive()規則來獲取它們即可。如果他們與您的其他項目混在一起,其他人就難以重複使用。

+0

非常感謝你的明確解釋。對於我,這說得通。爲了更好地理解這一點,我檢查了一些Google項目。既然我有幸找到了一位bazel開發人員,我是否可以快速要求任何現有解決方案來「忽略.runfiles」的「pkg_tar」?爲了修改源代碼,我在本地克隆了bazel,因爲除了BT上的bug#671之外,我沒有運氣,但也許已經有了一個解決方案。否則,我要在那裏打開一張票。 – CodeShining

+0

我不知道關於runfiles問題的事情。看起來問題#671正在發生,您可以查看請求#2687(https://github.com/bazelbuild/bazel/pull/2687)並查看是否讓您開始。 –