aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android
diff options
context:
space:
mode:
authorGravatar cushon <cushon@google.com>2018-04-30 15:44:55 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-30 15:45:52 -0700
commitb9f8627289294407ef93efda894ce138f1881a38 (patch)
tree611b70c33206c92a5ed6aae2e19c0be0120e23b7 /src/main/java/com/google/devtools/build/lib/rules/android
parent6003121237cb92ca1eb77921361e7db70e34daa9 (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/lib/rules/android')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ZipFilterBuilder.java26
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) {