diff options
author | 2018-04-30 15:44:55 -0700 | |
---|---|---|
committer | 2018-04-30 15:45:52 -0700 | |
commit | b9f8627289294407ef93efda894ce138f1881a38 (patch) | |
tree | 611b70c33206c92a5ed6aae2e19c0be0120e23b7 /src/main/java/com/google/devtools/build | |
parent | 6003121237cb92ca1eb77921361e7db70e34daa9 (diff) |
Add support for reporting an error if android_test.binary_under_test contains incompatible versions of deps
RELNOTES: Add support for reporting an error if android_test.binary_under_test contains incompatible versions of deps
PiperOrigin-RevId: 194857840
Diffstat (limited to 'src/main/java/com/google/devtools/build')
3 files changed, 26 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java index 69f8452b6f..672130407e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java @@ -59,6 +59,7 @@ import com.google.devtools.build.lib.packages.TriState; import com.google.devtools.build.lib.rules.android.AndroidBinaryMobileInstall.MobileInstallResourceApks; import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion; import com.google.devtools.build.lib.rules.android.AndroidRuleClasses.MultidexMode; +import com.google.devtools.build.lib.rules.android.ZipFilterBuilder.CheckHashMismatchMode; import com.google.devtools.build.lib.rules.cpp.CppSemantics; import com.google.devtools.build.lib.rules.java.DeployArchiveBuilder; import com.google.devtools.build.lib.rules.java.JavaCommon; @@ -1761,7 +1762,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { Artifact filteredDeployJar = ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_TEST_FILTERED_JAR); AndroidCommon.createZipFilterAction( - ruleContext, deployJar, filterJar, filteredDeployJar, /* checkHashMismatch */ false); + ruleContext, deployJar, filterJar, filteredDeployJar, CheckHashMismatchMode.NONE); return filteredDeployJar; } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java index a89910839d..49dd128c72 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java @@ -43,6 +43,7 @@ import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.packages.TriState; +import com.google.devtools.build.lib.rules.android.ZipFilterBuilder.CheckHashMismatchMode; import com.google.devtools.build.lib.rules.cpp.CcLinkParams; import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo; import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore; @@ -918,13 +919,13 @@ public class AndroidCommon { Artifact in, Artifact filter, Artifact out, - boolean checkHashMismatch) { + CheckHashMismatchMode checkHashMismatch) { new ZipFilterBuilder(ruleContext) .setInputZip(in) .addFilterZips(ImmutableList.of(filter)) .setOutputZip(out) .addFileTypeToFilter(".class") - .setCheckHashMismatch(checkHashMismatch) + .setCheckHashMismatchMode(checkHashMismatch) .addExplicitFilter("R\\.class") .addExplicitFilter("R\\$.*\\.class") // These files are generated by databinding in both the target and the instrumentation app diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ZipFilterBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/ZipFilterBuilder.java index 37d57186a2..0368dbf6f9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ZipFilterBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ZipFilterBuilder.java @@ -13,6 +13,7 @@ // limitations under the License. package com.google.devtools.build.lib.rules.android; + import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleContext; @@ -33,6 +34,13 @@ public class ZipFilterBuilder { DONT_CHANGE; } + /** Modes of performing content hash checking during zip filtering. */ + public enum CheckHashMismatchMode { + NONE, + WARN, + ERROR; + } + private final RuleContext ruleContext; private Artifact inputZip; private Artifact outputZip; @@ -40,7 +48,7 @@ public class ZipFilterBuilder { private final ImmutableSet.Builder<String> filterFileTypesBuilder; private final ImmutableSet.Builder<String> explicitFilterBuilder; private Compression outputMode = Compression.DONT_CHANGE; - private boolean checkHashMismatch = true; + private CheckHashMismatchMode checkHashMismatch = CheckHashMismatchMode.WARN; /** Creates a builder using the configuration of the rule as the action configuration. */ public ZipFilterBuilder(RuleContext ruleContext) { @@ -87,8 +95,8 @@ public class ZipFilterBuilder { } /** Enable checking of hash mismatches for files with the same name. */ - public ZipFilterBuilder setCheckHashMismatch(boolean enabled) { - this.checkHashMismatch = enabled; + public ZipFilterBuilder setCheckHashMismatchMode(CheckHashMismatchMode mode) { + this.checkHashMismatch = mode; return this; } @@ -110,8 +118,16 @@ public class ZipFilterBuilder { if (!explicitFilters.isEmpty()) { args.addAll("--explicitFilters", VectorArg.join(",").each(explicitFilters)); } - if (!checkHashMismatch) { - args.add("--checkHashMismatch").add("IGNORE"); + switch (checkHashMismatch) { + case WARN: + args.add("--checkHashMismatch").add("WARN"); + break; + case ERROR: + args.add("--checkHashMismatch").add("ERROR"); + break; + case NONE: + args.add("--checkHashMismatch").add("IGNORE"); + break; } args.add("--outputMode"); switch (outputMode) { |