Skip to content

Commit f247cc8

Browse files
scalac
1 parent fdf2929 commit f247cc8

File tree

8 files changed

+61
-65
lines changed

8 files changed

+61
-65
lines changed

scala/private/common_attributes.bzl

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -84,36 +84,6 @@ implicit_deps = {
8484
"_java_runtime": attr.label(
8585
default = Label("@bazel_tools//tools/jdk:current_java_runtime"),
8686
),
87-
"_scalac": attr.label(
88-
executable = True,
89-
cfg = "exec",
90-
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac"),
91-
allow_files = True,
92-
),
93-
"_scalac_before_2_12_13": attr.label(
94-
executable = True,
95-
cfg = "exec",
96-
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_before_2_12_13"),
97-
allow_files = True,
98-
),
99-
"_scalac_after_2_12_13_and_before_2_13_12": attr.label(
100-
executable = True,
101-
cfg = "exec",
102-
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_after_2_12_13_and_before_2_13_12"),
103-
allow_files = True,
104-
),
105-
"_scalac_after_2_13_12": attr.label(
106-
executable = True,
107-
cfg = "exec",
108-
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_after_2_13_12"),
109-
allow_files = True,
110-
),
111-
"_scalac_3": attr.label(
112-
executable = True,
113-
cfg = "exec",
114-
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_3"),
115-
allow_files = True,
116-
),
11787
"_exe": attr.label(
11888
executable = True,
11989
cfg = "exec",

scala/private/phases/phase_compile.bzl

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ load(
1818
)
1919
load(":resources.bzl", _resource_paths = "paths")
2020
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSION")
21-
load("@io_bazel_rules_scala//scala:scala_cross_version.bzl", "extract_major_version", "extract_minor_version")
2221

2322
buildijar_default_value = True if SCALA_VERSION.startswith("2.") else False
2423

@@ -199,6 +198,7 @@ def _compile_or_empty(
199198
scala_srcs = _get_files_with_extension(ctx, _scala_extension)
200199
in_srcjars = _get_files_with_extension(ctx, _srcjar_extension)
201200
all_srcjars = depset(in_srcjars, transitive = [srcjars])
201+
202202
sources = scala_srcs + java_srcs
203203
_compile_scala(
204204
ctx,
@@ -221,7 +221,7 @@ def _compile_or_empty(
221221
ctx.attr.expect_java_output,
222222
ctx.attr.scalac_jvm_flags,
223223
scalacopts,
224-
_select_scalac(ctx),
224+
ctx.executable._scalac,
225225
dependency_info,
226226
unused_dependency_checker_ignored_targets,
227227
additional_outputs,
@@ -390,18 +390,3 @@ def _interim_java_provider_for_java_compilation(scala_output):
390390
compile_jar = scala_output,
391391
neverlink = True,
392392
)
393-
394-
def _select_scalac(ctx):
395-
scala_version = ctx.toolchains["@io_bazel_rules_scala//scala:toolchain_type"].scala_version
396-
if scala_version:
397-
major_version = extract_major_version(scala_version)
398-
minor_version = extract_minor_version(scala_version)
399-
if major_version.startswith("2.11") or (major_version.startswith("2.12") and int(minor_version) < 13):
400-
return ctx.executable._scalac_before_2_12_13
401-
if ((major_version.startswith("2.12") and int(minor_version) >= 13) or (major_version.startswith("2.13") and int(minor_version) < 12)):
402-
return ctx.executable._scalac_after_2_12_13_and_before_2_13_12
403-
if (major_version.startswith("2.13") and int(minor_version) >= 12):
404-
return ctx.executable._scalac_after_2_13_12
405-
if (major_version.startswith("3")):
406-
return ctx.executable._scalac_3
407-
return ctx.executable._scalac

scala/private/rules/scala_binary.bzl

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ load(
99
"resolve_deps",
1010
)
1111
load("@io_bazel_rules_scala//scala/private:common_outputs.bzl", "common_outputs")
12-
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "scala_version_transition", "toolchain_transition_attr")
12+
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "cross_build_attrs", "scala_version_transition")
1313
load(
1414
"@io_bazel_rules_scala//scala/private:phases/phases.bzl",
1515
"extras_phases",
@@ -71,12 +71,11 @@ _scala_binary_attrs.update(common_attrs)
7171

7272
_scala_binary_attrs.update(resolve_deps)
7373

74-
_scala_binary_attrs.update(toolchain_transition_attr)
75-
76-
def make_scala_binary(*extras):
74+
def make_scala_binary(*extras, scala_version = None):
7775
return rule(
7876
attrs = _dicts.add(
7977
_scala_binary_attrs,
78+
cross_build_attrs(scala_version),
8079
extras_phases(extras),
8180
*[extra["attrs"] for extra in extras if "attrs" in extra]
8281
),

scala/private/rules/scala_junit_test.bzl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ load(
88
"launcher_template",
99
)
1010
load("@io_bazel_rules_scala//scala/private:common_outputs.bzl", "common_outputs")
11+
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "cross_build_attrs", "scala_version_transition")
1112
load(
1213
"@io_bazel_rules_scala//scala/private:phases/phases.bzl",
1314
"extras_phases",
@@ -123,10 +124,11 @@ _scala_junit_test_attrs.update({
123124
"tests_from": attr.label_list(providers = [[JavaInfo]]),
124125
})
125126

126-
def make_scala_junit_test(*extras):
127+
def make_scala_junit_test(*extras, scala_version = None):
127128
return rule(
128129
attrs = _dicts.add(
129130
_scala_junit_test_attrs,
131+
cross_build_attrs(scala_version),
130132
extras_phases(extras),
131133
*[extra["attrs"] for extra in extras if "attrs" in extra]
132134
),
@@ -140,6 +142,7 @@ def make_scala_junit_test(*extras):
140142
"@io_bazel_rules_scala//scala:toolchain_type",
141143
"@bazel_tools//tools/jdk:toolchain_type",
142144
],
145+
cfg = scala_version_transition,
143146
incompatible_use_toolchain_transition = True,
144147
implementation = _scala_junit_test_impl,
145148
)

scala/private/rules/scala_library.bzl

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ load(
1111
"resolve_deps",
1212
)
1313
load("@io_bazel_rules_scala//scala/private:common_outputs.bzl", "common_outputs")
14-
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "scala_version_transition", "toolchain_transition_attr")
14+
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "cross_build_attrs", "scala_version_transition")
1515
load(
1616
"@io_bazel_rules_scala//scala/private:coverage_replacements_provider.bzl",
1717
_coverage_replacements_provider = "coverage_replacements_provider",
@@ -88,12 +88,11 @@ _scala_library_attrs.update(_library_attrs)
8888

8989
_scala_library_attrs.update(resolve_deps)
9090

91-
_scala_library_attrs.update(toolchain_transition_attr)
92-
93-
def make_scala_library(*extras):
91+
def make_scala_library(*extras, scala_version = None):
9492
return rule(
9593
attrs = _dicts.add(
9694
_scala_library_attrs,
95+
cross_build_attrs(scala_version),
9796
extras_phases(extras),
9897
*[extra["attrs"] for extra in extras if "attrs" in extra]
9998
),
@@ -249,6 +248,17 @@ _scala_macro_library_attrs.update(_library_attrs)
249248

250249
_scala_macro_library_attrs.update(resolve_deps)
251250

251+
_scala_macro_library_attrs.update(
252+
{
253+
"_scalac": attr.label(
254+
executable = True,
255+
cfg = "exec",
256+
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac"),
257+
allow_files = True,
258+
),
259+
},
260+
)
261+
252262
# Set unused_dependency_checker_mode default to off for scala_macro_library
253263
_scala_macro_library_attrs["unused_dependency_checker_mode"] = attr.string(
254264
default = "off",

scala/private/rules/scala_repl.bzl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ load(
99
"resolve_deps",
1010
)
1111
load("@io_bazel_rules_scala//scala/private:common_outputs.bzl", "common_outputs")
12+
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "cross_build_attrs", "scala_version_transition")
1213
load(
1314
"@io_bazel_rules_scala//scala/private:phases/phases.bzl",
1415
"extras_phases",
@@ -65,10 +66,11 @@ _scala_repl_attrs.update(common_attrs)
6566

6667
_scala_repl_attrs.update(resolve_deps)
6768

68-
def make_scala_repl(*extras):
69+
def make_scala_repl(*extras, scala_version = None):
6970
return rule(
7071
attrs = _dicts.add(
7172
_scala_repl_attrs,
73+
cross_build_attrs(scala_version),
7274
extras_phases(extras),
7375
*[extra["attrs"] for extra in extras if "attrs" in extra]
7476
),
@@ -79,6 +81,7 @@ def make_scala_repl(*extras):
7981
*[extra["outputs"] for extra in extras if "outputs" in extra]
8082
),
8183
toolchains = ["@io_bazel_rules_scala//scala:toolchain_type"],
84+
cfg = scala_version_transition,
8285
incompatible_use_toolchain_transition = True,
8386
implementation = _scala_repl_impl,
8487
)

scala/private/rules/scala_test.bzl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ load(
99
)
1010
load("@io_bazel_rules_scala//scala/private:common.bzl", "sanitize_string_for_usage")
1111
load("@io_bazel_rules_scala//scala/private:common_outputs.bzl", "common_outputs")
12+
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "cross_build_attrs", "scala_version_transition")
1213
load(
1314
"@io_bazel_rules_scala//scala/private:phases/phases.bzl",
1415
"extras_phases",
@@ -108,10 +109,11 @@ _scala_test_attrs.update(common_attrs)
108109

109110
_scala_test_attrs.update(_test_resolve_deps)
110111

111-
def make_scala_test(*extras):
112+
def make_scala_test(*extras, scala_version = None):
112113
return rule(
113114
attrs = _dicts.add(
114115
_scala_test_attrs,
116+
cross_build_attrs(scala_version),
115117
extras_phases(extras),
116118
*[extra["attrs"] for extra in extras if "attrs" in extra]
117119
),
@@ -126,6 +128,7 @@ def make_scala_test(*extras):
126128
"@io_bazel_rules_scala//scala:toolchain_type",
127129
"@bazel_tools//tools/jdk:toolchain_type",
128130
],
131+
cfg = scala_version_transition,
129132
incompatible_use_toolchain_transition = True,
130133
implementation = _scala_test_impl,
131134
)

scala/versions/versions.bzl

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
load("@io_bazel_rules_scala//scala:scala_cross_version.bzl", "extract_major_version", "extract_minor_version")
2+
13
def _scala_version_transition_impl(settings, attr):
24
if attr.scala_version:
35
return {"//scala/versions:scala_version": attr.scala_version}
@@ -10,12 +12,33 @@ scala_version_transition = transition(
1012
outputs = ["//scala/versions:scala_version"],
1113
)
1214

13-
toolchain_transition_attr = {
14-
"scala_version": attr.string(),
15-
"_allowlist_function_transition": attr.label(
16-
default = "@bazel_tools//tools/allowlists/function_transition_allowlist",
17-
),
18-
}
19-
2015
def sanitize_version(scala_version):
2116
return scala_version.replace(".", "_")
17+
18+
def cross_build_attrs(scala_version):
19+
return {
20+
"scala_version": attr.string(default = scala_version or ""),
21+
"_allowlist_function_transition": attr.label(
22+
default = "@bazel_tools//tools/allowlists/function_transition_allowlist",
23+
),
24+
"_scalac": attr.label(
25+
executable = True,
26+
cfg = "exec",
27+
default = Label(_scalac_label(scala_version)),
28+
allow_files = True,
29+
),
30+
}
31+
32+
def _scalac_label(scala_version):
33+
if scala_version:
34+
major_version = extract_major_version(scala_version)
35+
minor_version = extract_minor_version(scala_version)
36+
if major_version.startswith("2.11") or (major_version.startswith("2.12") and int(minor_version) < 13):
37+
return "@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_before_2_12_13"
38+
if ((major_version.startswith("2.12") and int(minor_version) >= 13) or (major_version.startswith("2.13") and int(minor_version) < 12)):
39+
return "@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_after_2_12_13_and_before_2_13_12"
40+
if (major_version.startswith("2.13") and int(minor_version) >= 12):
41+
return "@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_after_2_13_12"
42+
if (major_version.startswith("3")):
43+
return "@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_3"
44+
return "@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac"

0 commit comments

Comments
 (0)