mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'bugfix/win_rename_delay_v4.1' into 'release/v4.1'
Tools: Use delay between rename attempts on Windows in the installer (v4.1) See merge request espressif/esp-idf!17059
This commit is contained in:
commit
3273bd5fab
@ -49,6 +49,7 @@ import re
|
|||||||
import platform
|
import platform
|
||||||
import hashlib
|
import hashlib
|
||||||
import tarfile
|
import tarfile
|
||||||
|
import time
|
||||||
import zipfile
|
import zipfile
|
||||||
import errno
|
import errno
|
||||||
import shutil
|
import shutil
|
||||||
@ -269,20 +270,20 @@ def unpack(filename, destination):
|
|||||||
# https://github.com/espressif/esp-idf/issues/3819#issuecomment-515167118
|
# https://github.com/espressif/esp-idf/issues/3819#issuecomment-515167118
|
||||||
# https://github.com/espressif/esp-idf/issues/4063#issuecomment-531490140
|
# https://github.com/espressif/esp-idf/issues/4063#issuecomment-531490140
|
||||||
# https://stackoverflow.com/a/43046729
|
# https://stackoverflow.com/a/43046729
|
||||||
def rename_with_retry(path_from, path_to):
|
def rename_with_retry(path_from, path_to): # type: (str, str) -> None
|
||||||
if sys.platform.startswith('win'):
|
retry_count = 20 if sys.platform.startswith('win') else 1
|
||||||
retry_count = 100
|
|
||||||
else:
|
|
||||||
retry_count = 1
|
|
||||||
|
|
||||||
for retry in range(retry_count):
|
for retry in range(retry_count):
|
||||||
try:
|
try:
|
||||||
os.rename(path_from, path_to)
|
os.rename(path_from, path_to)
|
||||||
return
|
return
|
||||||
except (OSError, WindowsError): # WindowsError until Python 3.3, then OSError
|
except OSError:
|
||||||
|
msg = 'Rename {} to {} failed'.format(path_from, path_to)
|
||||||
if retry == retry_count - 1:
|
if retry == retry_count - 1:
|
||||||
|
fatal(msg + '. Antivirus software might be causing this. Disabling it temporarily could solve the issue.')
|
||||||
raise
|
raise
|
||||||
warn('Rename {} to {} failed, retrying...'.format(path_from, path_to))
|
warn(msg + ', retrying...')
|
||||||
|
# Sleep before the next try in order to pass the antivirus check on Windows
|
||||||
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
|
||||||
def strip_container_dirs(path, levels):
|
def strip_container_dirs(path, levels):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user