aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java29
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/ImportDepsCheckActionBuilder.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java4
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,
}
/**