@@ -24,7 +24,6 @@ dt_patched_compiler = repository_rule(
2424 },
2525 implementation = _dt_patched_compiler_impl ,
2626)
27-
2827_COMPILER_SOURCE_ALIAS_TEMPLATE = """alias(
2928 name = "src",
3029 visibility = ["//visibility:public"],
@@ -75,9 +74,13 @@ def dt_patched_compiler_setup(scala_version, scala_compiler_srcjar = None):
7574
7675 if scala_major_version == "2.12" :
7776 if minor_version >= 1 and minor_version <= 7 :
78- patch = Label ("//dt_patches:dt_compiler_%s.1.patch" % scala_major_version )
77+ patch = Label (
78+ "//dt_patches:dt_compiler_%s.1.patch" % scala_major_version ,
79+ )
7980 elif minor_version <= 11 :
80- patch = Label ("//dt_patches:dt_compiler_%s.8.patch" % scala_major_version )
81+ patch = Label (
82+ "//dt_patches:dt_compiler_%s.8.patch" % scala_major_version ,
83+ )
8184 elif scala_major_version .startswith ("3." ):
8285 patch = Label ("//dt_patches:dt_compiler_3.patch" )
8386
@@ -114,7 +117,9 @@ def dt_patched_compiler_setup(scala_version, scala_compiler_srcjar = None):
114117 integrity = srcjar .get ("integrity" ),
115118 )
116119
117- def rules_scala_setup (scala_compiler_srcjar = None ):
120+ def rules_scala_setup (
121+ scala_compiler_srcjar = None ,
122+ setup_compiler_sources = True ):
118123 if not native .existing_rule ("bazel_skylib" ):
119124 http_archive (
120125 name = "bazel_skylib" ,
@@ -167,8 +172,26 @@ def rules_scala_setup(scala_compiler_srcjar = None):
167172 url = "https://github.com/bazelbuild/rules_proto/releases/download/6.0.2/rules_proto-6.0.2.tar.gz" ,
168173 )
169174
175+ if setup_compiler_sources :
176+ srcs = {version : scala_compiler_srcjar for version in SCALA_VERSIONS }
177+ _setup_scala_compiler_sources (srcs )
178+
179+ def _setup_scala_compiler_sources (srcjars = {}):
180+ """Generates Scala compiler source repos used internally by rules_scala.
181+
182+ Args:
183+ srcjars: optional dictionary of Scala version string to compiler srcjar
184+ metadata dictionaries containing:
185+ - exactly one "label", "url", or "urls" key
186+ - optional "integrity" or "sha256" keys
187+ """
170188 for scala_version in SCALA_VERSIONS :
171- dt_patched_compiler_setup (scala_version , scala_compiler_srcjar )
189+ dt_patched_compiler_setup (scala_version , srcjars .get (scala_version ))
190+
191+ compiler_sources_repo (
192+ name = "scala_compiler_sources" ,
193+ scala_versions = SCALA_VERSIONS ,
194+ )
172195
173196 compiler_sources_repo (
174197 name = "scala_compiler_sources" ,
@@ -235,13 +258,19 @@ def scala_repositories(
235258 overriden_artifacts = {},
236259 load_dep_rules = True ,
237260 load_jar_deps = True ,
238- fetch_sources = False ):
261+ fetch_sources = False ,
262+ validate_scala_version = True ,
263+ scala_compiler_srcjars = {}):
239264 if load_dep_rules :
240- rules_scala_setup ()
265+ # When `WORKSPACE` goes away, so can this case.
266+ rules_scala_setup (setup_compiler_sources = False )
267+
268+ _setup_scala_compiler_sources (scala_compiler_srcjars )
241269
242270 if load_jar_deps :
243271 rules_scala_toolchain_deps_repositories (
244272 maven_servers ,
245273 overriden_artifacts ,
246274 fetch_sources ,
275+ validate_scala_version ,
247276 )
0 commit comments