aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2017-06-30 16:38:50 +0200
committerGravatar Marcel Hlopko <hlopko@google.com>2017-07-03 09:05:44 +0200
commited3ba0325e8a41eccf2f9c5e2bf95a2572d9394d (patch)
tree31d328fa65d59e34e70af00938d42fd1b52d64d0 /src/tools/android/java/com
parented41c0a042042ba895bf68c82dda6b7446dfe8a1 (diff)
Windows, Android: ScopedTemporaryDirectory bugfix
ScopedTemporaryDirectory now makes all files writable before attempting to delete them. This is important on Windows where readonly files cannot be deleted, the attempt resulting in an exception. See https://github.com/bazelbuild/bazel/issues/3264 Change-Id: If79478a4b419c05d77ce89cc30cb701d42df1b75 PiperOrigin-RevId: 160644599
Diffstat (limited to 'src/tools/android/java/com')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/ScopedTemporaryDirectory.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/ScopedTemporaryDirectory.java b/src/tools/android/java/com/google/devtools/build/android/ScopedTemporaryDirectory.java
index 684e5a5919..4f6ba1e812 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ScopedTemporaryDirectory.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ScopedTemporaryDirectory.java
@@ -20,6 +20,7 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
+import java.nio.file.attribute.DosFileAttributeView;
/**
* Creates a temporary directory that will be deleted once a scope closes. NOTE: If an error occurs
@@ -39,6 +40,12 @@ final class ScopedTemporaryDirectory extends SimpleFileVisitor<Path> implements
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+ // Make the file deletable on Windows.
+ // Setting this attribute on other platforms than Windows has no effect.
+ DosFileAttributeView dosAttribs = Files.getFileAttributeView(path, DosFileAttributeView.class);
+ if (dosAttribs != null) {
+ dosAttribs.setReadOnly(false);
+ }
Files.delete(file);
return FileVisitResult.CONTINUE;
}