1
- load ("@bazel_tools//tools/build_defs/repo:http.bzl" , "http_archive" )
2
1
load (
3
- "@io_bazel_rules_scala //scala:scala_cross_version.bzl" ,
2
+ "//scala:scala_cross_version.bzl" ,
4
3
"extract_major_version" ,
5
4
"extract_minor_version" ,
6
5
"version_suffix" ,
7
6
_default_maven_server_urls = "default_maven_server_urls" ,
8
7
)
9
8
load ("//third_party/repositories:repositories.bzl" , "repositories" )
9
+ load ("@bazel_tools//tools/build_defs/repo:http.bzl" , "http_archive" )
10
10
load ("@io_bazel_rules_scala_config//:config.bzl" , "SCALA_VERSIONS" )
11
11
12
12
def _dt_patched_compiler_impl (rctx ):
@@ -24,7 +24,6 @@ dt_patched_compiler = repository_rule(
24
24
},
25
25
implementation = _dt_patched_compiler_impl ,
26
26
)
27
-
28
27
_COMPILER_SOURCE_ALIAS_TEMPLATE = """alias(
29
28
name = "src",
30
29
visibility = ["//visibility:public"],
@@ -69,15 +68,19 @@ def _validate_scalac_srcjar(srcjar):
69
68
def dt_patched_compiler_setup (scala_version , scala_compiler_srcjar = None ):
70
69
scala_major_version = extract_major_version (scala_version )
71
70
scala_minor_version = extract_minor_version (scala_version )
72
- patch = "@io_bazel_rules_scala //dt_patches:dt_compiler_%s.patch" % scala_major_version
71
+ patch = Label ( " //dt_patches:dt_compiler_%s.patch" % scala_major_version )
73
72
74
73
minor_version = int (scala_minor_version )
75
74
76
75
if scala_major_version == "2.12" :
77
76
if minor_version >= 1 and minor_version <= 7 :
78
- patch = "@io_bazel_rules_scala//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
+ )
79
80
elif minor_version <= 11 :
80
- patch = "@io_bazel_rules_scala//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
+ )
81
84
82
85
build_file_content = "\n " .join ([
83
86
"package(default_visibility = [\" //visibility:public\" ])" ,
@@ -112,7 +115,9 @@ def dt_patched_compiler_setup(scala_version, scala_compiler_srcjar = None):
112
115
integrity = srcjar .get ("integrity" ),
113
116
)
114
117
115
- def rules_scala_setup (scala_compiler_srcjar = None ):
118
+ def rules_scala_setup (
119
+ scala_compiler_srcjar = None ,
120
+ setup_compiler_sources = True ):
116
121
if not native .existing_rule ("bazel_skylib" ):
117
122
http_archive (
118
123
name = "bazel_skylib" ,
@@ -165,8 +170,26 @@ def rules_scala_setup(scala_compiler_srcjar = None):
165
170
url = "https://github.com/bazelbuild/rules_proto/releases/download/6.0.2/rules_proto-6.0.2.tar.gz" ,
166
171
)
167
172
173
+ if setup_compiler_sources :
174
+ srcs = {version : scala_compiler_srcjar for version in SCALA_VERSIONS }
175
+ _setup_scala_compiler_sources (srcs )
176
+
177
+ def _setup_scala_compiler_sources (srcjars = {}):
178
+ """Generates Scala compiler source repos used internally by rules_scala.
179
+
180
+ Args:
181
+ srcjars: optional dictionary of Scala version string to compiler srcjar
182
+ metadata dictionaries containing:
183
+ - exactly one "label", "url", or "urls" key
184
+ - optional "integrity" or "sha256" keys
185
+ """
168
186
for scala_version in SCALA_VERSIONS :
169
- dt_patched_compiler_setup (scala_version , scala_compiler_srcjar )
187
+ dt_patched_compiler_setup (scala_version , srcjars .get (scala_version ))
188
+
189
+ compiler_sources_repo (
190
+ name = "scala_compiler_sources" ,
191
+ scala_versions = SCALA_VERSIONS ,
192
+ )
170
193
171
194
compiler_sources_repo (
172
195
name = "scala_compiler_sources" ,
@@ -213,13 +236,19 @@ def scala_repositories(
213
236
overriden_artifacts = {},
214
237
load_dep_rules = True ,
215
238
load_jar_deps = True ,
216
- fetch_sources = False ):
239
+ fetch_sources = False ,
240
+ validate_scala_version = True ,
241
+ scala_compiler_srcjars = {}):
217
242
if load_dep_rules :
218
- rules_scala_setup ()
243
+ # When `WORKSPACE` goes away, so can this case.
244
+ rules_scala_setup (setup_compiler_sources = False )
245
+
246
+ _setup_scala_compiler_sources (scala_compiler_srcjars )
219
247
220
248
if load_jar_deps :
221
249
rules_scala_toolchain_deps_repositories (
222
250
maven_servers ,
223
251
overriden_artifacts ,
224
252
fetch_sources ,
253
+ validate_scala_version ,
225
254
)
0 commit comments