Patch manifest merger jar to work around targetApi parsing inconsistency

Change-Id: I10c5c61af8bc66b07d802ba9a426518c99327d38
diff --git a/third_party/BUILD b/third_party/BUILD
index 611d41f..73bc09d 100644
--- a/third_party/BUILD
+++ b/third_party/BUILD
@@ -78,7 +78,7 @@
         "android_common/com.android.tools.build_builder_2.0.0.jar",
         "android_common/com.android.tools.build_builder-model_2.0.0.jar",
         "android_common/com.android.tools.build_builder-test-api_2.0.0.jar",
-        "android_common/com.android.tools.build_manifest-merger_25.0.0.jar",
+        "android_common/com.android.tools.build_manifest-merger_25.0.0-patched.jar",
         "android_common/com.android.tools.external.lombok_lombok-ast_0.2.3.jar",
         # layoutlib has been upgraded to 26.1.2 *just* for font resource support.
         # We are unable to upgrade the other libraries yet due to internal
@@ -292,13 +292,19 @@
 
 java_import(
     name = "auto_value_value",
-    jars = ["auto/auto-value-1.6.3rc1.jar", "auto/auto-value-annotations-1.6.3rc1.jar"],
+    jars = [
+        "auto/auto-value-1.6.3rc1.jar",
+        "auto/auto-value-annotations-1.6.3rc1.jar",
+    ],
 )
 
 # For bootstrapping JavaBuilder
 filegroup(
     name = "auto_value-jars",
-    srcs = ["auto/auto-value-1.6.3rc1.jar", "auto/auto-value-annotations-1.6.3rc1.jar"],
+    srcs = [
+        "auto/auto-value-1.6.3rc1.jar",
+        "auto/auto-value-annotations-1.6.3rc1.jar",
+    ],
 )
 
 java_import(
diff --git a/third_party/android_common/README.md b/third_party/android_common/README.md
new file mode 100644
index 0000000..9f882b5
--- /dev/null
+++ b/third_party/android_common/README.md
@@ -0,0 +1,29 @@
+# Notes on patches
+
+To make Bazel's use of the official Android manifest merger tool consistent with
+the [`tools:targetApi`
+attribute.](https://developer.android.com/studio/write/tool-attributes#toolstargetapi),
+`com.android.tools.build_manifest-merger_25.0.0-patched.jar` contains a patched
+`OtherOperationType.class`. The patched class is generated by compiling
+`build-system/manifest-merger/src/main/java/com/android/manifmerger/OtherOperationType.java`
+from commit 8fff824b40 in
+[studio-master-dev](https://android.googlesource.com/platform/tools/base/+/master/build-system/manifest-merger/src/main/java/com/android/manifmerger)
+with the following patch:
+
+```diff
+diff --git a/build-system/manifest-merger/src/main/java/com/android/manifmerger/OtherOperationType.java b/build-system/manifest-merger/src/main/java/com/android/manifmerger/OtherOperationType.java
+index d0ca70b544..095a781f56 100644
+--- a/build-system/manifest-merger/src/main/java/com/android/manifmerger/OtherOperationType.java
++++ b/build-system/manifest-merger/src/main/java/com/android/manifmerger/OtherOperationType.java
+@@ -26,5 +26,5 @@ public enum OtherOperationType {
+     ignore,
+ 
+     // used to direct lint
+-    targetAPI
++    targetApi,
+ }
+```
+
+Commit 8fff824b40 was chosen as it was the latest commit before the release of the `manifest-merger:25.0.0` artifact.
+
+For more information, see <https://github.com/bazelbuild/bazel/issues/6645>.
diff --git a/third_party/android_common/com.android.tools.build_manifest-merger_25.0.0.jar b/third_party/android_common/com.android.tools.build_manifest-merger_25.0.0-patched.jar
similarity index 76%
rename from third_party/android_common/com.android.tools.build_manifest-merger_25.0.0.jar
rename to third_party/android_common/com.android.tools.build_manifest-merger_25.0.0-patched.jar
index e895dcf..d94659e 100644
--- a/third_party/android_common/com.android.tools.build_manifest-merger_25.0.0.jar
+++ b/third_party/android_common/com.android.tools.build_manifest-merger_25.0.0-patched.jar
Binary files differ
diff --git a/third_party/android_common/manifest-merger.patch b/third_party/android_common/manifest-merger.patch
new file mode 100644
index 0000000..89d5d61
--- /dev/null
+++ b/third_party/android_common/manifest-merger.patch
@@ -0,0 +1,11 @@
+diff --git a/build-system/manifest-merger/src/main/java/com/android/manifmerger/OtherOperationType.java b/build-system/manifest-merger/src/main/java/com/android/manifmerger/OtherOperationType.java
+index d0ca70b544..095a781f56 100644
+--- a/build-system/manifest-merger/src/main/java/com/android/manifmerger/OtherOperationType.java
++++ b/build-system/manifest-merger/src/main/java/com/android/manifmerger/OtherOperationType.java
+@@ -26,5 +26,5 @@ public enum OtherOperationType {
+     ignore,
+ 
+     // used to direct lint
+-    targetAPI
++    targetApi,
+ }