Я хочу добавить расширение $(location)
к rules_scala
для атрибута jvm_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
, работает, но я не был уверен, почему это не хак. Является ли 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)"],
)
data
кexpand_location(targets)
является хаком? Насколько я понимаю, документы, которые являются правильный способ сделать это. - person László   schedule 16.05.2017expand_location
автоматически ищет цели? - person László   schedule 16.05.2017deps
без передачи целейexpand_location
? - person László   schedule 16.05.2017data
наdeps
в своем тесте (github.com/bazelbuild/rules_scala/blob/master/test/BUILD#L328) и удалил аргументctx.attr.data
для расширения, и он работает.runtime_deps
кстати, не работает из коробки и тоже требует передачи в качестве аргумента. - person Ittai   schedule 17.05.2017