diff options
author | Simon Sapin <simon.sapin@exyr.org> | 2017-05-13 15:02:47 +0200 |
---|---|---|
committer | Simon Sapin <simon.sapin@exyr.org> | 2017-05-13 15:28:41 +0200 |
commit | f693582ba92e6280ed159c8895b8ac8406e71138 (patch) | |
tree | e38ede28c71490b5b7fc4b8d0db07de7b96cb11f /python | |
parent | d2fa2ae9343db8d958570a501ff9a7b7a203ceeb (diff) | |
download | servo-f693582ba92e6280ed159c8895b8ac8406e71138.tar.gz servo-f693582ba92e6280ed159c8895b8ac8406e71138.zip |
Add 'mach check' and 'mach check-geckolib'
Diffstat (limited to 'python')
-rw-r--r-- | python/servo/devenv_commands.py | 70 |
1 files changed, 52 insertions, 18 deletions
diff --git a/python/servo/devenv_commands.py b/python/servo/devenv_commands.py index f7df09ce754..ff70769771a 100644 --- a/python/servo/devenv_commands.py +++ b/python/servo/devenv_commands.py @@ -9,6 +9,7 @@ from __future__ import print_function, unicode_literals from os import path, getcwd, listdir +from time import time import sys import urllib2 @@ -21,10 +22,43 @@ from mach.decorators import ( ) from servo.command_base import CommandBase, cd, call +from servo.build_commands import notify_build_done @CommandProvider class MachCommands(CommandBase): + def run_cargo(self, params, geckolib=False, check=False): + if geckolib: + self.set_use_stable_rust() + crate_dir = path.join('ports', 'geckolib') + else: + crate_dir = path.join('components', 'servo') + + self.ensure_bootstrapped() + self.ensure_clobbered() + env = self.build_env(geckolib=geckolib) + + if not params: + params = [] + + if check: + params = ['check'] + params + + build_start = time() + if self.context.topdir == getcwd(): + with cd(crate_dir): + status = call(['cargo'] + params, env=env) + else: + status = call(['cargo'] + params, env=env) + elapsed = time() - build_start + + notify_build_done(self.config, elapsed, status == 0) + + if check and status == 0: + print('Finished checking, binary NOT updated. Consider ./mach build before ./mach run') + + return status + @Command('cargo', description='Run Cargo', category='devenv') @@ -32,15 +66,7 @@ class MachCommands(CommandBase): 'params', default=None, nargs='...', help="Command-line arguments to be passed through to Cargo") def cargo(self, params): - if not params: - params = [] - - self.ensure_bootstrapped() - - if self.context.topdir == getcwd(): - with cd(path.join('components', 'servo')): - return call(["cargo"] + params, env=self.build_env()) - return call(['cargo'] + params, env=self.build_env()) + return self.run_cargo(params) @Command('cargo-geckolib', description='Run Cargo with the same compiler version and root crate as build-geckolib', @@ -49,17 +75,25 @@ class MachCommands(CommandBase): 'params', default=None, nargs='...', help="Command-line arguments to be passed through to Cargo") def cargo_geckolib(self, params): - if not params: - params = [] + return self.run_cargo(params, geckolib=True) - self.set_use_stable_rust() - self.ensure_bootstrapped() - env = self.build_env(geckolib=True) + @Command('check', + description='Run "cargo check"', + category='devenv') + @CommandArgument( + 'params', default=None, nargs='...', + help="Command-line arguments to be passed through to cargo check") + def check(self, params): + return self.run_cargo(params, check=True) - if self.context.topdir == getcwd(): - with cd(path.join('ports', 'geckolib')): - return call(["cargo"] + params, env=env) - return call(['cargo'] + params, env=env) + @Command('check-geckolib', + description='Run "cargo check" with the same compiler version and root crate as build-geckolib', + category='devenv') + @CommandArgument( + 'params', default=None, nargs='...', + help="Command-line arguments to be passed through to cargo check") + def check_geckolib(self, params): + return self.run_cargo(params, check=True, geckolib=True) @Command('cargo-update', description='Same as update-cargo', |