【问题标题】:Bazel folder naming conventionBazel 文件夹命名约定
【发布时间】:2017-07-24 22:07:52
【问题描述】:

我知道 bazel 没有强加任何特定的文件结构,但是使用 Bazel 的产品遵循一些文件夹命名约定,其中一些(例如“third_party”)确实有特殊处理(它需要 @ 987654321@待指定)。

所以我不太明白toolsthird_party 之间的区别。例如,如果我想放一个“ruby 工具链”,它是一个工具,因为它是语言解释器,但它也是第三方,因为它是由社区开发的。应该去哪里?

那么 bazel 规则呢?应该习惯性地放在哪里?

【问题讨论】:

    标签: bazel


    【解决方案1】:

    我是 Bazel 开发人员,我同意,这里的用法可能有点混乱。

    一般来说,我们建议您将 third_party 用于您要导入以在项目中使用的任何外部代码。例如,Bazel 本身有很多库用于 Python 标志解析、Java 编译和很多其他事情。

    另一方面,工具将用于您编写的代码,以帮助您将项目作为独立程序。例如,如果您编写了一个将静态文本文件转换为代码的脚本(也许这样您就可以将数据作为语言中的常量访问),我会说它可以进入工具,因为它是独立的,但对您的项目。

    (请注意,Bazel 的工具目录与此有点不同:我们实际上将它们打包并将它们包含在 Bazel 二进制文件中,以便它们可以在运行时使用,而不是在构建时使用)。

    如果您正在编写自定义 Skylark 规则,您可以将其放在任何有意义的地方,但我想问的是,如果您认为它们可能在您的项目之外有用,您可以为它们创建一个单独的存储库,以便其他开发人员可以使用它们。使用专用存储库中的自定义规则要容易得多,因为您只需要使用 WORKSPACE 中的 http_archive() 规则来获取它们。如果它们与您项目的其他部分混在一起,其他人就更难重复使用。

    【讨论】:

    • 非常感谢您的清晰解释。对于我,这说得通。为了更好地理解这一点,我检查了一些谷歌项目。既然我有幸找到了一个 bazel 开发人员,我可以快速询问pkg_tar 忽略.runfiles 的任何现有解决方案吗?我在本地克隆了 bazel 以修改源代码,因为除了你的 BT 上的错误 #671 之外我没有运气,但也许已经有了解决方案。否则我要在那里开票。
    • 我对运行文件问题一无所知。看起来问题 #671 的工作正在进行中,您可以查看 pull request #2687 (github.com/bazelbuild/bazel/pull/2687) 看看是否可以帮助您开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 2019-03-20
    • 2011-09-08
    • 1970-01-01
    • 2013-09-26
    • 2018-02-24
    相关资源
    最近更新 更多