【发布时间】:2020-06-25 20:43:30
【问题描述】:
假设我有类似以下的内容。
def _foo_aspect_impl(target, ctx):
# operations
return FooInfo(...)
foo_aspect = aspect(implementation = _foo_aspect_impl,
attr_aspects = ['deps'],
attrs = dict(
_tool = attr.Label(
# defs
),
)
)
def _foo_rule_impl(ctx):
for dep in ctx.attr.deps:
# do something with `dep[FooInfo]`
return DefaultInfo(...)
foo_rule = rule(
implementation = _foo_rule_impl,
attrs = dict(
"deps": attr.label_list(
aspects = [foo_aspect],
)
)
)
有没有办法在WORKSPACE 中或在foo_rule 的调用中更改foo_aspect.attr._tool 的值?前者更可取。
_tool 的版本和存储库来源的用例可能会因项目而异。当切面驻留在两个项目共享的存储库中时,为这两个项目创建两个分支仅用于_tool 的版本控制是没有意义的。
【问题讨论】:
标签: bazel bazel-rules bazel-aspect