微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 Bazel 规则中查询兄弟规则

如何解决如何从 Bazel 规则中查询兄弟规则

我希望能够在 Bazel BUILD 文件中执行以下操作:

alpha(
  name = "hello world",color = "blue"
)

beta(
  name = "hello again"
)

其中 alphabeta自定义规则。我希望 beta 能够访问 color 规则的 alpha 属性无需添加标签属性。在 Bazel 查询中,我可以这样做:

bazel query 'kind(beta,siblings(kind(alpha,//...)))'

它给了我与 beta 并排的 alpha。我可以在 beta 规则的实现函数中以某种方式实现相同的功能吗?

def _beta_rule_impl(ctx):
  # This does not exist,I wish it did: ctx.siblings(kind='alpha')

我见过用这样的标签完成的

beta(
  name = "hello again",alpha_link = ":hello world" # explicitly linking
)

但我觉得这有点冗长,尤其是因为有兄弟查询支持

解决方法

问题的表述方式,答案是否定的。这是不可能的。

Bazel 的设计理念是明确目标依赖性。 Providers mechanism 旨在在分析阶段提供对依赖关系图信息的访问。

很难说实际用例是什么。使用 Aspects 可能是答案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。