mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
fix(tools): Restore file permissions when extracting zip on unix
This commit is contained in:
parent
a13ab34101
commit
59f7f8d9fa
@ -434,6 +434,14 @@ def unpack(filename, destination): # type: (str, str) -> None
|
|||||||
# https://bugs.python.org/issue17153
|
# https://bugs.python.org/issue17153
|
||||||
destination = str(destination)
|
destination = str(destination)
|
||||||
archive_obj.extractall(destination)
|
archive_obj.extractall(destination)
|
||||||
|
# ZipFile on Unix systems does not preserve file permissions while extracting it
|
||||||
|
# We need to reset the permissions afterward
|
||||||
|
if sys.platform != 'win32' and filename.endswith('zip') and isinstance(archive_obj, ZipFile):
|
||||||
|
for file_info in archive_obj.infolist():
|
||||||
|
extracted_file = os.path.join(destination, file_info.filename)
|
||||||
|
extracted_permissions = file_info.external_attr >> 16 & 0o777 # Extract Unix permissions
|
||||||
|
if os.path.exists(extracted_file):
|
||||||
|
os.chmod(extracted_file, extracted_permissions)
|
||||||
|
|
||||||
|
|
||||||
def splittype(url): # type: (str) -> Tuple[Optional[str], str]
|
def splittype(url): # type: (str) -> Tuple[Optional[str], str]
|
||||||
|
Loading…
Reference in New Issue
Block a user