Skip to content

Commit 3d31a7d

Browse files
committed
WIB: Bzlmod part the one hundred-twelfth
Begin preparing the existing `scala_repositories` to share between `WORKSPACE` and Bzlmod. It occurred to me the best way to maintain compability with `WORKSPACE` is to push as much logic into shared macros as possible.
1 parent 6b2165b commit 3d31a7d

File tree

3 files changed

+40
-41
lines changed

3 files changed

+40
-41
lines changed

MODULE.bazel.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scala/extensions/deps.bzl

Lines changed: 14 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,7 @@
33
load("//jmh:jmh.bzl", "jmh_repositories")
44
load("//junit:junit.bzl", "junit_repositories")
55
load("//scala/private/extensions:toolchains.bzl", "scala_toolchains_repo")
6-
load(
7-
"//scala/private:macros/scala_repositories.bzl",
8-
"compiler_sources_repo",
9-
"dt_patched_compiler_setup",
10-
"rules_scala_toolchain_deps_repositories",
11-
)
6+
load("//scala/private:macros/scala_repositories.bzl", "scala_repositories")
127
load(
138
"//scala/scalafmt:scalafmt_repositories.bzl",
149
"scalafmt_default_config",
@@ -46,13 +41,7 @@ _settings = {
4641
"default": {},
4742
},
4843
),
49-
"load_dep_rules": struct(
50-
attr = attr.bool,
51-
params = {
52-
"default": True,
53-
},
54-
),
55-
"load_jar_deps": struct(
44+
"load_toolchain_dependencies": struct(
5645
attr = attr.bool,
5746
params = {
5847
"default": True,
@@ -178,8 +167,7 @@ def _get_settings(module_ctx):
178167
scalafmt = _compile_root_tags(module_ctx, "scalafmt", _defaults(_scalafmt))
179168

180169
return (
181-
settings["load_dep_rules"],
182-
settings["load_jar_deps"],
170+
settings["load_toolchain_dependencies"],
183171
settings["maven_servers"],
184172
settings["overridden_artifacts"],
185173
settings["fetch_sources"],
@@ -247,37 +235,27 @@ def _get_toolchains(module_ctx):
247235

248236
def _scala_deps_impl(module_ctx):
249237
(
250-
load_dep_rules,
251-
load_jar_deps,
238+
load_toolchain_dependencies,
252239
maven_servers,
253240
overridden_artifacts,
254241
fetch_sources,
255242
validate_scala_version,
256243
scalafmt_default_config_path,
257244
) = _get_settings(module_ctx)
258-
srcjars = _get_scala_compiler_srcjars(module_ctx)
245+
compiler_srcjars = _get_scala_compiler_srcjars(module_ctx)
259246
toolchains = _get_toolchains(module_ctx)
260247

261-
# Replace scala_repositories()
262-
for version in SCALA_VERSIONS:
263-
if load_dep_rules:
264-
# Replace rules_scala_setup()
265-
dt_patched_compiler_setup(version, srcjars.get(version))
266-
267-
compiler_sources_repo(
268-
name = "scala_compiler_sources",
269-
scala_versions = SCALA_VERSIONS,
248+
scala_repositories(
249+
maven_servers = maven_servers,
250+
# Note the internal macro parameter misspells "overriden".
251+
overriden_artifacts = overridden_artifacts,
252+
load_dep_rules = False, # MODULE.bazel loads dependencies now.
253+
load_jar_deps = load_toolchain_dependencies,
254+
fetch_sources = fetch_sources,
255+
validate_scala_version = validate_scala_version,
256+
scala_compiler_srcjars = compiler_srcjars,
270257
)
271258

272-
if load_jar_deps:
273-
rules_scala_toolchain_deps_repositories(
274-
maven_servers = maven_servers,
275-
# Note the internal macro parameters misspell "overriden".
276-
overriden_artifacts = overridden_artifacts,
277-
fetch_sources = fetch_sources,
278-
validate_scala_version = validate_scala_version,
279-
)
280-
281259
if "scalatest" in toolchains:
282260
scalatest_repositories(
283261
maven_servers = maven_servers,

scala/private/macros/scala_repositories.bzl

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,9 @@ def dt_patched_compiler_setup(scala_version, scala_compiler_srcjar = None):
116116
integrity = srcjar.get("integrity"),
117117
)
118118

119-
def rules_scala_setup(scala_compiler_srcjar = None):
119+
def rules_scala_setup(
120+
scala_compiler_srcjar = None,
121+
setup_compiler_sources = True):
120122
if not native.existing_rule("bazel_skylib"):
121123
http_archive(
122124
name = "bazel_skylib",
@@ -169,8 +171,21 @@ def rules_scala_setup(scala_compiler_srcjar = None):
169171
url = "https://github.com/bazelbuild/rules_proto/releases/download/6.0.2/rules_proto-6.0.2.tar.gz",
170172
)
171173

174+
if setup_compiler_sources:
175+
srcs = {version: scala_compiler_srcjar for version in SCALA_VERSIONS}
176+
_setup_scala_compiler_sources(srcs)
177+
178+
def _setup_scala_compiler_sources(srcjars = {}):
179+
"""Generates Scala compiler source repos used internally by rules_scala.
180+
181+
Args:
182+
srcjars: optional dictionary of Scala version string to compiler srcjar
183+
metadata dictionaries containing:
184+
- exactly one "label", "url", or "urls" key
185+
- optional "integrity" or "sha256" keys
186+
"""
172187
for scala_version in SCALA_VERSIONS:
173-
dt_patched_compiler_setup(scala_version, scala_compiler_srcjar)
188+
dt_patched_compiler_setup(scala_version, srcjars.get(scala_version))
174189

175190
compiler_sources_repo(
176191
name = "scala_compiler_sources",
@@ -219,13 +234,19 @@ def scala_repositories(
219234
overriden_artifacts = {},
220235
load_dep_rules = True,
221236
load_jar_deps = True,
222-
fetch_sources = False):
237+
fetch_sources = False,
238+
validate_scala_version = True,
239+
scala_compiler_srcjars = {}):
223240
if load_dep_rules:
224-
rules_scala_setup()
241+
# When `WORKSPACE` goes away, so can this case.
242+
rules_scala_setup(setup_compiler_sources = False)
243+
244+
_setup_scala_compiler_sources(scala_compiler_srcjars)
225245

226246
if load_jar_deps:
227247
rules_scala_toolchain_deps_repositories(
228248
maven_servers,
229249
overriden_artifacts,
230250
fetch_sources,
251+
validate_scala_version,
231252
)

0 commit comments

Comments
 (0)