diff options
author | Stephen Twigg <twigg@google.com> | 2017-01-04 12:00:23 -0500 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2017-05-09 10:52:24 -0400 |
commit | 05ea0281ee4820a7fd70d166e140a8e0355d275b (patch) | |
tree | 8180bf915714454b4bfe27bb53e9f7bd3b9b0814 /src/main/java | |
parent | f801f7c50c12ac84f540a40d1ffa03aa97e446b8 (diff) |
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
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java | 10 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java | 68 |
2 files changed, 44 insertions, 34 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java index a92f22de7c..5b45b576fa 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java @@ -117,6 +117,11 @@ public abstract class JavaCompilationArgs { return this; } + public Builder addTransitiveRuntimeJars(NestedSet<Artifact> runtimeJars) { + this.runtimeJarsBuilder.addTransitive(runtimeJars); + return this; + } + public Builder addCompileTimeJar(Artifact compileTimeJar) { this.compileTimeJarsBuilder.add(compileTimeJar); return this; @@ -127,6 +132,11 @@ public abstract class JavaCompilationArgs { return this; } + public Builder addTransitiveCompileTimeJars(NestedSet<Artifact> compileTimeJars) { + this.compileTimeJarsBuilder.addTransitive(compileTimeJars); + return this; + } + public Builder addInstrumentationMetadata(Artifact instrumentationMetadata) { this.instrumentationMetadataBuilder.add(instrumentationMetadata); return this; diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java index 774907a61e..86267d4e95 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java @@ -34,6 +34,7 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.syntax.SkylarkList; +import com.google.devtools.build.lib.syntax.SkylarkNestedSet; import java.util.List; /** A module that contains Skylark utilities for Java support. */ @@ -55,41 +56,40 @@ public class JavaSkylarkCommon { } @SkylarkCallable( - name = "create_provider", - documented = false, - parameters = { - @Param( - name = "compile_time_jars", - positional = false, - named = true, - type = SkylarkList.class, - generic1 = Artifact.class, - defaultValue = "[]" - ), - @Param( - name = "runtime_jars", - positional = false, - named = true, - type = SkylarkList.class, - generic1 = Artifact.class, - defaultValue = "[]" - ) - } + name = "create_provider", + documented = false, + parameters = { + @Param( + name = "compile_time_jars", + positional = false, + named = true, + type = SkylarkNestedSet.class, + generic1 = Artifact.class, + defaultValue = "[]" + ), + @Param( + name = "runtime_jars", + positional = false, + named = true, + type = SkylarkNestedSet.class, + generic1 = Artifact.class, + defaultValue = "[]" + ) + } ) - public JavaProvider create( - SkylarkList<Artifact> compileTimeJars, - SkylarkList<Artifact> runtimeJars) { - JavaCompilationArgs javaCompilationArgs = JavaCompilationArgs.builder() - .addCompileTimeJars(compileTimeJars) - .addRuntimeJars(runtimeJars) - .build(); - JavaCompilationArgs recursiveJavaCompilationArgs = JavaCompilationArgs.builder() - .addCompileTimeJars(compileTimeJars) - .addRuntimeJars(runtimeJars).build(); - JavaProvider javaProvider = JavaProvider.Builder.create().addProvider( - JavaCompilationArgsProvider.class, - JavaCompilationArgsProvider.create(javaCompilationArgs, recursiveJavaCompilationArgs)) - .build(); + public JavaProvider create(SkylarkNestedSet compileTimeJars, SkylarkNestedSet runtimeJars) { + JavaCompilationArgs javaCompilationArgs = + JavaCompilationArgs.builder() + .addTransitiveRuntimeJars(runtimeJars.getSet(Artifact.class)) + .addTransitiveCompileTimeJars(compileTimeJars.getSet(Artifact.class)) + .build(); + + JavaProvider javaProvider = + JavaProvider.Builder.create() + .addProvider( + JavaCompilationArgsProvider.class, + JavaCompilationArgsProvider.create(javaCompilationArgs, javaCompilationArgs)) + .build(); return javaProvider; } |