Bazel中的$ location扩展

伊泰

我想添加$(location)扩展到rules_scalaforjvm_flags属性,在该属性中我属性中设置了依赖项,data但失败了:
label '//src/java/com/google/devtools/build/lib:worker' in $(location) expression is not a declared prerequisite of this rule.
我在目标中的data属性上的标签上定义了依赖项,如下所示:

scala_specs2_junit_test(
    ...
    data = ["//src/java/com/google/devtools/build/lib:worker"],
    jvm_flags = ["-XX:HeapDumpPath=/some/custom/path", "-Dlocation.expanded=$(location //src/java/com/google/devtools/build/lib:worker)"],
)

我看到,当我将其添加ctx.attr.dataexpand_location呼叫扩展中时,我确实不确定为什么这不是hack。data确实是一个特例?

    location_expanded_jvm_flags = []
    for jvm_flag in jvm_flags:
        location_expanded_jvm_flags.append(ctx.expand_location(jvm_flag, ctx.attr.data))

还尝试查看java_*规则源以了解其工作原理(因为$(location)扩展支持该data属性),但是找不到相关的位置。

完整目标:

scala_specs2_junit_test(
    name = "Specs2Tests",
    srcs = ["src/main/scala/scala/test/junit/specs2/Specs2Tests.scala"],
    deps = [":JUnitCompileTimeDep"],
    size = "small",
    suffixes = ["Test"],
    data = ["//src/java/com/google/devtools/build/lib:worker"],
    jvm_flags = ["-XX:HeapDumpPath=/some/custom/path", "-Dlocation.expanded=$(location //src/java/com/google/devtools/build/lib:worker)"],
)

您做对了。

我查看了源代码,您说得对:srcsdepstools(如果在规则上定义)被添加到了可以expand_locations理解的标签集中dataLocationExpander在使用allowDataAttributeEntriesInLabel=true而不是创建时添加因此,您必须将其添加到中expand_locations(targets)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章