From 34457638d1b6d1b68280f07e66c3774022eeed51 Mon Sep 17 00:00:00 2001 From: Adam Szady Date: Fri, 22 Mar 2024 12:52:12 +0100 Subject: [PATCH] Don't rely on global `SCALA_VERSION` in BUILD files, use select instead --- scala/support/BUILD | 96 ++++--------------- src/java/io/bazel/rulesscala/scalac/BUILD | 25 ++--- .../scalac/deps_tracking_reporter/BUILD | 14 ++- .../io/bazel/rulesscala/scalac/reporter/BUILD | 27 +++--- .../dependency_analyzer/src/main/BUILD | 52 +++++++++- .../dependency_analyzer/src/main/analyzer.bzl | 64 ------------- third_party/utils/src/test/BUILD | 17 ++-- 7 files changed, 112 insertions(+), 183 deletions(-) delete mode 100644 third_party/dependency_analyzer/src/main/analyzer.bzl diff --git a/scala/support/BUILD b/scala/support/BUILD index 981b1c477..c733fd9f4 100644 --- a/scala/support/BUILD +++ b/scala/support/BUILD @@ -1,98 +1,36 @@ load("//scala:scala.bzl", "scala_library") -load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION") +load("//scala:scala_cross_version_select.bzl", "select_for_scala_version") scala_library( name = "test_reporter", srcs = ["JUnitXmlReporter.scala"], - scalacopts = { - "3.3": [ - "-deprecation:true", - "-encoding", - "UTF-8", - "-feature", - "-language:existentials", - "-language:higherKinds", - "-language:implicitConversions", - "-unchecked", - "-Xfatal-warnings", - ], - "3.2": [ - "-deprecation:true", - "-encoding", - "UTF-8", - "-feature", - "-language:existentials", - "-language:higherKinds", - "-language:implicitConversions", - "-unchecked", - "-Xfatal-warnings", - ], - "3.1": [ - "-deprecation:true", - "-encoding", - "UTF-8", - "-feature", - "-language:existentials", - "-language:higherKinds", - "-language:implicitConversions", - "-unchecked", - "-Xfatal-warnings", - ], - "2.13": [ - "-deprecation:true", - "-encoding", - "UTF-8", - "-feature", - "-language:existentials", - "-language:higherKinds", - "-language:implicitConversions", - "-unchecked", - "-Xfatal-warnings", + scalacopts = [ + "-deprecation:true", + "-encoding", + "UTF-8", + "-feature", + "-language:existentials", + "-language:higherKinds", + "-language:implicitConversions", + "-unchecked", + "-Xfatal-warnings", + ] + select_for_scala_version( + any_2 = [ "-Xlint", "-Ywarn-dead-code", "-Ywarn-numeric-widen", "-Ywarn-value-discard", - "-Wunused:imports", ], - "2.12": [ - "-deprecation:true", - "-encoding", - "UTF-8", - "-feature", - "-language:existentials", - "-language:higherKinds", - "-language:implicitConversions", - "-unchecked", - "-Xfatal-warnings", - "-Xlint", - "-Yno-adapted-args", - "-Ywarn-dead-code", - "-Ywarn-numeric-widen", - "-Ywarn-value-discard", - "-Xfuture", - "-Ywarn-unused-import", - "-Ypartial-unification", + any_2_13 = [ + "-Wunused:imports", ], - "2.11": [ - "-deprecation:true", - "-encoding", - "UTF-8", - "-feature", - "-language:existentials", - "-language:higherKinds", - "-language:implicitConversions", - "-unchecked", - "-Xfatal-warnings", - "-Xlint", + before_2_13 = [ "-Yno-adapted-args", - "-Ywarn-dead-code", - "-Ywarn-numeric-widen", - "-Ywarn-value-discard", "-Xfuture", "-Ywarn-unused-import", "-Ypartial-unification", ], - }[SCALA_MAJOR_VERSION], + ), visibility = ["//visibility:public"], deps = [ "//scala/private/toolchain_deps:scala_xml", diff --git a/src/java/io/bazel/rulesscala/scalac/BUILD b/src/java/io/bazel/rulesscala/scalac/BUILD index 99cec7d48..8be5744b1 100644 --- a/src/java/io/bazel/rulesscala/scalac/BUILD +++ b/src/java/io/bazel/rulesscala/scalac/BUILD @@ -1,9 +1,5 @@ -load("@rules_java//java:defs.bzl", "java_binary") -load( - "@io_bazel_rules_scala_config//:config.bzl", - "ENABLE_COMPILER_DEPENDENCY_TRACKING", - "SCALA_MAJOR_VERSION", -) +load("@io_bazel_rules_scala_config//:config.bzl", "ENABLE_COMPILER_DEPENDENCY_TRACKING") +load("//scala:scala_cross_version_select.bzl", "select_for_scala_version") SCALAC_DEPS = [ "//scala/private/toolchain_deps:scala_compile_classpath", @@ -16,8 +12,6 @@ SCALAC_DEPS = [ "//src/java/io/bazel/rulesscala/scalac/reporter", ] -DEP_REPORTING_DEPS = ["//third_party/dependency_analyzer/src/main/io/bazel/rulesscala/dependencyanalyzer/compiler:dep_reporting_compiler"] if ENABLE_COMPILER_DEPENDENCY_TRACKING and SCALA_MAJOR_VERSION.startswith("2") else [] - java_binary( name = "scalac", srcs = [ @@ -29,7 +23,11 @@ java_binary( ], main_class = "io.bazel.rulesscala.scalac.ScalacWorker", visibility = ["//visibility:public"], - deps = DEP_REPORTING_DEPS + SCALAC_DEPS, + deps = (select_for_scala_version( + any_2 = [ + "//third_party/dependency_analyzer/src/main/io/bazel/rulesscala/dependencyanalyzer/compiler:dep_reporting_compiler", + ], + ) if ENABLE_COMPILER_DEPENDENCY_TRACKING else []) + SCALAC_DEPS, ) java_binary( @@ -51,11 +49,14 @@ filegroup( srcs = [ "ScalacWorker.java", "ScalacInvokerResults.java", - ] + ( - [ + ] + select_for_scala_version( + any_2 = [ "ScalacInvoker.java", "ReportableMainClass.java", - ] if SCALA_MAJOR_VERSION.startswith("2") else ["ScalacInvoker3.java"] + ], + any_3 = [ + "ScalacInvoker3.java", + ], ), visibility = ["//visibility:public"], ) diff --git a/src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/BUILD b/src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/BUILD index 9a9b4a40d..dabc1f2cf 100644 --- a/src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/BUILD +++ b/src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/BUILD @@ -1,13 +1,11 @@ -load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION", "SCALA_MINOR_VERSION") +load("//scala:scala_cross_version_select.bzl", "select_for_scala_version") filegroup( name = "deps_tracking_reporter", - srcs = [ - "before_2_12_13/DepsTrackingReporter.java", - ] if (SCALA_MAJOR_VERSION == "2.11") or ((SCALA_MAJOR_VERSION == "2.12") and int(SCALA_MINOR_VERSION) < 13) else [ - "after_2_12_13_and_before_2_13_12/DepsTrackingReporter.java", - ] if ((SCALA_MAJOR_VERSION == "2.12") and int(SCALA_MINOR_VERSION) >= 13) or ((SCALA_MAJOR_VERSION == "2.13") and int(SCALA_MINOR_VERSION) < 12) else [ - "after_2_13_12/DepsTrackingReporter.java", - ], + srcs = select_for_scala_version( + before_2_12_13 = ["before_2_12_13/DepsTrackingReporter.java"], + between_2_12_13_and_2_13_12 = ["after_2_12_13_and_before_2_13_12/DepsTrackingReporter.java"], + since_2_13_12 = ["after_2_13_12/DepsTrackingReporter.java"], + ), visibility = ["//visibility:public"], ) diff --git a/src/java/io/bazel/rulesscala/scalac/reporter/BUILD b/src/java/io/bazel/rulesscala/scalac/reporter/BUILD index 70659052b..7721e62ea 100644 --- a/src/java/io/bazel/rulesscala/scalac/reporter/BUILD +++ b/src/java/io/bazel/rulesscala/scalac/reporter/BUILD @@ -1,19 +1,24 @@ load("@rules_proto//proto:defs.bzl", "proto_library") load("@rules_java//java:defs.bzl", "java_library", "java_proto_library") -load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION", "SCALA_MINOR_VERSION") +load("//scala:scala_cross_version_select.bzl", "select_for_scala_version") java_library( name = "reporter", - srcs = [ - "//src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter", - "before_2_12_13/ProtoReporter.java", - ] if SCALA_MAJOR_VERSION.startswith("2.11") or (SCALA_MAJOR_VERSION.startswith("2.12") and int(SCALA_MINOR_VERSION) < 13) else [ - "//src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter", - "after_2_12_13_and_before_2_13_12/ProtoReporter.java", - ] if ((SCALA_MAJOR_VERSION.startswith("2.12") and int(SCALA_MINOR_VERSION) >= 13) or (SCALA_MAJOR_VERSION.startswith("2.13") and int(SCALA_MINOR_VERSION) < 12)) else [ - "//src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter", - "after_2_13_12/ProtoReporter.java", - ] if (SCALA_MAJOR_VERSION.startswith("2.13") and int(SCALA_MINOR_VERSION) >= 12) else ["PlaceholderForEmptyScala3Lib.java"], + srcs = select_for_scala_version( + before_2_12_13 = [ + "//src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter", + "before_2_12_13/ProtoReporter.java", + ], + between_2_12_13_and_2_13_12 = [ + "//src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter", + "after_2_12_13_and_before_2_13_12/ProtoReporter.java", + ], + between_2_13_12_and_3 = [ + "//src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter", + "after_2_13_12/ProtoReporter.java", + ], + default = ["PlaceholderForEmptyScala3Lib.java"], + ), visibility = ["//visibility:public"], deps = [ ":scala_deps_java_proto", diff --git a/third_party/dependency_analyzer/src/main/BUILD b/third_party/dependency_analyzer/src/main/BUILD index b14d5baa9..69109807e 100644 --- a/third_party/dependency_analyzer/src/main/BUILD +++ b/third_party/dependency_analyzer/src/main/BUILD @@ -1,3 +1,51 @@ -load(":analyzer.bzl", "analyzer") +load("//scala:scala.bzl", "scala_library_for_plugin_bootstrapping") +load("//scala:scala_cross_version_select.bzl", "select_for_scala_version") -analyzer() +scala_library_for_plugin_bootstrapping( + name = "dependency_analyzer", + srcs = select_for_scala_version( + any_2 = [ + "io/bazel/rulesscala/dependencyanalyzer/AstUsedJarFinder.scala", + "io/bazel/rulesscala/dependencyanalyzer/DependencyAnalyzer.scala", + "io/bazel/rulesscala/dependencyanalyzer/DependencyAnalyzerSettings.scala", + "io/bazel/rulesscala/dependencyanalyzer/HighLevelCrawlUsedJarFinder.scala", + "io/bazel/rulesscala/dependencyanalyzer/OptionsParser.scala", + ], + before_2_12_13 = [ + "io/bazel/rulesscala/dependencyanalyzer/Reporter.scala", + ], + between_2_12_13_and_3 = [ + "io/bazel/rulesscala/dependencyanalyzer/Reporter213.scala", + ], + since_3 = [ + "io/bazel/rulesscala/dependencyanalyzer3/DependencyAnalyzer.scala", + ], + ), + resources = select_for_scala_version( + any_2 = ["resources/scalac-plugin.xml"], + any_3 = ["resources/plugin.properties"], + ), + visibility = ["//visibility:public"], + deps = [ + "//scala/private/toolchain_deps:scala_compile_classpath", + ] + select_for_scala_version( + any_2 = [ + ":scala_version", + "//src/java/io/bazel/rulesscala/scalac/reporter", + ], + ), +) + +scala_library_for_plugin_bootstrapping( + name = "scala_version", + srcs = [ + "io/bazel/rulesscala/dependencyanalyzer/ScalaVersion.scala", + ], + # As this contains macros we shouldn't make an ijar + build_ijar = False, + resources = ["resources/scalac-plugin.xml"], + visibility = ["//visibility:public"], + deps = [ + "//scala/private/toolchain_deps:scala_compile_classpath", + ], +) diff --git a/third_party/dependency_analyzer/src/main/analyzer.bzl b/third_party/dependency_analyzer/src/main/analyzer.bzl deleted file mode 100644 index 65b2c5e5f..000000000 --- a/third_party/dependency_analyzer/src/main/analyzer.bzl +++ /dev/null @@ -1,64 +0,0 @@ -load("//scala:scala.bzl", "scala_library_for_plugin_bootstrapping") -load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION", "SCALA_VERSION") - -def analyzer(): - if SCALA_MAJOR_VERSION.startswith("2"): - _analyzer_scala_2() - else: - _analyzer_scala_3() - -def _analyzer_scala_3(): - scala_library_for_plugin_bootstrapping( - name = "dependency_analyzer", - srcs = [ - "io/bazel/rulesscala/dependencyanalyzer3/DependencyAnalyzer.scala", - ], - resources = ["resources/plugin.properties"], - visibility = ["//visibility:public"], - deps = [ - "//scala/private/toolchain_deps:scala_compile_classpath", - ], - ) - -def _analyzer_scala_2(): - scala_library_for_plugin_bootstrapping( - name = "scala_version", - srcs = [ - "io/bazel/rulesscala/dependencyanalyzer/ScalaVersion.scala", - ], - # As this contains macros we shouldn't make an ijar - build_ijar = False, - resources = ["resources/scalac-plugin.xml"], - visibility = ["//visibility:public"], - deps = [ - "//scala/private/toolchain_deps:scala_compile_classpath", - ], - ) - - SCALA_MINOR_VERSION = int(SCALA_VERSION.replace( - "%s." % SCALA_MAJOR_VERSION, - "", - )) - - REPORTER_COMPATIBILITY_FOR_212 = SCALA_MAJOR_VERSION == "2.12" and SCALA_MINOR_VERSION >= 13 - - REPORTER_COMPATIBILITY = "213" if (SCALA_MAJOR_VERSION == "2.13" or REPORTER_COMPATIBILITY_FOR_212) else "" - - scala_library_for_plugin_bootstrapping( - name = "dependency_analyzer", - srcs = [ - "io/bazel/rulesscala/dependencyanalyzer/AstUsedJarFinder.scala", - "io/bazel/rulesscala/dependencyanalyzer/DependencyAnalyzer.scala", - "io/bazel/rulesscala/dependencyanalyzer/DependencyAnalyzerSettings.scala", - "io/bazel/rulesscala/dependencyanalyzer/HighLevelCrawlUsedJarFinder.scala", - "io/bazel/rulesscala/dependencyanalyzer/OptionsParser.scala", - "io/bazel/rulesscala/dependencyanalyzer/Reporter%s.scala" % REPORTER_COMPATIBILITY, - ], - resources = ["resources/scalac-plugin.xml"], - visibility = ["//visibility:public"], - deps = [ - ":scala_version", - "//scala/private/toolchain_deps:scala_compile_classpath", - "//src/java/io/bazel/rulesscala/scalac/reporter", - ], - ) diff --git a/third_party/utils/src/test/BUILD b/third_party/utils/src/test/BUILD index 39f558e99..ff59918d5 100644 --- a/third_party/utils/src/test/BUILD +++ b/third_party/utils/src/test/BUILD @@ -1,16 +1,19 @@ load("//scala:scala.bzl", "scala_library") -load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION") +load("//scala:scala_cross_version_select.bzl", "select_for_scala_version") licenses(["notice"]) # 3-clause BSD scala_library( name = "test_util", - srcs = ([ - "io/bazel/rulesscala/utils/JavaCompileUtil.scala", - "io/bazel/rulesscala/utils/TestUtil.scala", - ] if SCALA_MAJOR_VERSION.startswith("2") else [ - "io/bazel/rulesscala/utils/Scala3CompilerUtils.scala", - ]), + srcs = select_for_scala_version( + any_2 = [ + "io/bazel/rulesscala/utils/JavaCompileUtil.scala", + "io/bazel/rulesscala/utils/TestUtil.scala", + ], + any_3 = [ + "io/bazel/rulesscala/utils/Scala3CompilerUtils.scala", + ], + ), visibility = ["//visibility:public"], deps = [ "//scala/private/toolchain_deps:scala_compile_classpath",