rules_scala
rules_scala copied to clipboard
scala_benchmark_jmh fails with java sources
Problem
https://github.com/bazelbuild/rules_scala/blob/7a2c3510cda8cf544f9ce9a621a69ac5fe31ae7e/jmh/jmh.bzl#L32 indicates that the expectation is only one jar should be provided in the info.outputs.jars
, but when writing benchmarks in java and using scala_benchmark_jmh
directly the attempt at picking the first class_jar
fails in https://github.com/bazelbuild/rules_scala/blob/7a2c3510cda8cf544f9ce9a621a69ac5fe31ae7e/jmh/jmh.bzl#L41. What happens is there are two JavaInfo
outs, one that is scala and the other that is java when the sources are java sources.
Example https://github.com/bazelbuild/rules_scala/compare/de3d3a772e2fd443bcd662c740f5f8e916e4b6f0...adam-singer:adams/jmh-fails-with-java-sources
DEBUG: /Users/adams/workspace/rules_scala/jmh/jmh.bzl:42:10: <generated file test/jmh/test_benchmark_java_generator.jar>
DEBUG: /Users/adams/workspace/rules_scala/jmh/jmh.bzl:43:10: <generated file test/jmh/test_benchmark_java_generator_java.jar>
[MacBook-Pro rules_scala (adams/jmh-fails-with-java-sources)]$ bazel build test/jmh:test_benchmark_java
DEBUG: /private/var/tmp/_bazel_adams/32dab03a55851485137b40845d12abdf/external/bazel_toolchains/rules/rbe_repo/version_check.bzl:68:14:
Current running Bazel is ahead of bazel-toolchains repo. Please update your pin to bazel-toolchains repo in your WORKSPACE file.
DEBUG: /private/var/tmp/_bazel_adams/32dab03a55851485137b40845d12abdf/external/bazel_toolchains/rules/rbe_repo/checked_in.bzl:125:14: buildkite_config not using checked in configs; Bazel version 4.1.0 was picked/selected but no checked in config was found in map {"0.20.0": ["8.0.0"], "0.21.0": ["8.0.0"], "0.22.0": ["8.0.0", "9.0.0"], "0.23.0": ["8.0.0", "9.0.0"], "0.23.1": ["8.0.0", "9.0.0"], "0.23.2": ["9.0.0"], "0.24.0": ["9.0.0"], "0.24.1": ["9.0.0"], "0.25.0": ["9.0.0"], "0.25.1": ["9.0.0"], "0.25.2": ["9.0.0"], "0.26.0": ["9.0.0"], "0.26.1": ["9.0.0"], "0.27.0": ["9.0.0"], "0.27.1": ["9.0.0"], "0.28.0": ["9.0.0"], "0.28.1": ["9.0.0"], "0.29.0": ["9.0.0"], "0.29.1": ["9.0.0", "10.0.0"], "1.0.0": ["9.0.0", "10.0.0"], "1.0.1": ["10.0.0"], "1.1.0": ["10.0.0"], "1.2.0": ["10.0.0"], "1.2.1": ["10.0.0"], "2.0.0": ["10.0.0"], "2.1.0": ["10.0.0"], "2.1.1": ["10.0.0", "11.0.0"], "2.2.0": ["11.0.0"], "3.0.0": ["11.0.0"], "3.1.0": ["11.0.0"], "3.2.0": ["11.0.0"], "3.3.0": ["11.0.0"], "3.3.1": ["11.0.0"], "3.4.1": ["11.0.0"], "3.5.0": ["11.0.0"], "3.5.1": ["11.0.0"], "3.6.0": ["11.0.0"], "3.7.0": ["11.0.0"], "3.7.1": ["11.0.0"], "3.7.2": ["11.0.0"], "4.0.0": ["11.0.0"]}
DEBUG: /Users/adams/workspace/rules_scala/jmh/jmh.bzl:38:14: expected exactly 1 output jar in: //test/jmh:test_benchmark_java_codegen
DEBUG: /Users/adams/workspace/rules_scala/jmh/jmh.bzl:43:10: <generated file test/jmh/test_benchmark_java_generator.jar>
INFO: Analyzed target //test/jmh:test_benchmark_java (5 packages loaded, 185 targets configured).
INFO: Found 1 target...
ERROR: /Users/adams/workspace/rules_scala/test/jmh/BUILD:68:20: scala //test/jmh:test_benchmark_java_compiled_benchmark_lib failed: (Exit 1): scalac failed: error executing command bazel-out/darwin-opt-exec-2B5CBBC6/bin/src/java/io/bazel/rulesscala/scalac/scalac @bazel-out/darwin-fastbuild/bin/test/jmh/test_benchmark_java_compiled_benchmark_lib.jar-0.params
Must have input files from either source jars or local files.
java.lang.RuntimeException: Must have input files from either source jars or local files.
at io.bazel.rulesscala.scalac.ScalacWorker.work(ScalacWorker.java:63)
at io.bazel.rulesscala.worker.Worker.persistentWorkerMain(Worker.java:84)
at io.bazel.rulesscala.worker.Worker.workerMain(Worker.java:39)
at io.bazel.rulesscala.scalac.ScalacWorker.main(ScalacWorker.java:34)
Target //test/jmh:test_benchmark_java failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 1.234s, Critical Path: 0.72s
INFO: 3 processes: 2 internal, 1 darwin-sandbox.
FAILED: Build did NOT complete successfully
Confirmed benchmarks run when choosing the second jar file if the sources are java.
Ask
Support for scala_benchmark_jmh
on java and scala sources