如何在各方面之间传播

时间:2017-04-28 12:25:02

标签: bazel bazel-aspect

我正在申请方面但不知何故似乎做错了什么。 对着名的参考图片进行成像。

enter image description here

在我的情况下 A 是:

deps_aspect = aspect(
    implementation = _deps_aspect_impl,
    attr_aspects = ["resource_deps"],
    attrs = {
    },
)

对于 A(W)_deps_aspect_impl会返回:

    return struct(
        dep_files = set(),
    )

现在,如果我正确理解文档,我应该可以通过 A(Y)中的dep_files访问 A(W) resource_deps

如果 A(Y)_deps_aspect_impl我这样做:

print("DIR: %s" % dir(ctx.rule.attr))

没有打印resource_deps(我无法访问它)。

我是否理解错误或者这应该如何运作?

1 个答案:

答案 0 :(得分:0)

所以问题是我没有抓住各种细微差别。

  1. attr_aspects是递归的。这意味着一旦你申请,他们向下传播图表。因此,对于那个属性,属性是全局的。也许最好能够用kind指定一个字典 - > attr映射。

  2. 由于1.你真的需要看看kind,所以你有不同的代码路径(我做的一件事就是这样)。

  3. 数据可以 NOT 通过阴影图传播。之前我想过。你只能传播" solid"规则attrs