From 6b16e712e79b3d97863745c291c3d4e1873db4af Mon Sep 17 00:00:00 2001 From: OJ Kwon Date: Fri, 16 Mar 2018 14:14:03 -0700 Subject: [PATCH] build(mach): generate webrender revision via cargo lockfile --- .gitignore | 1 + python/servo/command_base.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/.gitignore b/.gitignore index 35b7815ab7e..d5416de8067 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ Servo.app .config.mk.last /glfw capture_webrender/ +/components/compositing/webrender_revision.rs # Editors diff --git a/python/servo/command_base.py b/python/servo/command_base.py index a200fa05f24..b36aa5bbe2b 100644 --- a/python/servo/command_base.py +++ b/python/servo/command_base.py @@ -213,6 +213,36 @@ def set_osmesa_env(bin_path, env): return env +def generate_webrender_revision(): + """Read current package id of web render to generate revision""" + + lockfile_path = path.join(os.getcwd(), "Cargo.lock") + if not os.path.isfile(lockfile_path): + return + + with open(lockfile_path) as f: + lockfile = toml.loads(f.read()) + + webrender_revision = "" + for package in lockfile.get("package", []): + pkgName = package.get("name") + if ("webrender" == pkgName): + webrender_revision = package.get("source") + + revision = '''/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/// auto-generated by mach. do not manually modify. +pub const REVISION: &'static str = \"%s\";''' % webrender_revision + + compositor_path = os.path.join(os.getcwd(), "components", "compositing", "webrender_revision.rs") + + revision_file = open(compositor_path, "w") + revision_file.write(revision) + revision_file.close() + + class BuildNotFound(Exception): def __init__(self, message): self.message = message @@ -660,6 +690,8 @@ class CommandBase(object): if "msvc" in target_platform: Registrar.dispatch("bootstrap", context=self.context) + generate_webrender_revision() + self.context.bootstrapped = True def ensure_clobbered(self, target_dir=None):