Workaround shutil.rmtree limitation on Windows
By default, shutil.rmtree raises an exception when deleting readonly
files on Windows.
Replace all shutil.rmtree with platform_utils.rmtree, which adds an
error handler to make files read-write when they can't be deleted.
Change-Id: I9cfea9a7b3703fb16a82cf69331540c2c179ed53
diff --git a/platform_utils.py b/platform_utils.py
index f4dfa0b..4417c5a 100644
--- a/platform_utils.py
+++ b/platform_utils.py
@@ -16,6 +16,8 @@
import os
import platform
import select
+import shutil
+import stat
from Queue import Queue
from threading import Thread
@@ -210,3 +212,16 @@
return tail[0] == os.sep # "x:foo" is invalid
else:
return not drive # "x:" is invalid
+
+
+def rmtree(path):
+ if isWindows():
+ shutil.rmtree(path, onerror=handle_rmtree_error)
+ else:
+ shutil.rmtree(path)
+
+
+def handle_rmtree_error(function, path, excinfo):
+ # Allow deleting read-only files
+ os.chmod(path, stat.S_IWRITE)
+ function(path)