aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java
diff options
context:
space:
mode:
authorGravatar Nicholas Lativy <nlativy@google.com>2016-05-16 17:57:51 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-05-17 16:14:34 +0000
commit3b4a2d5071ef90fa66b45417a1fe1a50cb0653f4 (patch)
tree21b1551abc78eaa8cb5d9a498c1a7775a0859097 /src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java
parent6baddebc38a27b17ccb1b189a1e20dbc46d837d5 (diff)
Make AarGeneratorAction deterministic by zeroing zip entry timestamps.
ZipOutputStream#putNextEntry(ZipEntry) sets the modification time to the current time if no time is set on the ZipEntry passed to it. -- MOS_MIGRATED_REVID=122436300
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java b/src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java
index e3a1d9535f..4880d1c77e 100644
--- a/src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java
@@ -197,11 +197,13 @@ public class AarGeneratorAction {
Path classes) throws IOException {
try (final ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(aar.toFile()))) {
ZipEntry manifestEntry = new ZipEntry("AndroidManifest.xml");
+ manifestEntry.setTime(EPOCH);
zipOut.putNextEntry(manifestEntry);
zipOut.write(Files.readAllBytes(manifest));
zipOut.closeEntry();
ZipEntry classJar = new ZipEntry("classes.jar");
+ classJar.setTime(EPOCH);
zipOut.putNextEntry(classJar);
zipOut.write(Files.readAllBytes(classes));
zipOut.closeEntry();
@@ -210,6 +212,7 @@ public class AarGeneratorAction {
new ZipDirectoryWriter(zipOut, data.getResourceDir(), "res"));
ZipEntry r = new ZipEntry("R.txt");
+ r.setTime(EPOCH);
zipOut.putNextEntry(r);
zipOut.write(Files.readAllBytes(rtxt));
zipOut.closeEntry();
@@ -236,6 +239,7 @@ public class AarGeneratorAction {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
ZipEntry entry = new ZipEntry(new File(dirName, root.relativize(file).toString()).toString());
+ entry.setTime(EPOCH);
zipOut.putNextEntry(entry);
zipOut.write(Files.readAllBytes(file));
zipOut.closeEntry();
@@ -247,6 +251,7 @@ public class AarGeneratorAction {
throws IOException {
ZipEntry entry = new ZipEntry(new File(dirName, root.relativize(dir).toString())
.toString() + "/");
+ entry.setTime(EPOCH);
zipOut.putNextEntry(entry);
zipOut.closeEntry();
return FileVisitResult.CONTINUE;