diff options
author | elenairina <elenairina@google.com> | 2017-06-30 17:31:36 +0200 |
---|---|---|
committer | Marcel Hlopko <hlopko@google.com> | 2017-07-03 09:06:21 +0200 |
commit | c2517916ff5140ca7c9b1515d4f0f6797a498e87 (patch) | |
tree | 89cf7579d24dbd1fe0acd5aefc870f3f6f27d6f1 /src/main/java/com/google/devtools/build/lib/rules | |
parent | a3abdfea43d69780df526c0c27b0f7bd5b95e1da (diff) |
Add recursive jars to java_common.create_provider
Progress on #2614.
PiperOrigin-RevId: 160649080
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java | 61 |
1 files changed, 55 insertions, 6 deletions
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 a0a07419e4..50d6962bf3 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 @@ -59,6 +59,11 @@ public class JavaSkylarkCommon { @SkylarkCallable( name = "create_provider", documented = false, + doc = "Create a java_common.provider from pre-built jars. Note that compile_time_jars and " + + "runtime_jars are not automatically merged into the recursive jars - if this is the " + + "desired behaviour the user should merge the jars before creating the provider. " + + "The recursive (compile/runtime) jars are the jars usually collected transitively from " + + "dependencies.", parameters = { @Param( name = "compile_time_jars", @@ -83,6 +88,28 @@ public class JavaSkylarkCommon { defaultValue = "[]" ), @Param( + name = "transitive_compile_time_jars", + positional = false, + named = true, + allowedTypes = { + @ParamType(type = SkylarkList.class), + @ParamType(type = SkylarkNestedSet.class), + }, + generic1 = Artifact.class, + defaultValue = "[]" + ), + @Param( + name = "transitive_runtime_jars", + positional = false, + named = true, + allowedTypes = { + @ParamType(type = SkylarkList.class), + @ParamType(type = SkylarkNestedSet.class), + }, + generic1 = Artifact.class, + defaultValue = "[]" + ), + @Param( name = "source_jars", positional = false, named = true, @@ -95,19 +122,41 @@ public class JavaSkylarkCommon { ) } ) - public JavaProvider create(Object compileTimeJars, Object runtimeJars, Object sourceJars) + public JavaProvider create( + Object compileTimeJars, + Object runtimeJars, + Object transitiveCompileTimeJars, + Object transitiveRuntimeJars, + Object sourceJars) throws EvalException { + NestedSet<Artifact> compileTimeJarsNestedSet = asArtifactNestedSet(compileTimeJars); + NestedSet<Artifact> runtimeJarsNestedSet = asArtifactNestedSet(runtimeJars); + NestedSet<Artifact> transitiveCompileTimeJarsNestedSet = + asArtifactNestedSet(transitiveCompileTimeJars); + NestedSet<Artifact> transitiveRuntimeJarsNestedSet = asArtifactNestedSet(transitiveRuntimeJars); + JavaCompilationArgs javaCompilationArgs = JavaCompilationArgs.builder() - .addTransitiveRuntimeJars(asArtifactNestedSet(runtimeJars)) - .addTransitiveCompileTimeJars(asArtifactNestedSet(compileTimeJars)) - .build(); + .addTransitiveCompileTimeJars(compileTimeJarsNestedSet) + .addTransitiveRuntimeJars(runtimeJarsNestedSet) + .build(); + JavaCompilationArgs.Builder recursiveJavaCompilationArgs = JavaCompilationArgs.builder(); + if (transitiveCompileTimeJarsNestedSet.isEmpty() && transitiveRuntimeJarsNestedSet.isEmpty()) { + recursiveJavaCompilationArgs + .addTransitiveCompileTimeJars(compileTimeJarsNestedSet) + .addTransitiveRuntimeJars(runtimeJarsNestedSet); + } else { + recursiveJavaCompilationArgs + .addTransitiveCompileTimeJars(transitiveCompileTimeJarsNestedSet) + .addTransitiveRuntimeJars(transitiveRuntimeJarsNestedSet); + } JavaProvider javaProvider = JavaProvider.Builder.create() .addProvider( JavaCompilationArgsProvider.class, - JavaCompilationArgsProvider.create(javaCompilationArgs, javaCompilationArgs)) + JavaCompilationArgsProvider.create( + javaCompilationArgs, recursiveJavaCompilationArgs.build())) .addProvider( JavaSourceJarsProvider.class, JavaSourceJarsProvider.create( @@ -124,7 +173,7 @@ public class JavaSkylarkCommon { private static NestedSet<Artifact> asArtifactNestedSet(Object o) throws EvalException { return o instanceof SkylarkNestedSet ? ((SkylarkNestedSet) o).getSet(Artifact.class) - : NestedSetBuilder.<Artifact>compileOrder() + : NestedSetBuilder.<Artifact>naiveLinkOrder() .addAll(((SkylarkList<?>) o).getContents(Artifact.class, null)) .build(); } |