0

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

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

beta(
  name = "hello again"
)

Wherealphabeta是自定义规则。我希望beta能够访问规则的color属性,而无需添加标签属性。在 Bazel 查询中,我可以执行以下操作:alpha

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
)

但我觉得这有点冗长,特别是因为有兄弟查询支持。

4

1 回答 1

1

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

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

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

于 2021-04-08T16:30:43.183 回答