Skip to content

Commit 05ea028

Browse files
Stephen Twiggkchodorow
Stephen Twigg
authored andcommitted
java_common.create_provider now takes depsets )
rjars = java_common.create_provider( compile_time_jars = depset(), runtime_jars = merged_runtime.transitive_runtime_deps, ) This avoids linearizing the runtime_deps (with the corresponding memory issues). Must be a JavaProvider for proper interaction with native rules but cannot just be a simple merge since runtime_deps should not contribute to compile of the dependent rules. Note, this will effect a change of the already-released API; however, function marked as undocumented in an experimental object.... Change-Id: I54542a5d57c75e762b2276e0a1988816901a0def PiperOrigin-RevId: 155384266
1 parent f801f7c commit 05ea028

File tree

3 files changed

+50
-40
lines changed

3 files changed

+50
-40
lines changed

src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ public Builder addRuntimeJars(Iterable<Artifact> runtimeJars) {
117117
return this;
118118
}
119119

120+
public Builder addTransitiveRuntimeJars(NestedSet<Artifact> runtimeJars) {
121+
this.runtimeJarsBuilder.addTransitive(runtimeJars);
122+
return this;
123+
}
124+
120125
public Builder addCompileTimeJar(Artifact compileTimeJar) {
121126
this.compileTimeJarsBuilder.add(compileTimeJar);
122127
return this;
@@ -127,6 +132,11 @@ public Builder addCompileTimeJars(Iterable<Artifact> compileTimeJars) {
127132
return this;
128133
}
129134

135+
public Builder addTransitiveCompileTimeJars(NestedSet<Artifact> compileTimeJars) {
136+
this.compileTimeJarsBuilder.addTransitive(compileTimeJars);
137+
return this;
138+
}
139+
130140
public Builder addInstrumentationMetadata(Artifact instrumentationMetadata) {
131141
this.instrumentationMetadataBuilder.add(instrumentationMetadata);
132142
return this;

src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
3535
import com.google.devtools.build.lib.syntax.EvalException;
3636
import com.google.devtools.build.lib.syntax.SkylarkList;
37+
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
3738
import java.util.List;
3839

3940
/** A module that contains Skylark utilities for Java support. */
@@ -55,41 +56,40 @@ public ClassObjectConstructor getJavaProvider() {
5556
}
5657

5758
@SkylarkCallable(
58-
name = "create_provider",
59-
documented = false,
60-
parameters = {
61-
@Param(
62-
name = "compile_time_jars",
63-
positional = false,
64-
named = true,
65-
type = SkylarkList.class,
66-
generic1 = Artifact.class,
67-
defaultValue = "[]"
68-
),
69-
@Param(
70-
name = "runtime_jars",
71-
positional = false,
72-
named = true,
73-
type = SkylarkList.class,
74-
generic1 = Artifact.class,
75-
defaultValue = "[]"
76-
)
77-
}
59+
name = "create_provider",
60+
documented = false,
61+
parameters = {
62+
@Param(
63+
name = "compile_time_jars",
64+
positional = false,
65+
named = true,
66+
type = SkylarkNestedSet.class,
67+
generic1 = Artifact.class,
68+
defaultValue = "[]"
69+
),
70+
@Param(
71+
name = "runtime_jars",
72+
positional = false,
73+
named = true,
74+
type = SkylarkNestedSet.class,
75+
generic1 = Artifact.class,
76+
defaultValue = "[]"
77+
)
78+
}
7879
)
79-
public JavaProvider create(
80-
SkylarkList<Artifact> compileTimeJars,
81-
SkylarkList<Artifact> runtimeJars) {
82-
JavaCompilationArgs javaCompilationArgs = JavaCompilationArgs.builder()
83-
.addCompileTimeJars(compileTimeJars)
84-
.addRuntimeJars(runtimeJars)
85-
.build();
86-
JavaCompilationArgs recursiveJavaCompilationArgs = JavaCompilationArgs.builder()
87-
.addCompileTimeJars(compileTimeJars)
88-
.addRuntimeJars(runtimeJars).build();
89-
JavaProvider javaProvider = JavaProvider.Builder.create().addProvider(
90-
JavaCompilationArgsProvider.class,
91-
JavaCompilationArgsProvider.create(javaCompilationArgs, recursiveJavaCompilationArgs))
92-
.build();
80+
public JavaProvider create(SkylarkNestedSet compileTimeJars, SkylarkNestedSet runtimeJars) {
81+
JavaCompilationArgs javaCompilationArgs =
82+
JavaCompilationArgs.builder()
83+
.addTransitiveRuntimeJars(runtimeJars.getSet(Artifact.class))
84+
.addTransitiveCompileTimeJars(compileTimeJars.getSet(Artifact.class))
85+
.build();
86+
87+
JavaProvider javaProvider =
88+
JavaProvider.Builder.create()
89+
.addProvider(
90+
JavaCompilationArgsProvider.class,
91+
JavaCompilationArgsProvider.create(javaCompilationArgs, javaCompilationArgs))
92+
.build();
9393
return javaProvider;
9494
}
9595

src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,8 @@ public void constructJavaProvider() throws Exception {
158158
"foo/extension.bzl",
159159
"def _impl(ctx):",
160160
" my_provider = java_common.create_provider(",
161-
" compile_time_jars = ctx.files.compile_time_jars,",
162-
" runtime_jars = ctx.files.runtime_jars)",
161+
" compile_time_jars = depset(ctx.files.compile_time_jars),",
162+
" runtime_jars = depset(ctx.files.runtime_jars))",
163163
" return [my_provider]",
164164
"my_rule = rule(_impl, ",
165165
" attrs = { ",
@@ -196,8 +196,8 @@ public void constructJavaProviderWithAnotherJavaProvider() throws Exception {
196196
" transitive_provider = java_common.merge(",
197197
" [dep[java_common.provider] for dep in ctx.attr.deps])",
198198
" my_provider = java_common.create_provider(",
199-
" compile_time_jars = ctx.files.compile_time_jars,",
200-
" runtime_jars = ctx.files.runtime_jars)",
199+
" compile_time_jars = depset(ctx.files.compile_time_jars),",
200+
" runtime_jars = depset(ctx.files.runtime_jars))",
201201
" return [java_common.merge([my_provider, transitive_provider])]",
202202
"my_rule = rule(_impl, ",
203203
" attrs = { ",
@@ -236,8 +236,8 @@ public void constructJavaProviderJavaLibrary() throws Exception {
236236
"foo/extension.bzl",
237237
"def _impl(ctx):",
238238
" my_provider = java_common.create_provider(",
239-
" compile_time_jars = ctx.files.compile_time_jars,",
240-
" runtime_jars = ctx.files.runtime_jars)",
239+
" compile_time_jars = depset(ctx.files.compile_time_jars),",
240+
" runtime_jars = depset(ctx.files.runtime_jars))",
241241
" return [my_provider]",
242242
"my_rule = rule(_impl, ",
243243
" attrs = { ",

0 commit comments

Comments
 (0)