aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Kristina Chodorow <kchodorow@google.com>2015-07-22 16:24:54 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2015-07-23 11:00:21 +0000
commitcaf0191214bf3ff5ba472f0bc5b6e396c4acbdc0 (patch)
tree2ff176a0718da92f6994cb6e9323f3a38bd325a8
parent53f5f3327c329cd036bb7cb63932e4bfcc248d9a (diff)
Make tar.gz decompressor overwrite old versions of decompressed files
Otherwise Files.copy will throw an IOException when it tries to overwrite an existing copy. -- MOS_MIGRATED_REVID=98840310
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/repository/TarGzFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/repository/ZipFunction.java7
-rwxr-xr-xsrc/test/shell/bazel/external_integration_test.sh2
3 files changed, 8 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/TarGzFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/TarGzFunction.java
index 81be03d587..9594d4aac8 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/TarGzFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/TarGzFunction.java
@@ -31,6 +31,7 @@ import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
+import java.nio.file.StandardCopyOption;
import java.util.zip.GZIPInputStream;
import javax.annotation.Nullable;
@@ -57,7 +58,8 @@ public class TarGzFunction implements SkyFunction {
if (entry.isDirectory()) {
FileSystemUtils.createDirectoryAndParents(filename);
} else {
- Files.copy(tarStream, filename.getPathFile().toPath());
+ Files.copy(tarStream, filename.getPathFile().toPath(),
+ StandardCopyOption.REPLACE_EXISTING);
filename.chmod(entry.getMode());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/ZipFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/ZipFunction.java
index 17116199e7..98a4e20282 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/ZipFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/ZipFunction.java
@@ -30,6 +30,7 @@ import com.google.devtools.build.zip.ZipReader;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
+import java.nio.file.StandardCopyOption;
import java.util.Collection;
import javax.annotation.Nullable;
@@ -94,11 +95,9 @@ public class ZipFunction implements SkyFunction {
// this delete+rewrite is required or the build will error out if outputPath exists here.
// The zip file is not re-unzipped when the WORKSPACE file is changed (because it is assumed
// to be immutable) but is on server restart (which is a bug).
- if (outputPath.exists()) {
- outputPath.delete();
- }
File outputFile = outputPath.getPathFile();
- Files.copy(reader.getInputStream(entry), outputFile.toPath());
+ Files.copy(reader.getInputStream(entry), outputFile.toPath(),
+ StandardCopyOption.REPLACE_EXISTING);
outputPath.chmod(permissions);
}
}
diff --git a/src/test/shell/bazel/external_integration_test.sh b/src/test/shell/bazel/external_integration_test.sh
index d5c1bb76fe..5353b7185c 100755
--- a/src/test/shell/bazel/external_integration_test.sh
+++ b/src/test/shell/bazel/external_integration_test.sh
@@ -216,6 +216,8 @@ EOF
function test_http_archive_tgz() {
http_archive_helper tar_gz_up
+ bazel shutdown
+ http_archive_helper tar_gz_up
}
function test_http_archive_no_server() {