aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo/command_base.py
diff options
context:
space:
mode:
authorUK992 <urbankrajnc92@gmail.com>2018-10-16 23:16:00 +0200
committerUK992 <urbankrajnc92@gmail.com>2018-12-01 23:54:55 +0100
commitc4b5c944c05a4ff30d0aa70b85dde6be3a47ec36 (patch)
tree92ad8cb25d329608c040cdeaf3e33f7cbbeb8bd0 /python/servo/command_base.py
parentf4d3d8ee1eeb94f643e113ff7fd52e043204c5ea (diff)
downloadservo-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.py25
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)