aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo/util.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/servo/util.py')
-rw-r--r--python/servo/util.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/python/servo/util.py b/python/servo/util.py
index 66f2f11527c..2043b0e2868 100644
--- a/python/servo/util.py
+++ b/python/servo/util.py
@@ -14,6 +14,7 @@ import os.path
import platform
import shutil
from socket import error as socket_error
+import stat
import StringIO
import sys
import zipfile
@@ -35,9 +36,15 @@ else:
URLOPEN_KWARGS = {}
+def remove_readonly(func, path, _):
+ "Clear the readonly bit and reattempt the removal"
+ os.chmod(path, stat.S_IWRITE)
+ func(path)
+
+
def delete(path):
if os.path.isdir(path) and not os.path.islink(path):
- shutil.rmtree(path)
+ shutil.rmtree(path, onerror=remove_readonly)
else:
os.remove(path)