我想添加$(location)
扩展到rules_scala
forjvm_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.data
到expand_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)"],
)
您做对了。
我查看了源代码,您说得对:srcs
,deps
和tools
(如果在规则上定义)被添加到了可以expand_locations
理解的标签集中。data
仅LocationExpander
在使用allowDataAttributeEntriesInLabel=true
而不是创建时添加。因此,您必须将其添加到中expand_locations(targets)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句