aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2017-06-30 17:31:36 +0200
committerGravatar Marcel Hlopko <hlopko@google.com>2017-07-03 09:06:21 +0200
commitc2517916ff5140ca7c9b1515d4f0f6797a498e87 (patch)
tree89cf7579d24dbd1fe0acd5aefc870f3f6f27d6f1 /src/main/java/com/google/devtools/build/lib/rules
parenta3abdfea43d69780df526c0c27b0f7bd5b95e1da (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.java61
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();
}