mirror of
https://github.com/servo/servo.git
synced 2025-10-05 02:59:19 +01:00
Auto merge of #12244 - rev112:package-repro-pure, r=aneeshusa
Create .tar.gz package deterministically using Python's "tarfile" <!-- Please describe your changes on the following line: --> A development of #12108, creates a .tar.gz package using the `tarfile` and `gzip` modules, without external dependencies. Fixes #11981. Also this fixes the issue when the existing `resources/` directory didn't allow to create a new package and failed with "File exists" error. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #11981 (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [X] These changes do not require tests because "more general approach to reproducibility testing is needed" <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/12244) <!-- Reviewable:end -->
This commit is contained in:
commit
1086df67e0
2 changed files with 68 additions and 6 deletions
|
@ -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',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue