mirror of
https://github.com/audacity/conan-recipes.git
synced 2025-12-13 04:46:12 -06:00
27 lines
806 B
Python
27 lines
806 B
Python
import shutil
|
|
import time
|
|
import os
|
|
|
|
def safe_rm_tree(path):
|
|
if not os.path.isdir(path):
|
|
return
|
|
|
|
def onerror(func, path, exc_info):
|
|
import stat
|
|
# Is the error an access error?
|
|
if not os.access(path, os.W_OK):
|
|
print(f"Failed to remove `{path}`. Trying to change permissions...")
|
|
os.chmod(path, stat.S_IWUSR)
|
|
func(path)
|
|
else:
|
|
raise OSError("Cannot change permissions for {}! Exception info: {}".format(path, exc_info))
|
|
|
|
for i in range(20):
|
|
try:
|
|
shutil.rmtree(path, onerror=onerror)
|
|
return
|
|
except Exception as e:
|
|
delay = 0.5 * float(i + 1)
|
|
print(f"Failed to remove `{path}`: `{e}`. Retrying in {delay} seconds...")
|
|
time.sleep(delay)
|