Bazel 如何在方面之间传播

Bazel 如何在方面之间传播,bazel,bazel-aspect,Bazel,Bazel Aspect,我正在应用方面,但不知何故似乎做错了什么。 对著名的参考图片进行成像 就我而言,A是: deps_aspect = aspect( implementation = _deps_aspect_impl, attr_aspects = ["resource_deps"], attrs = { }, ) 对于A(W),\u deps\u aspect\u impl返回: return struct( dep_files = set(),

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

就我而言,A是:

deps_aspect = aspect(
    implementation = _deps_aspect_impl,
    attr_aspects = ["resource_deps"],
    attrs = {
    },
)
对于A(W)
\u deps\u aspect\u impl
返回:

    return struct(
        dep_files = set(),
    )
现在,如果我正确理解了文档,我应该能够通过
resource\u deps
A(Y)中访问A(W)
dep\u文件

如果对于A(Y)
\u deps\u aspect\u impl
我会:

print("DIR: %s" % dir(ctx.rule.attr))
没有打印
resource\u deps
(我无法访问它)


我是不是理解错了什么,或者这是怎么回事?

所以问题是我没有正确把握各种细微差别

  • 属性方面是递归的。这意味着一旦应用,它们将在图形中向下传播。因此,该属性是全局的。也许最好能够使用
    kind
    ->
    attr
    映射指定dict

  • 由于1。你真的需要看看
    kind
    ,这样你就有了不同的代码路径(我做对了一件事)

  • 数据可以通过阴影图传播。我以前想象过。只能在“实体”规则
    attrs
    上传播