diff options
author | UK992 <urbankrajnc92@gmail.com> | 2018-10-16 23:16:00 +0200 |
---|---|---|
committer | UK992 <urbankrajnc92@gmail.com> | 2018-12-01 23:54:55 +0100 |
commit | c4b5c944c05a4ff30d0aa70b85dde6be3a47ec36 (patch) | |
tree | 92ad8cb25d329608c040cdeaf3e33f7cbbeb8bd0 /python/servo/command_base.py | |
parent | f4d3d8ee1eeb94f643e113ff7fd52e043204c5ea (diff) | |
download | servo-c4b5c944c05a4ff30d0aa70b85dde6be3a47ec36.tar.gz servo-c4b5c944c05a4ff30d0aa70b85dde6be3a47ec36.zip |
Package: Update zip file creation
Diffstat (limited to 'python/servo/command_base.py')
-rw-r--r-- | python/servo/command_base.py | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/python/servo/command_base.py b/python/servo/command_base.py index 277f1d3aac1..2865eccd849 100644 --- a/python/servo/command_base.py +++ b/python/servo/command_base.py @@ -21,6 +21,7 @@ import subprocess from subprocess import PIPE import sys import tarfile +import zipfile from xml.etree.ElementTree import XML from servo.util import download_file import urllib2 @@ -85,10 +86,14 @@ def archive_deterministically(dir_to_archive, dest_archive, prepend_path=None): dest_archive = os.path.abspath(dest_archive) with cd(dir_to_archive): current_dir = "." - file_list = [current_dir] + file_list = [] for root, dirs, files in os.walk(current_dir): - for name in itertools.chain(dirs, files): - file_list.append(os.path.join(root, name)) + if dest_archive.endswith(".zip"): + for f in files: + file_list.append(os.path.join(root, f)) + else: + for name in itertools.chain(dirs, files): + file_list.append(os.path.join(root, name)) # Sort file entries with the fixed locale with setlocale('C'): @@ -99,13 +104,21 @@ def archive_deterministically(dir_to_archive, dest_archive, prepend_path=None): # TODO do this in a temporary folder after #11983 is fixed temp_file = '{}.temp~'.format(dest_archive) with os.fdopen(os.open(temp_file, os.O_WRONLY | os.O_CREAT, 0644), 'w') as out_file: - with gzip.GzipFile('wb', fileobj=out_file, mtime=0) as gzip_file: - with tarfile.open(fileobj=gzip_file, mode='w:') as tar_file: + if dest_archive.endswith('.zip'): + with zipfile.ZipFile(temp_file, 'w', zipfile.ZIP_DEFLATED) as zip_file: for entry in file_list: arcname = entry if prepend_path is not None: arcname = os.path.normpath(os.path.join(prepend_path, arcname)) - tar_file.add(entry, filter=reset, recursive=False, arcname=arcname) + zip_file.write(entry, arcname=arcname) + else: + with gzip.GzipFile('wb', fileobj=out_file, mtime=0) as gzip_file: + with tarfile.open(fileobj=gzip_file, mode='w:') as tar_file: + for entry in file_list: + arcname = entry + if prepend_path is not None: + arcname = os.path.normpath(os.path.join(prepend_path, arcname)) + tar_file.add(entry, filter=reset, recursive=False, arcname=arcname) os.rename(temp_file, dest_archive) |