diff options
Diffstat (limited to 'src/main')
3 files changed, 36 insertions, 19 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java index c44cc3fd22..c4197b8367 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java @@ -33,6 +33,8 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.rules.java.ImportDepsCheckActionBuilder; import com.google.devtools.build.lib.rules.java.JavaCommon; +import com.google.devtools.build.lib.rules.java.JavaCompilationArgs; +import com.google.devtools.build.lib.rules.java.JavaCompilationArgs.ClasspathType; import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider; import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts; import com.google.devtools.build.lib.rules.java.JavaConfiguration; @@ -148,14 +150,7 @@ public class AarImport implements RuleConfiguredTargetFactory { /* compileDeps = */ targets, /* runtimeDeps = */ targets, /* bothDeps = */ targets); - // Need to compute the "deps" here, as mergedJar is put on the classpath later too. - NestedSet<Artifact> deps = - common - .collectJavaCompilationArgs( - /* recursive = */ true, - JavaCommon.isNeverLink(ruleContext), - /* srcLessDepsExport = */ false) - .getCompileTimeJars(); + common.setJavaCompilationArtifacts( new JavaCompilationArtifacts.Builder() .addRuntimeJar(mergedJar) @@ -173,10 +168,13 @@ public class AarImport implements RuleConfiguredTargetFactory { JavaCommon.isNeverLink(ruleContext), /* srcLessDepsExport = */ false)); - JavaConfiguration javaConfig = ruleContext.getFragment(JavaConfiguration.class); - Artifact depsCheckerResult = null; + JavaConfiguration javaConfig = ruleContext.getFragment(JavaConfiguration.class); if (javaConfig.getImportDepsCheckingLevel() != ImportDepsCheckingLevel.OFF) { + NestedSet<Artifact> deps = + getCompileTimeJarsFromCollection( + targets, + javaConfig.getImportDepsCheckingLevel() == ImportDepsCheckingLevel.STRICT_ERROR); NestedSet<Artifact> bootclasspath = getBootclasspath(ruleContext); depsCheckerResult = createAarArtifact(ruleContext, "aar_import_deps_checker_result.txt"); ImportDepsCheckActionBuilder.newBuilder() @@ -223,6 +221,17 @@ public class AarImport implements RuleConfiguredTargetFactory { return ruleBuilder.build(); } + private NestedSet<Artifact> getCompileTimeJarsFromCollection( + ImmutableList<TransitiveInfoCollection> deps, boolean isStrict) { + return JavaCompilationArgs.builder() + .addTransitiveCompilationArgs( + JavaCompilationArgsProvider.legacyFromTargets(deps), + /*recursive=*/ !isStrict, + ClasspathType.BOTH) + .build() + .getCompileTimeJars(); + } + private NestedSet<Artifact> getBootclasspath(RuleContext ruleContext) { if (AndroidCommon.getAndroidConfig(ruleContext).desugarJava8()) { return NestedSetBuilder.<Artifact>stableOrder() diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/ImportDepsCheckActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/ImportDepsCheckActionBuilder.java index e6d9f00ff1..405e81530f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/ImportDepsCheckActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/ImportDepsCheckActionBuilder.java @@ -80,10 +80,7 @@ public final class ImportDepsCheckActionBuilder { checkNotNull(bootclasspath); checkNotNull(declaredDeps); checkState( - importDepsCheckingLevel == ImportDepsCheckingLevel.ERROR - || importDepsCheckingLevel == ImportDepsCheckingLevel.WARNING, - "%s", - importDepsCheckingLevel); + importDepsCheckingLevel != ImportDepsCheckingLevel.OFF, "%s", importDepsCheckingLevel); CustomCommandLine args = CustomCommandLine.builder() @@ -91,10 +88,7 @@ public final class ImportDepsCheckActionBuilder { .addExecPaths(VectorArg.addBefore("--input").each(jarsToCheck)) .addExecPaths(VectorArg.addBefore("--classpath_entry").each(declaredDeps)) .addExecPaths(VectorArg.addBefore("--bootclasspath_entry").each(bootclasspath)) - .add( - importDepsCheckingLevel == ImportDepsCheckingLevel.ERROR - ? "--fail_on_errors" - : "--nofail_on_errors") + .addDynamicString(convertErrorFlag(importDepsCheckingLevel)) .build(); ruleContext.registerAction( new SpawnAction.Builder() @@ -115,4 +109,16 @@ public final class ImportDepsCheckActionBuilder { .addCommandLine(args) .build(ruleContext)); } + + private static String convertErrorFlag(ImportDepsCheckingLevel level) { + switch (level) { + case ERROR: + case STRICT_ERROR: + return "--fail_on_errors"; + case WARNING: + return "--nofail_on_errors"; + default: + throw new RuntimeException("Unhandled deps checking level: " + level); + } + } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java index 071bce4b7e..294e4054f5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java @@ -76,7 +76,9 @@ public final class JavaConfiguration extends Fragment { /** Emit warnings when the dependencies of java_import/aar_import are not complete. */ WARNING, /** Emit errors when the dependencies of java_import/aar_import are not complete. */ - ERROR + ERROR, + /** Emit errors when the DIRECT dependencies of java_import/aar_import are not complete. */ + STRICT_ERROR, } /** |