|
1 |
| -load( |
2 |
| - "@io_bazel_rules_scala//scala:providers.bzl", |
3 |
| - _DepsInfo = "DepsInfo", |
4 |
| -) |
| 1 | +load("//scala:providers.bzl", _DepsInfo = "DepsInfo") |
5 | 2 | load(
|
6 | 3 | "@io_bazel_rules_scala_config//:config.bzl",
|
7 | 4 | "ENABLE_COMPILER_DEPENDENCY_TRACKING",
|
@@ -108,17 +105,17 @@ def _scala_toolchain_impl(ctx):
|
108 | 105 |
|
109 | 106 | def _default_dep_providers():
|
110 | 107 | dep_providers = [
|
111 |
| - "@io_bazel_rules_scala//scala:scala_xml_provider", |
112 |
| - "@io_bazel_rules_scala//scala:parser_combinators_provider", |
113 |
| - "@io_bazel_rules_scala//scala:scala_compile_classpath_provider", |
114 |
| - "@io_bazel_rules_scala//scala:scala_library_classpath_provider", |
115 |
| - "@io_bazel_rules_scala//scala:scala_macro_classpath_provider", |
| 108 | + "scala_xml", |
| 109 | + "parser_combinators", |
| 110 | + "scala_compile_classpath", |
| 111 | + "scala_library_classpath", |
| 112 | + "scala_macro_classpath", |
116 | 113 | ]
|
117 |
| - if SCALA_MAJOR_VERSION.startswith("2"): |
118 |
| - dep_providers.append("@io_bazel_rules_scala//scala:semanticdb_provider") |
119 |
| - return dep_providers |
| 114 | + if SCALA_MAJOR_VERSION.startswith("2."): |
| 115 | + dep_providers.append("semanticdb") |
| 116 | + return [Label("//scala:%s_provider" % p) for p in dep_providers] |
120 | 117 |
|
121 |
| -scala_toolchain = rule( |
| 118 | +_scala_toolchain = rule( |
122 | 119 | _scala_toolchain_impl,
|
123 | 120 | attrs = {
|
124 | 121 | "scalacopts": attr.string_list(),
|
@@ -179,3 +176,31 @@ scala_toolchain = rule(
|
179 | 176 | },
|
180 | 177 | fragments = ["java"],
|
181 | 178 | )
|
| 179 | + |
| 180 | +def _expand_patterns(patterns): |
| 181 | + """Expands string patterns to match actual Label values.""" |
| 182 | + result = [] |
| 183 | + |
| 184 | + for p in patterns: |
| 185 | + exclude = p.startswith("-") |
| 186 | + p = p.lstrip("-") |
| 187 | + expanded = str(native.package_relative_label(p)) if p else "" |
| 188 | + |
| 189 | + # If the original pattern doesn't contain ":", match any target |
| 190 | + # beginning with the pattern prefix. |
| 191 | + if expanded and ":" not in p: |
| 192 | + expanded = expanded[:expanded.rindex(":")] |
| 193 | + |
| 194 | + result.append(("-" if exclude else "") + expanded) |
| 195 | + |
| 196 | + return result |
| 197 | + |
| 198 | +def scala_toolchain(**kwargs): |
| 199 | + """Creates a Scala toolchain target.""" |
| 200 | + strict = kwargs.pop("dependency_tracking_strict_deps_patterns", [""]) |
| 201 | + unused = kwargs.pop("dependency_tracking_unused_deps_patterns", [""]) |
| 202 | + _scala_toolchain( |
| 203 | + dependency_tracking_strict_deps_patterns = _expand_patterns(strict), |
| 204 | + dependency_tracking_unused_deps_patterns = _expand_patterns(unused), |
| 205 | + **kwargs |
| 206 | + ) |
0 commit comments