Skip to content

Commit a6b26df

Browse files
authored
Move default toolchain dependencies logic to .bzl file (#1561)
* Move default toolchain dependencies logic to .bzl file Purely refactoring change. Encapsulates the logic of selecting dependencies into a function. Should come in handy in future changes. * Undo `setup_scala_toolchain_with_default_classpaths` macro
1 parent 89196c0 commit a6b26df

File tree

2 files changed

+70
-48
lines changed

2 files changed

+70
-48
lines changed

scala/BUILD

Lines changed: 8 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,28 @@
11
load("@rules_java//java:defs.bzl", "java_import", "java_library")
22
load("//scala:providers.bzl", "declare_deps_provider")
3-
load("//scala:scala.bzl", "setup_scala_toolchain")
4-
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION")
3+
load("//scala/private:macros/setup_scala_toolchain.bzl", "default_deps", "setup_scala_toolchain")
4+
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSION")
55

66
toolchain_type(
77
name = "toolchain_type",
88
visibility = ["//visibility:public"],
99
)
1010

11-
_SCALA_COMPILE_CLASSPATH_DEPS = [
12-
"@io_bazel_rules_scala_scala_compiler",
13-
"@io_bazel_rules_scala_scala_library",
14-
] + (["@io_bazel_rules_scala_scala_reflect"] if SCALA_MAJOR_VERSION.startswith("2") else [
15-
"@io_bazel_rules_scala_scala_interfaces",
16-
"@io_bazel_rules_scala_scala_tasty_core",
17-
"@io_bazel_rules_scala_scala_asm",
18-
"@io_bazel_rules_scala_scala_library_2",
19-
])
20-
21-
_SCALA_LIBRARY_CLASSPATH_DEPS = [
22-
"@io_bazel_rules_scala_scala_library",
23-
] + (["@io_bazel_rules_scala_scala_reflect"] if SCALA_MAJOR_VERSION.startswith("2") else [
24-
"@io_bazel_rules_scala_scala_library_2",
25-
])
26-
27-
_SCALA_MACRO_CLASSPATH_DEPS = [
28-
"@io_bazel_rules_scala_scala_library",
29-
] + (["@io_bazel_rules_scala_scala_reflect"] if SCALA_MAJOR_VERSION.startswith("2") else [
30-
"@io_bazel_rules_scala_scala_library_2",
31-
])
32-
33-
_PARSER_COMBINATORS_DEPS = ["@io_bazel_rules_scala_scala_parser_combinators"]
34-
35-
_SCALA_XML_DEPS = ["@io_bazel_rules_scala_scala_xml"]
36-
37-
_SEMANTICDB_DEPS = ["@org_scalameta_semanticdb_scalac"] if SCALA_MAJOR_VERSION.startswith("2") else []
38-
3911
setup_scala_toolchain(
4012
name = "default_toolchain",
41-
scala_compile_classpath = _SCALA_COMPILE_CLASSPATH_DEPS,
42-
scala_library_classpath = _SCALA_LIBRARY_CLASSPATH_DEPS,
43-
scala_macro_classpath = _SCALA_MACRO_CLASSPATH_DEPS,
4413
use_argument_file_in_runner = True,
4514
)
4615

4716
setup_scala_toolchain(
4817
name = "unused_dependency_checker_error_toolchain",
4918
dependency_tracking_method = "ast-plus",
50-
scala_compile_classpath = _SCALA_COMPILE_CLASSPATH_DEPS,
51-
scala_library_classpath = _SCALA_LIBRARY_CLASSPATH_DEPS,
52-
scala_macro_classpath = _SCALA_MACRO_CLASSPATH_DEPS,
5319
unused_dependency_checker_mode = "error",
5420
)
5521

5622
setup_scala_toolchain(
5723
name = "minimal_direct_source_deps",
5824
dependency_mode = "plus-one",
5925
dependency_tracking_method = "ast",
60-
scala_compile_classpath = _SCALA_COMPILE_CLASSPATH_DEPS,
61-
scala_library_classpath = _SCALA_LIBRARY_CLASSPATH_DEPS,
62-
scala_macro_classpath = _SCALA_MACRO_CLASSPATH_DEPS,
6326
strict_deps_mode = "error",
6427
unused_dependency_checker_mode = "error",
6528
)
@@ -80,40 +43,40 @@ declare_deps_provider(
8043
name = "scala_compile_classpath_provider",
8144
deps_id = "scala_compile_classpath",
8245
visibility = ["//visibility:public"],
83-
deps = _SCALA_COMPILE_CLASSPATH_DEPS,
46+
deps = default_deps("scala_compile_classpath", SCALA_VERSION),
8447
)
8548

8649
declare_deps_provider(
8750
name = "scala_library_classpath_provider",
8851
deps_id = "scala_library_classpath",
8952
visibility = ["//visibility:public"],
90-
deps = _SCALA_LIBRARY_CLASSPATH_DEPS,
53+
deps = default_deps("scala_library_classpath", SCALA_VERSION),
9154
)
9255

9356
declare_deps_provider(
9457
name = "scala_macro_classpath_provider",
9558
deps_id = "scala_macro_classpath",
9659
visibility = ["//visibility:public"],
97-
deps = _SCALA_MACRO_CLASSPATH_DEPS,
60+
deps = default_deps("scala_macro_classpath", SCALA_VERSION),
9861
)
9962

10063
declare_deps_provider(
10164
name = "scala_xml_provider",
10265
deps_id = "scala_xml",
10366
visibility = ["//visibility:public"],
104-
deps = _SCALA_XML_DEPS,
67+
deps = default_deps("scala_xml", SCALA_VERSION),
10568
)
10669

10770
declare_deps_provider(
10871
name = "parser_combinators_provider",
10972
deps_id = "parser_combinators",
11073
visibility = ["//visibility:public"],
111-
deps = _PARSER_COMBINATORS_DEPS,
74+
deps = default_deps("parser_combinators", SCALA_VERSION),
11275
)
11376

11477
declare_deps_provider(
11578
name = "semanticdb_provider",
11679
deps_id = "semanticdb",
11780
visibility = ["//visibility:public"],
118-
deps = _SEMANTICDB_DEPS,
81+
deps = default_deps("semanticdb", SCALA_VERSION),
11982
)

scala/private/macros/setup_scala_toolchain.bzl

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSION")
55

66
def setup_scala_toolchain(
77
name,
8-
scala_compile_classpath,
9-
scala_library_classpath,
10-
scala_macro_classpath,
8+
scala_compile_classpath = None,
9+
scala_library_classpath = None,
10+
scala_macro_classpath = None,
1111
scala_version = SCALA_VERSION,
1212
scala_xml_deps = None,
1313
parser_combinators_deps = None,
@@ -22,20 +22,26 @@ def setup_scala_toolchain(
2222
scala_macro_classpath_provider = "%s_scala_macro_classpath_provider" % name
2323
semanticdb_deps_provider = "%s_semanticdb_deps_provider" % name
2424

25+
if scala_compile_classpath == None:
26+
scala_compile_classpath = default_deps("scala_compile_classpath", scala_version)
2527
declare_deps_provider(
2628
name = scala_compile_classpath_provider,
2729
deps_id = "scala_compile_classpath",
2830
visibility = visibility,
2931
deps = scala_compile_classpath,
3032
)
3133

34+
if scala_library_classpath == None:
35+
scala_library_classpath = default_deps("scala_library_classpath", scala_version)
3236
declare_deps_provider(
3337
name = scala_library_classpath_provider,
3438
deps_id = "scala_library_classpath",
3539
visibility = visibility,
3640
deps = scala_library_classpath,
3741
)
3842

43+
if scala_macro_classpath == None:
44+
scala_macro_classpath = default_deps("scala_macro_classpath", scala_version)
3945
declare_deps_provider(
4046
name = scala_macro_classpath_provider,
4147
deps_id = "scala_macro_classpath",
@@ -99,3 +105,56 @@ def setup_scala_toolchain(
99105
target_settings = ["@io_bazel_rules_scala_config//:scala_version" + version_suffix(scala_version)],
100106
visibility = visibility,
101107
)
108+
109+
_DEFAULT_DEPS = {
110+
"scala_compile_classpath": {
111+
"any": [
112+
"@io_bazel_rules_scala_scala_compiler",
113+
"@io_bazel_rules_scala_scala_library",
114+
],
115+
"2": [
116+
"@io_bazel_rules_scala_scala_reflect",
117+
],
118+
"3": [
119+
"@io_bazel_rules_scala_scala_interfaces",
120+
"@io_bazel_rules_scala_scala_tasty_core",
121+
"@io_bazel_rules_scala_scala_asm",
122+
"@io_bazel_rules_scala_scala_library_2",
123+
],
124+
},
125+
"scala_library_classpath": {
126+
"any": [
127+
"@io_bazel_rules_scala_scala_library",
128+
],
129+
"2": [
130+
"@io_bazel_rules_scala_scala_reflect",
131+
],
132+
"3": [
133+
"@io_bazel_rules_scala_scala_library_2",
134+
],
135+
},
136+
"scala_macro_classpath": {
137+
"any": [
138+
"@io_bazel_rules_scala_scala_library",
139+
],
140+
"2": [
141+
"@io_bazel_rules_scala_scala_reflect",
142+
],
143+
"3": [
144+
"@io_bazel_rules_scala_scala_library_2",
145+
],
146+
},
147+
"scala_xml": {
148+
"any": ["@io_bazel_rules_scala_scala_xml"],
149+
},
150+
"parser_combinators": {
151+
"any": ["@io_bazel_rules_scala_scala_parser_combinators"],
152+
},
153+
"semanticdb": {
154+
"2": ["@org_scalameta_semanticdb_scalac"],
155+
},
156+
}
157+
158+
def default_deps(deps_id, scala_version):
159+
versions = _DEFAULT_DEPS[deps_id]
160+
return versions.get("any", []) + versions.get(scala_version[0], [])

0 commit comments

Comments
 (0)