From ed3ba0325e8a41eccf2f9c5e2bf95a2572d9394d Mon Sep 17 00:00:00 2001 From: Laszlo Csomor Date: Fri, 30 Jun 2017 16:38:50 +0200 Subject: 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 --- .../google/devtools/build/android/ScopedTemporaryDirectory.java | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/tools/android/java/com') 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 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; } -- cgit v1.2.3