diff options
Diffstat (limited to 'python/servo/build_commands.py')
-rw-r--r-- | python/servo/build_commands.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py new file mode 100644 index 00000000000..b0f4ab95b64 --- /dev/null +++ b/python/servo/build_commands.py @@ -0,0 +1,85 @@ +from __future__ import print_function, unicode_literals + +import json +import os +import os.path as path +import shutil +import subprocess +import sys +import tarfile +from time import time +import urllib + +from mach.registrar import Registrar +from mach.decorators import ( + CommandArgument, + CommandProvider, + Command, +) + +from servo.command_base import CommandBase, cd + +@CommandProvider +class MachCommands(CommandBase): + @Command('build', + description='Build Servo', + category='build') + @CommandArgument('--target', '-t', + default=None, + help='Cross compile for given target platform') + @CommandArgument('--release', '-r', + action='store_true', + help='Build in release mode') + @CommandArgument('--jobs', '-j', + default=None, + help='Number of jobs to run in parallel') + def build(self, target, release=False, jobs=None): + self.ensure_bootstrapped() + + opts = [] + if release: + opts += ["--release"] + if jobs is not None: + opts += ["-j", jobs] + + build_start = time() + subprocess.check_call(["cargo", "build"] + opts, env=self.build_env()) + elapsed = time() - build_start + + print("Build completed in %0.2fs" % elapsed) + + @Command('build-cef', + description='Build the Chromium Embedding Framework library', + category='build') + @CommandArgument('--jobs', '-j', + default=None, + help='Number of jobs to run in parallel') + def build_cef(self, jobs=None): + self.ensure_bootstrapped() + + ret = None + opts = [] + if jobs is not None: + opts += ["-j", jobs] + + build_start = time() + with cd(path.join("ports", "cef")): + ret = subprocess.call(["cargo", "build"], env=self.build_env()) + elapsed = time() - build_start + + print("CEF build completed in %0.2fs" % elapsed) + + return ret + + @Command('build-tests', + description='Build the Servo test suites', + category='build') + @CommandArgument('--jobs', '-j', + default=None, + help='Number of jobs to run in parallel') + def build_tests(self, jobs=None): + self.ensure_bootstrapped() + opts = [] + if jobs is not None: + opts += ["-j", jobs] + subprocess.check_call(["cargo", "test", "--no-run"], env=self.build_env()) |