diff options
author | Laszlo Csomor <laszlocsomor@google.com> | 2018-03-15 07:41:16 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-15 07:43:21 -0700 |
commit | 4c3098cfa6f00f90c7530b6f40d3e93062931c1d (patch) | |
tree | 5d2055f34a38565a656126b58a2e25647d65c410 /src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java | |
parent | 8fb66b32e0fded35b043048af43b23033a85e2dd (diff) |
Android tools: remove mtime-modifications
The Android tools no longer modify output file
mtimes in hopes of achievening better action
cache hits.
Modifying the mtimes was confusing Bazel and
causing correctness bugs.
Modifying the mtimes is unnecessary because Bazel
is smart about picking up filesystem changes and
observes more signals than just the mtime, though
as the corresponding bug shows it's sadly not
bullet-proof.
Fixes https://github.com/bazelbuild/bazel/issues/4734
Change-Id: I4aa8abf29486841ba8133f927e2816d7f85881fe
Closes #4848.
Change-Id: I0615fae1f20d786771d742705ab4a6ddf7f2306e
PiperOrigin-RevId: 189183742
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java')
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java | 23 |
1 files changed, 3 insertions, 20 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java index 2ff8330046..a72d1d243a 100644 --- a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java +++ b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java @@ -57,7 +57,6 @@ import java.nio.charset.StandardCharsets; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.attribute.FileTime; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -343,24 +342,11 @@ public class AndroidResourceProcessor { dependencyData, customPackageForR, androidManifest, sourceOut); } // Reset the output date stamps. - if (proguardOut != null) { - Files.setLastModifiedTime(proguardOut, FileTime.fromMillis(0L)); - } - if (mainDexProguardOut != null) { - Files.setLastModifiedTime(mainDexProguardOut, FileTime.fromMillis(0L)); - } if (packageOut != null) { - Files.setLastModifiedTime(packageOut, FileTime.fromMillis(0L)); if (!splits.isEmpty()) { - Iterable<Path> splitFilenames = findAndRenameSplitPackages(packageOut, splits); - for (Path splitFilename : splitFilenames) { - Files.setLastModifiedTime(splitFilename, FileTime.fromMillis(0L)); - } + renameSplitPackages(packageOut, splits); } } - if (publicResourcesOut != null && Files.exists(publicResourcesOut)) { - Files.setLastModifiedTime(publicResourcesOut, FileTime.fromMillis(0L)); - } return new MergedAndroidData(resourceDir, assetsDir, androidManifest); } @@ -623,8 +609,8 @@ public class AndroidResourceProcessor { } } - /** Finds aapt's split outputs and renames them according to the input flags. */ - private Iterable<Path> findAndRenameSplitPackages(Path packageOut, Iterable<String> splits) + /** Renames aapt's split outputs according to the input flags. */ + private void renameSplitPackages(Path packageOut, Iterable<String> splits) throws UnrecognizedSplitsException, IOException { String prefix = packageOut.getFileName().toString() + "_"; // The regex java string literal below is received as [\\{}\[\]*?] by the regex engine, @@ -641,16 +627,13 @@ public class AndroidResourceProcessor { } Map<String, String> outputs = SplitConfigurationFilter.mapFilenamesToSplitFlags(filenameSuffixes.build(), splits); - ImmutableList.Builder<Path> outputPaths = new ImmutableList.Builder<>(); for (Map.Entry<String, String> splitMapping : outputs.entrySet()) { Path resultPath = packageOut.resolveSibling(prefix + splitMapping.getValue()); - outputPaths.add(resultPath); if (!splitMapping.getKey().equals(splitMapping.getValue())) { Path sourcePath = packageOut.resolveSibling(prefix + splitMapping.getKey()); Files.move(sourcePath, resultPath); } } - return outputPaths.build(); } /** A logger that will print messages to a target OutputStream. */ |