mirror of
https://github.com/servo/servo.git
synced 2025-06-29 19:43:39 +01:00
Package: Update zip file creation
This commit is contained in:
parent
f4d3d8ee1e
commit
c4b5c944c0
1 changed files with 19 additions and 6 deletions
|
@ -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,8 +86,12 @@ 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):
|
||||
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))
|
||||
|
||||
|
@ -99,6 +104,14 @@ 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:
|
||||
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))
|
||||
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:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue