Closed patrick-premont closed 3 weeks ago
@patrick-premont Did you end up finding a resolution? I believe the issue is here:
https://sourcegraph.com/github.com/bazelbuild/rules_scala/-/blob/scala/private/rule_impls.bzl?L150
We fixed by building the io_rules_scala from source and patching like this:
diff --git a/scala/private/rule_impls.bzl b/scala/private/rule_impls.bzl
index fa73ebc..1c5779a 100644
--- a/scala/private/rule_impls.bzl
+++ b/scala/private/rule_impls.bzl
@@ -157,10 +157,9 @@ def compile_java(ctx, source_jars, source_files, output, extra_javac_opts, provi
output = output,
javac_opts = expand_location(
ctx,
- extra_javac_opts +
java_common.default_javac_opts(
java_toolchain = java_toolchain,
- ),
+ ) + extra_javac_opts,
),
deps = providers_of_dependencies,
#exports can be empty since the manually created provider exposes exports
I created a fix https://github.com/bazelbuild/rules_scala/pull/1613
The order of javacopts parameters passed to javac differs from the order seen in java_library.
This can result in different options taking precedence within the same toolchain based on whether it is used from scala_library or java_library.
In the example below
--release
and-source/-target
are being reordered leading to a java_library with Java 8 classes and a scala_library with Java 21 classes.BUILD.bazel
WORKSPACE.bazel
Running
Then running
we can see that
custom_toolchain
is selected for bothjava_library
andscala_library
.And the class major versions in each jar are those of Java 21 (65) and Java 8(52):
Then to see the contents of the
params
files we can add an optionbadoption
tocustom_package_config
.For java we can run
and we get this order:
For scala we run
and get
We can see that
--release 8
occurs before-source 21 -target 21
in the scala library only.