Skip to content
This repository was archived by the owner on Jun 4, 2024. It is now read-only.

Commit b2db774

Browse files
authored
Fix scala_deps_direct and scala_deps_used (#258)
1 parent 26163cc commit b2db774

File tree

7 files changed

+221
-121
lines changed

7 files changed

+221
-121
lines changed

Diff for: docs/configure_zinc_scala.md

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<a name="#configure_zinc_scala"></a>
2+
3+
## configure_zinc_scala
4+
5+
<pre>
6+
configure_zinc_scala(<a href="#configure_zinc_scala-name">name</a>, <a href="#configure_zinc_scala-compiler_bridge">compiler_bridge</a>, <a href="#configure_zinc_scala-compiler_classpath">compiler_classpath</a>, <a href="#configure_zinc_scala-deps_direct">deps_direct</a>, <a href="#configure_zinc_scala-deps_used">deps_used</a>, <a href="#configure_zinc_scala-global_plugins">global_plugins</a>, <a href="#configure_zinc_scala-global_scalacopts">global_scalacopts</a>, <a href="#configure_zinc_scala-runtime_classpath">runtime_classpath</a>, <a href="#configure_zinc_scala-version">version</a>)
7+
</pre>
8+
9+
10+
11+
### Attributes
12+
13+
<table class="params-table">
14+
<colgroup>
15+
<col class="col-param" />
16+
<col class="col-description" />
17+
</colgroup>
18+
<tbody>
19+
<tr id="configure_zinc_scala-name">
20+
<td><code>name</code></td>
21+
<td>
22+
<a href="https://bazel.build/docs/build-ref.html#name">Name</a>; required
23+
<p>
24+
A unique name for this target.
25+
</p>
26+
</td>
27+
</tr>
28+
<tr id="configure_zinc_scala-compiler_bridge">
29+
<td><code>compiler_bridge</code></td>
30+
<td>
31+
<a href="https://bazel.build/docs/build-ref.html#labels">Label</a>; required
32+
</td>
33+
</tr>
34+
<tr id="configure_zinc_scala-compiler_classpath">
35+
<td><code>compiler_classpath</code></td>
36+
<td>
37+
<a href="https://bazel.build/docs/build-ref.html#labels">List of labels</a>; required
38+
</td>
39+
</tr>
40+
<tr id="configure_zinc_scala-deps_direct">
41+
<td><code>deps_direct</code></td>
42+
<td>
43+
String; optional
44+
<p>
45+
Options are <code>error</code> and <code>off</code>.
46+
</p>
47+
</td>
48+
</tr>
49+
<tr id="configure_zinc_scala-deps_used">
50+
<td><code>deps_used</code></td>
51+
<td>
52+
String; optional
53+
<p>
54+
Options are <code>error</code> and <code>off</code>.
55+
</p>
56+
</td>
57+
</tr>
58+
<tr id="configure_zinc_scala-global_plugins">
59+
<td><code>global_plugins</code></td>
60+
<td>
61+
<a href="https://bazel.build/docs/build-ref.html#labels">List of labels</a>; optional
62+
<p>
63+
Scalac plugins that will always be enabled.
64+
</p>
65+
</td>
66+
</tr>
67+
<tr id="configure_zinc_scala-global_scalacopts">
68+
<td><code>global_scalacopts</code></td>
69+
<td>
70+
List of strings; optional
71+
<p>
72+
Scalac options that will always be enabled.
73+
</p>
74+
</td>
75+
</tr>
76+
<tr id="configure_zinc_scala-runtime_classpath">
77+
<td><code>runtime_classpath</code></td>
78+
<td>
79+
<a href="https://bazel.build/docs/build-ref.html#labels">List of labels</a>; required
80+
</td>
81+
</tr>
82+
<tr id="configure_zinc_scala-version">
83+
<td><code>version</code></td>
84+
<td>
85+
String; required
86+
</td>
87+
</tr>
88+
</tbody>
89+
</table>

Diff for: docs/scala.md

+7-3
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,21 @@ workspace. (It is not safe for use by multiple Bazel instances.) Stateful compil
3232
This feature shares concepts with
3333
[Java strict and unused deps](https://blog.bazel.build/2017/06/28/sjd-unused_deps.html). The default toolchain uses two defines (`--define=scala_deps_x=y`):
3434

35-
* `scala_deps_direct` - Require that direct usages of libraries come only from immediately declared deps
35+
* `scala_deps_direct` - Require that direct usages of libraries come only from immediately declared deps.
3636
* `scala_deps_used` - Require that any immediate deps are deps are directly used.
3737

3838
Each define may have a value of:
3939

40-
* `error` - Check before creating the jar.
41-
* `check` - Check when building with --output_group=deps_check. (default)
40+
* `error` - Check before creating the jar. (default)
4241
* `off` - Do not check.
4342

4443
Failed checks emit suggested [buildozer](https://github.com/bazelbuild/buildtools/tree/master/buildozer) commands.
4544

45+
You may also toggle deps check via [configure_zinc_scala](configure_zinc_scala.md):
46+
47+
* `deps_direct` - Work the same as `scala_deps_direct`.
48+
* `deps_used` - Work the same as `scala_deps_used`.
49+
4650
## Tests
4751

4852
`scala_test` supports

Diff for: docs/stardoc/scala.md

+28-85
Original file line numberDiff line numberDiff line change
@@ -67,91 +67,6 @@ configure_bootstrap_scala(<a href="#configure_bootstrap_scala-name">name</a>, <a
6767
</table>
6868

6969

70-
<a name="#configure_zinc_scala"></a>
71-
72-
## configure_zinc_scala
73-
74-
<pre>
75-
configure_zinc_scala(<a href="#configure_zinc_scala-name">name</a>, <a href="#configure_zinc_scala-compiler_bridge">compiler_bridge</a>, <a href="#configure_zinc_scala-compiler_classpath">compiler_classpath</a>, <a href="#configure_zinc_scala-deps_direct">deps_direct</a>, <a href="#configure_zinc_scala-deps_used">deps_used</a>, <a href="#configure_zinc_scala-global_plugins">global_plugins</a>, <a href="#configure_zinc_scala-global_scalacopts">global_scalacopts</a>, <a href="#configure_zinc_scala-runtime_classpath">runtime_classpath</a>, <a href="#configure_zinc_scala-version">version</a>)
76-
</pre>
77-
78-
79-
80-
### Attributes
81-
82-
<table class="params-table">
83-
<colgroup>
84-
<col class="col-param" />
85-
<col class="col-description" />
86-
</colgroup>
87-
<tbody>
88-
<tr id="configure_zinc_scala-name">
89-
<td><code>name</code></td>
90-
<td>
91-
<a href="https://bazel.build/docs/build-ref.html#name">Name</a>; required
92-
<p>
93-
A unique name for this target.
94-
</p>
95-
</td>
96-
</tr>
97-
<tr id="configure_zinc_scala-compiler_bridge">
98-
<td><code>compiler_bridge</code></td>
99-
<td>
100-
<a href="https://bazel.build/docs/build-ref.html#labels">Label</a>; required
101-
</td>
102-
</tr>
103-
<tr id="configure_zinc_scala-compiler_classpath">
104-
<td><code>compiler_classpath</code></td>
105-
<td>
106-
<a href="https://bazel.build/docs/build-ref.html#labels">List of labels</a>; required
107-
</td>
108-
</tr>
109-
<tr id="configure_zinc_scala-deps_direct">
110-
<td><code>deps_direct</code></td>
111-
<td>
112-
String; optional
113-
</td>
114-
</tr>
115-
<tr id="configure_zinc_scala-deps_used">
116-
<td><code>deps_used</code></td>
117-
<td>
118-
String; optional
119-
</td>
120-
</tr>
121-
<tr id="configure_zinc_scala-global_plugins">
122-
<td><code>global_plugins</code></td>
123-
<td>
124-
<a href="https://bazel.build/docs/build-ref.html#labels">List of labels</a>; optional
125-
<p>
126-
Scalac plugins that will always be enabled.
127-
</p>
128-
</td>
129-
</tr>
130-
<tr id="configure_zinc_scala-global_scalacopts">
131-
<td><code>global_scalacopts</code></td>
132-
<td>
133-
List of strings; optional
134-
<p>
135-
Scalac options that will always be enabled.
136-
</p>
137-
</td>
138-
</tr>
139-
<tr id="configure_zinc_scala-runtime_classpath">
140-
<td><code>runtime_classpath</code></td>
141-
<td>
142-
<a href="https://bazel.build/docs/build-ref.html#labels">List of labels</a>; required
143-
</td>
144-
</tr>
145-
<tr id="configure_zinc_scala-version">
146-
<td><code>version</code></td>
147-
<td>
148-
String; required
149-
</td>
150-
</tr>
151-
</tbody>
152-
</table>
153-
154-
15570
<a name="#scala_binary"></a>
15671

15772
## scala_binary
@@ -895,6 +810,34 @@ Generates Scaladocs.
895810
</table>
896811

897812

813+
<a name="#configure_zinc_scala"></a>
814+
815+
## configure_zinc_scala
816+
817+
<pre>
818+
configure_zinc_scala(<a href="#configure_zinc_scala-kwargs">kwargs</a>)
819+
</pre>
820+
821+
822+
823+
### Parameters
824+
825+
<table class="params-table">
826+
<colgroup>
827+
<col class="col-param" />
828+
<col class="col-description" />
829+
</colgroup>
830+
<tbody>
831+
<tr id="configure_zinc_scala-kwargs">
832+
<td><code>kwargs</code></td>
833+
<td>
834+
optional.
835+
</td>
836+
</tr>
837+
</tbody>
838+
</table>
839+
840+
898841
<a name="#make_scala_binary"></a>
899842

900843
## make_scala_binary

Diff for: rules/scala.bzl

+14-1
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ configure_bootstrap_scala = rule(
490490
implementation = _configure_bootstrap_scala_implementation,
491491
)
492492

493-
configure_zinc_scala = rule(
493+
_configure_zinc_scala = rule(
494494
attrs = {
495495
"version": attr.string(mandatory = True),
496496
"runtime_classpath": attr.label_list(
@@ -535,3 +535,16 @@ configure_zinc_scala = rule(
535535
},
536536
implementation = _configure_zinc_scala_implementation,
537537
)
538+
539+
def configure_zinc_scala(**kwargs):
540+
_configure_zinc_scala(
541+
deps_direct = select({
542+
"@rules_scala_annex//src/main/scala:deps_direct_off": "off",
543+
"//conditions:default": "error",
544+
}),
545+
deps_used = select({
546+
"@rules_scala_annex//src/main/scala:deps_used_off": "off",
547+
"//conditions:default": "error",
548+
}),
549+
**kwargs
550+
)

Diff for: src/main/scala/BUILD

+14
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,17 @@ configure_zinc_scala(
5656
version = "2.12.8",
5757
visibility = ["//visibility:public"],
5858
)
59+
60+
config_setting(
61+
name = "deps_used_off",
62+
define_values = {
63+
"scala_deps_used": "off",
64+
},
65+
)
66+
67+
config_setting(
68+
name = "deps_direct_off",
69+
define_values = {
70+
"scala_deps_direct": "off",
71+
},
72+
)

Diff for: tests/dependencies/indirect/BUILD

+55-27
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,77 @@
11
load("@rules_scala_annex//rules:scala.bzl", "scala_library")
22
load("@rules_scala_annex//rules:providers.bzl", "reconfigure_deps_configuration")
33

4+
# used_deps off
45
reconfigure_deps_configuration(
5-
name = "scala",
6-
direct = select({
7-
":deps_direct_off": "off",
8-
"//conditions:default": "error",
9-
}),
6+
name = "scala_used_deps_off",
107
provider = "//scala:2_12",
11-
used = select({
12-
":deps_used_off": "off",
13-
"//conditions:default": "error",
14-
}),
8+
used = "off",
159
)
1610

17-
config_setting(
18-
name = "deps_used_off",
19-
define_values = {
20-
"scala_deps_used": "off",
21-
},
11+
scala_library(
12+
name = "used_deps_off_a",
13+
srcs = ["A.scala"],
14+
scala = ":scala_used_deps_off",
15+
)
16+
17+
scala_library(
18+
name = "used_deps_off_b",
19+
srcs = ["B.scala"],
20+
scala = ":scala_used_deps_off",
21+
deps = [":used_deps_off_a"],
22+
)
23+
24+
scala_library(
25+
name = "used_deps_off_c",
26+
srcs = ["C.scala"],
27+
scala = ":scala_used_deps_off",
28+
deps = [":used_deps_off_b"],
29+
)
30+
31+
# direct_deps off
32+
reconfigure_deps_configuration(
33+
name = "scala_direct_deps_off",
34+
direct = "off",
35+
provider = "//scala:2_12",
36+
)
37+
38+
scala_library(
39+
name = "direct_deps_off_a",
40+
srcs = ["A.scala"],
41+
scala = ":scala_direct_deps_off",
2242
)
2343

24-
config_setting(
25-
name = "deps_direct_off",
26-
define_values = {
27-
"scala_deps_direct": "off",
28-
},
44+
scala_library(
45+
name = "direct_deps_off_b",
46+
srcs = ["B.scala"],
47+
scala = ":scala_direct_deps_off",
48+
deps = [":direct_deps_off_a"],
49+
)
50+
51+
scala_library(
52+
name = "direct_deps_off_c",
53+
srcs = ["C.scala"],
54+
scala = ":scala_direct_deps_off",
55+
deps = [":direct_deps_off_b"],
2956
)
3057

58+
# toggle used_deps and direct_deps via --define
3159
scala_library(
32-
name = "a",
60+
name = "define_a",
3361
srcs = ["A.scala"],
34-
scala = ":scala",
62+
scala = "@rules_scala_annex//src/main/scala:zinc_2_12_8",
3563
)
3664

3765
scala_library(
38-
name = "b",
66+
name = "define_b",
3967
srcs = ["B.scala"],
40-
scala = ":scala",
41-
deps = [":a"],
68+
scala = "@rules_scala_annex//src/main/scala:zinc_2_12_8",
69+
deps = [":define_a"],
4270
)
4371

4472
scala_library(
45-
name = "c",
73+
name = "define_c",
4674
srcs = ["C.scala"],
47-
scala = ":scala",
48-
deps = [":b"],
75+
scala = "@rules_scala_annex//src/main/scala:zinc_2_12_8",
76+
deps = [":define_b"],
4977
)

0 commit comments

Comments
 (0)