Create .tar.gz package deterministically

Fixes #11981.
This commit is contained in:
Anton Ovchinnikov 2016-07-01 17:35:39 +02:00
parent 44ed0f29a4
commit 0a056a9b31
2 changed files with 68 additions and 6 deletions

View file

@ -16,7 +16,6 @@ sys.path.append(path.join(path.dirname(sys.argv[0]), "components", "style", "pro
import os
import shutil
import subprocess
import tarfile
from mach.registrar import Registrar
from datetime import datetime
@ -29,7 +28,14 @@ from mach.decorators import (
from mako.template import Template
from servo.command_base import CommandBase, cd, BuildNotFound, is_macosx, is_windows
from servo.command_base import (
archive_deterministically,
BuildNotFound,
cd,
CommandBase,
is_macosx,
is_windows,
)
from servo.post_build_commands import find_dep_path_newest
@ -205,7 +211,10 @@ class PackageCommands(CommandBase):
else:
dir_to_package = '/'.join(binary_path.split('/')[:-1])
dir_to_root = '/'.join(binary_path.split('/')[:-3])
shutil.copytree(dir_to_root + '/resources', dir_to_package + '/resources')
resources_dir = dir_to_package + '/resources'
if os.path.exists(resources_dir):
delete(resources_dir)
shutil.copytree(dir_to_root + '/resources', resources_dir)
browserhtml_path = find_dep_path_newest('browserhtml', binary_path)
if browserhtml_path is None:
print("Could not find browserhtml package; perhaps you haven't built Servo.")
@ -234,9 +243,9 @@ class PackageCommands(CommandBase):
time = datetime.utcnow().replace(microsecond=0).isoformat()
time = time.replace(':', "-")
tar_path += time + "-servo-tech-demo.tar.gz"
with tarfile.open(tar_path, "w:gz") as tar:
# arcname is to add by relative rather than absolute path
tar.add(dir_to_package, arcname='servo/')
archive_deterministically(dir_to_package, tar_path, prepend_path='servo/')
print("Packaged Servo into " + tar_path)
@Command('install',