Skip to content

Commit

Permalink
scalac
Browse files Browse the repository at this point in the history
  • Loading branch information
mateuszkuta256 committed Feb 16, 2024
1 parent fdf2929 commit f247cc8
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 65 deletions.
30 changes: 0 additions & 30 deletions scala/private/common_attributes.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -84,36 +84,6 @@ implicit_deps = {
"_java_runtime": attr.label(
default = Label("@bazel_tools//tools/jdk:current_java_runtime"),
),
"_scalac": attr.label(
executable = True,
cfg = "exec",
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac"),
allow_files = True,
),
"_scalac_before_2_12_13": attr.label(
executable = True,
cfg = "exec",
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_before_2_12_13"),
allow_files = True,
),
"_scalac_after_2_12_13_and_before_2_13_12": attr.label(
executable = True,
cfg = "exec",
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_after_2_12_13_and_before_2_13_12"),
allow_files = True,
),
"_scalac_after_2_13_12": attr.label(
executable = True,
cfg = "exec",
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_after_2_13_12"),
allow_files = True,
),
"_scalac_3": attr.label(
executable = True,
cfg = "exec",
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_3"),
allow_files = True,
),
"_exe": attr.label(
executable = True,
cfg = "exec",
Expand Down
19 changes: 2 additions & 17 deletions scala/private/phases/phase_compile.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ load(
)
load(":resources.bzl", _resource_paths = "paths")
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSION")
load("@io_bazel_rules_scala//scala:scala_cross_version.bzl", "extract_major_version", "extract_minor_version")

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

Expand Down Expand Up @@ -199,6 +198,7 @@ def _compile_or_empty(
scala_srcs = _get_files_with_extension(ctx, _scala_extension)
in_srcjars = _get_files_with_extension(ctx, _srcjar_extension)
all_srcjars = depset(in_srcjars, transitive = [srcjars])

sources = scala_srcs + java_srcs
_compile_scala(
ctx,
Expand All @@ -221,7 +221,7 @@ def _compile_or_empty(
ctx.attr.expect_java_output,
ctx.attr.scalac_jvm_flags,
scalacopts,
_select_scalac(ctx),
ctx.executable._scalac,
dependency_info,
unused_dependency_checker_ignored_targets,
additional_outputs,
Expand Down Expand Up @@ -390,18 +390,3 @@ def _interim_java_provider_for_java_compilation(scala_output):
compile_jar = scala_output,
neverlink = True,
)

def _select_scalac(ctx):
scala_version = ctx.toolchains["@io_bazel_rules_scala//scala:toolchain_type"].scala_version
if scala_version:
major_version = extract_major_version(scala_version)
minor_version = extract_minor_version(scala_version)
if major_version.startswith("2.11") or (major_version.startswith("2.12") and int(minor_version) < 13):
return ctx.executable._scalac_before_2_12_13
if ((major_version.startswith("2.12") and int(minor_version) >= 13) or (major_version.startswith("2.13") and int(minor_version) < 12)):
return ctx.executable._scalac_after_2_12_13_and_before_2_13_12
if (major_version.startswith("2.13") and int(minor_version) >= 12):
return ctx.executable._scalac_after_2_13_12
if (major_version.startswith("3")):
return ctx.executable._scalac_3
return ctx.executable._scalac
7 changes: 3 additions & 4 deletions scala/private/rules/scala_binary.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ load(
"resolve_deps",
)
load("@io_bazel_rules_scala//scala/private:common_outputs.bzl", "common_outputs")
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "scala_version_transition", "toolchain_transition_attr")
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "cross_build_attrs", "scala_version_transition")
load(
"@io_bazel_rules_scala//scala/private:phases/phases.bzl",
"extras_phases",
Expand Down Expand Up @@ -71,12 +71,11 @@ _scala_binary_attrs.update(common_attrs)

_scala_binary_attrs.update(resolve_deps)

_scala_binary_attrs.update(toolchain_transition_attr)

def make_scala_binary(*extras):
def make_scala_binary(*extras, scala_version = None):
return rule(
attrs = _dicts.add(
_scala_binary_attrs,
cross_build_attrs(scala_version),
extras_phases(extras),
*[extra["attrs"] for extra in extras if "attrs" in extra]
),
Expand Down
5 changes: 4 additions & 1 deletion scala/private/rules/scala_junit_test.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ load(
"launcher_template",
)
load("@io_bazel_rules_scala//scala/private:common_outputs.bzl", "common_outputs")
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "cross_build_attrs", "scala_version_transition")
load(
"@io_bazel_rules_scala//scala/private:phases/phases.bzl",
"extras_phases",
Expand Down Expand Up @@ -123,10 +124,11 @@ _scala_junit_test_attrs.update({
"tests_from": attr.label_list(providers = [[JavaInfo]]),
})

def make_scala_junit_test(*extras):
def make_scala_junit_test(*extras, scala_version = None):
return rule(
attrs = _dicts.add(
_scala_junit_test_attrs,
cross_build_attrs(scala_version),
extras_phases(extras),
*[extra["attrs"] for extra in extras if "attrs" in extra]
),
Expand All @@ -140,6 +142,7 @@ def make_scala_junit_test(*extras):
"@io_bazel_rules_scala//scala:toolchain_type",
"@bazel_tools//tools/jdk:toolchain_type",
],
cfg = scala_version_transition,
incompatible_use_toolchain_transition = True,
implementation = _scala_junit_test_impl,
)
Expand Down
18 changes: 14 additions & 4 deletions scala/private/rules/scala_library.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ load(
"resolve_deps",
)
load("@io_bazel_rules_scala//scala/private:common_outputs.bzl", "common_outputs")
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "scala_version_transition", "toolchain_transition_attr")
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "cross_build_attrs", "scala_version_transition")
load(
"@io_bazel_rules_scala//scala/private:coverage_replacements_provider.bzl",
_coverage_replacements_provider = "coverage_replacements_provider",
Expand Down Expand Up @@ -88,12 +88,11 @@ _scala_library_attrs.update(_library_attrs)

_scala_library_attrs.update(resolve_deps)

_scala_library_attrs.update(toolchain_transition_attr)

def make_scala_library(*extras):
def make_scala_library(*extras, scala_version = None):
return rule(
attrs = _dicts.add(
_scala_library_attrs,
cross_build_attrs(scala_version),
extras_phases(extras),
*[extra["attrs"] for extra in extras if "attrs" in extra]
),
Expand Down Expand Up @@ -249,6 +248,17 @@ _scala_macro_library_attrs.update(_library_attrs)

_scala_macro_library_attrs.update(resolve_deps)

_scala_macro_library_attrs.update(
{
"_scalac": attr.label(
executable = True,
cfg = "exec",
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac"),
allow_files = True,
),
},
)

# Set unused_dependency_checker_mode default to off for scala_macro_library
_scala_macro_library_attrs["unused_dependency_checker_mode"] = attr.string(
default = "off",
Expand Down
5 changes: 4 additions & 1 deletion scala/private/rules/scala_repl.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ load(
"resolve_deps",
)
load("@io_bazel_rules_scala//scala/private:common_outputs.bzl", "common_outputs")
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "cross_build_attrs", "scala_version_transition")
load(
"@io_bazel_rules_scala//scala/private:phases/phases.bzl",
"extras_phases",
Expand Down Expand Up @@ -65,10 +66,11 @@ _scala_repl_attrs.update(common_attrs)

_scala_repl_attrs.update(resolve_deps)

def make_scala_repl(*extras):
def make_scala_repl(*extras, scala_version = None):
return rule(
attrs = _dicts.add(
_scala_repl_attrs,
cross_build_attrs(scala_version),
extras_phases(extras),
*[extra["attrs"] for extra in extras if "attrs" in extra]
),
Expand All @@ -79,6 +81,7 @@ def make_scala_repl(*extras):
*[extra["outputs"] for extra in extras if "outputs" in extra]
),
toolchains = ["@io_bazel_rules_scala//scala:toolchain_type"],
cfg = scala_version_transition,
incompatible_use_toolchain_transition = True,
implementation = _scala_repl_impl,
)
Expand Down
5 changes: 4 additions & 1 deletion scala/private/rules/scala_test.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ load(
)
load("@io_bazel_rules_scala//scala/private:common.bzl", "sanitize_string_for_usage")
load("@io_bazel_rules_scala//scala/private:common_outputs.bzl", "common_outputs")
load("@io_bazel_rules_scala//scala/versions:versions.bzl", "cross_build_attrs", "scala_version_transition")
load(
"@io_bazel_rules_scala//scala/private:phases/phases.bzl",
"extras_phases",
Expand Down Expand Up @@ -108,10 +109,11 @@ _scala_test_attrs.update(common_attrs)

_scala_test_attrs.update(_test_resolve_deps)

def make_scala_test(*extras):
def make_scala_test(*extras, scala_version = None):
return rule(
attrs = _dicts.add(
_scala_test_attrs,
cross_build_attrs(scala_version),
extras_phases(extras),
*[extra["attrs"] for extra in extras if "attrs" in extra]
),
Expand All @@ -126,6 +128,7 @@ def make_scala_test(*extras):
"@io_bazel_rules_scala//scala:toolchain_type",
"@bazel_tools//tools/jdk:toolchain_type",
],
cfg = scala_version_transition,
incompatible_use_toolchain_transition = True,
implementation = _scala_test_impl,
)
Expand Down
37 changes: 30 additions & 7 deletions scala/versions/versions.bzl
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
load("@io_bazel_rules_scala//scala:scala_cross_version.bzl", "extract_major_version", "extract_minor_version")

def _scala_version_transition_impl(settings, attr):
if attr.scala_version:
return {"//scala/versions:scala_version": attr.scala_version}
Expand All @@ -10,12 +12,33 @@ scala_version_transition = transition(
outputs = ["//scala/versions:scala_version"],
)

toolchain_transition_attr = {
"scala_version": attr.string(),
"_allowlist_function_transition": attr.label(
default = "@bazel_tools//tools/allowlists/function_transition_allowlist",
),
}

def sanitize_version(scala_version):
return scala_version.replace(".", "_")

def cross_build_attrs(scala_version):
return {
"scala_version": attr.string(default = scala_version or ""),
"_allowlist_function_transition": attr.label(
default = "@bazel_tools//tools/allowlists/function_transition_allowlist",
),
"_scalac": attr.label(
executable = True,
cfg = "exec",
default = Label(_scalac_label(scala_version)),
allow_files = True,
),
}

def _scalac_label(scala_version):
if scala_version:
major_version = extract_major_version(scala_version)
minor_version = extract_minor_version(scala_version)
if major_version.startswith("2.11") or (major_version.startswith("2.12") and int(minor_version) < 13):
return "@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_before_2_12_13"
if ((major_version.startswith("2.12") and int(minor_version) >= 13) or (major_version.startswith("2.13") and int(minor_version) < 12)):
return "@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_after_2_12_13_and_before_2_13_12"
if (major_version.startswith("2.13") and int(minor_version) >= 12):
return "@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_after_2_13_12"
if (major_version.startswith("3")):
return "@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac_3"
return "@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac:scalac"

0 comments on commit f247cc8

Please sign in to comment.