如何解决如何从 Bazel 规则中查询兄弟规则
我希望能够在 Bazel BUILD 文件中执行以下操作:
alpha(
name = "hello world",color = "blue"
)
beta(
name = "hello again"
)
其中 alpha
和 beta
是自定义规则。我希望 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 举报,一经查实,本站将立刻删除。