aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android
diff options
context:
space:
mode:
authorGravatar jingwen <jingwen@google.com>2018-05-31 08:27:29 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-31 08:28:44 -0700
commitde1340abaf0bce215c70e0ffedfaf9f2ce8db077 (patch)
tree6de4474bb117aaf80c308ac184c970e52c7c6c30 /src/tools/android/java/com/google/devtools/build/android
parente7c1e9d5da5fa0cac4f69e27184054f6d68a00b7 (diff)
Improve DependencyAndroidData VALID_REGEX's robustness.
This prevents an invalid flag like `resources:assets:AndroidManifest.xml:::local.bin` to match, as with the case in https://github.com/bazelbuild/bazel/issues/5214 where the R.txt file is missing (shouldn't happen, but let's be defensive) Error message: ``` .. invalid DependencyAndroidData: bazel-out/android-armeabi-v7a-fastbuild/bin/external/androidsdk/com.android.support/_aar/unzipped/resources/support-compat-25.0.0/res:bazel-out/android-armeabi-v7a-fastbuild/bin/external/androidsdk/com.android.support/_aar/unzipped/assets/support-compat-25.0.0/assets:bazel-out/android-armeabi-v7a-fastbuild/bin/external/androidsdk/com.android.support/support-compat-25.0.0_processed_manifest/AndroidManifest.xml:::bazel-out/android-armeabi-v7a-fastbuild/bin/external/androidsdk/com.android.support/support-compat-25.0.0_symbols/local.bin is not in the format 'resources[#resources]:assets[#assets]:manifest:r.txt(:symbols.zip?):symbols.bin' ``` RELNOTES: None. PiperOrigin-RevId: 198724816
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/DependencyAndroidData.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/DependencyAndroidData.java b/src/tools/android/java/com/google/devtools/build/android/DependencyAndroidData.java
index b4d4b99b3f..6eb9aa80d8 100644
--- a/src/tools/android/java/com/google/devtools/build/android/DependencyAndroidData.java
+++ b/src/tools/android/java/com/google/devtools/build/android/DependencyAndroidData.java
@@ -35,7 +35,15 @@ import java.util.regex.Pattern;
* assets.
*/
class DependencyAndroidData extends SerializedAndroidData {
- private static final Pattern VALID_REGEX = Pattern.compile(".*:.*:.+:.+(:.*){0,2}");
+
+ // From the start of the line,
+ // 1) match any number of characters that isn't ":" until a ":" (twice for resources and assets)
+ // 2) match at least one character that isn't ":" until a ":" (manifest)
+ // 3) match at least one character that isn't ":" until a ":" or end of line (r.txt)
+ // 4) if not end of line, optionally match anything that isn't ":" until a ":" (symbols.zip)
+ // 5) match anything that isn't ":" until end of line (symbols.bin)
+ private static final Pattern VALID_REGEX =
+ Pattern.compile("^([^:]*:){2}[^:]+:[^:]+(:|$)([^:]*:)?([^:]*)$");
public static final String EXPECTED_FORMAT =
"resources[#resources]:assets[#assets]:manifest:r.txt(:symbols.zip?):symbols.bin";