Skip to content

Unclear how to upgrade Scala to a version rules_scala doesn't know about #1796

@srdo-humio

Description

@srdo-humio

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions