【问题标题】:Bazel Transitive Structure ConventionBazel 传递结构约定
【发布时间】:2017-07-14 16:32:25
【问题描述】:

我最近一直在我的公司制定一大堆 bazel 规则,并为我的公司创建了一些特定的自定义规则。我注意到的一件事是,在创建规则时,我经常使用自定义设计的传递数据传播来帮助我的规则完成工作。这就是我的意思:

attrs = {
    'deps': attr.label_list(
        providers=[
            'transitive_srcs',
            'transitive_gens',
            'transitive_data',
            'transitive_reqs',
            'transitive_deps',
            'transitive_builds'
        ],
        allow_files=False
    )
}

这最终导致的是它与其他标准 bazel 规则不兼容。如果我的规则依赖于cc_binary(),那么它期望cc_binary() 发送额外的传递数据。关于我们应该如何建立规则有什么约定吗?我很想遵循一些或创建一些,以便更容易分享规则。

这是我从中获取代码示例的地方。 https://github.com/findmine/bazel-pex-rule

【问题讨论】:

    标签: python bazel pex build-system


    【解决方案1】:

    有办法为Java rules 创建本地提供程序,但不幸的是还没有为 C++ 规则创建本地提供程序。这是正在进行的工作。目前最好的方法是使用宏来包装您的自定义规则并将各种文件添加到 cc_.* 规则中。

    【讨论】:

    • 现在我的方法是遵循 cc_* 规则的定义作为指导,并调整我现有的 pex 规则以反映这一点。如果我可以在依赖的目标之间传递变量信息,我可能不需要添加这些特殊情况的传递提供者。
    • 什么意思?您能否将后续讨论发送至 bazel-discuss@googlegroups.com,因为这似乎需要更深入的讨论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 2022-01-20
    • 1970-01-01
    相关资源
    最近更新 更多