-
-
Notifications
You must be signed in to change notification settings - Fork 286
Description
Hi,
I have a project where we configure our own Scala toolchain, as described in https://github.com/bazel-contrib/rules_scala/blob/master/docs/scala_toolchain.md#b-defining-your-own-scala_toolchain
My MODULE.bazel contains the following rules_scala setup:
bazel_dep(name = "rules_scala", version = "7.1.3")
SCALA_VERSION = "2.13.17"
scala_config = use_extension(
"@rules_scala//scala/extensions:config.bzl",
"scala_config",
)
scala_config.settings(scala_version = SCALA_VERSION)
use_repo(
scala_config,
"rules_scala_config",
)
register_toolchains(
"//tools/humio_scala_toolchains:humio_scala_toolchain",
"//tools/humio_scala_toolchains:humio_scalatest_toolchain",
)
where the two toolchains are defined as described in the documentation (i.e. they list all the necessary jars)
I would expect this to allow me to upgrade Scala even before rules_scala adds support. In this case, I'd expect to be able to upgrade to Scala 2.13.18, even though rules_scala doesn't know about that version.
Unfortunately, this does not seem to work. If I change the version to 2.13.18, I get this error:
/home/sdoessing/.cache/bazel/_bazel_sdoessing/863090ad832ad911322e8e6f0aa0e1d6/external/rules_scala+/scala/private/macros/scala_repositories.bzl:151:9: Traceback (most recent call last):
File "/home/sdoessing/.cache/bazel/_bazel_sdoessing/863090ad832ad911322e8e6f0aa0e1d6/external/rules_scala+/scala/extensions/deps.bzl", line 231, column 21, in _scala_deps_impl
scala_toolchains(
File "/home/sdoessing/.cache/bazel/_bazel_sdoessing/863090ad832ad911322e8e6f0aa0e1d6/external/rules_scala+/scala/toolchains.bzl", line 160, column 33, in scala_toolchains
setup_scala_compiler_sources(scala_compiler_srcjars)
File "/home/sdoessing/.cache/bazel/_bazel_sdoessing/863090ad832ad911322e8e6f0aa0e1d6/external/rules_scala+/scala/private/macros/scala_repositories.bzl", line 225, column 34, in setup_scala_compiler_sources
dt_patched_compiler_setup(scala_version, srcjars.get(scala_version))
File "/home/sdoessing/.cache/bazel/_bazel_sdoessing/863090ad832ad911322e8e6f0aa0e1d6/external/rules_scala+/scala/private/macros/scala_repositories.bzl", line 194, column 34, in dt_patched_compiler_setup
srcjar = _get_compiler_srcjar(scala_version, scala_compiler_srcjar)
File "/home/sdoessing/.cache/bazel/_bazel_sdoessing/863090ad832ad911322e8e6f0aa0e1d6/external/rules_scala+/scala/private/macros/scala_repositories.bzl", line 151, column 9, in _get_compiler_srcjar
fail(no_compiler_source_jar_integrity_error)
Error in fail:
No compiler source jar integrity data exists in rules_scala for Scala version
2.13.18.
I checked, and the only code that calls this extension is rules_scala itself:
bazel mod show_extension @@rules_scala+//scala/extensions:deps.bzl%scala_deps
## Usage in [email protected] from <snip>
use_repo(
scala_deps,
"rules_scala_toolchains",
"scala_compiler_sources",
)
As far as I can tell, the problem is that the MODULE.bazel for rules_scala calls scala_deps, which calls scala_repositories, which tries to load the built-in Scala repositories. Since I have set the version via scala_config.settings, rules_scala ends up trying to load a version that doesn't exist in the built-in repos.
Is it possible to make rules_scala use solely the toolchains I define, and never try loading the built-in repos? It would be nice to be able to upgrade Scala without also having to upgrade rules_scala.