Add cargo-geckolib and rustc-geckolib commands to mach.

This commit is contained in:
Simon Sapin 2017-04-05 21:50:44 +02:00
parent bf7c044955
commit ca08ff876b
3 changed files with 39 additions and 3 deletions

View file

@ -416,9 +416,8 @@ class MachCommands(CommandBase):
self.set_use_stable_rust()
self.ensure_bootstrapped()
env = self.build_env(is_build=True)
env = self.build_env(is_build=True, geckolib=True)
geckolib_build_path = path.join(self.context.topdir, "target", "geckolib").encode("UTF-8")
env["CARGO_TARGET_DIR"] = geckolib_build_path
ret = None
opts = []

View file

@ -382,7 +382,7 @@ class CommandBase(object):
" --release" if release else ""))
sys.exit()
def build_env(self, hosts_file_path=None, target=None, is_build=False):
def build_env(self, hosts_file_path=None, target=None, is_build=False, geckolib=False):
"""Return an extended environment dictionary."""
env = os.environ.copy()
if sys.platform == "win32" and type(env['PATH']) == unicode:
@ -519,6 +519,10 @@ class CommandBase(object):
env['GIT_INFO'] = '-'.join(git_info)
if geckolib:
geckolib_build_path = path.join(self.context.topdir, "target", "geckolib").encode("UTF-8")
env["CARGO_TARGET_DIR"] = geckolib_build_path
return env
def servo_crate(self):

View file

@ -38,6 +38,24 @@ class MachCommands(CommandBase):
return call(["cargo"] + params, env=self.build_env())
return call(['cargo'] + params, env=self.build_env())
@Command('cargo-geckolib',
description='Run Cargo 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")
def cargo_geckolib(self, params):
if not params:
params = []
self.set_use_stable_rust()
env = self.build_env(geckolib=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('cargo-update',
description='Same as update-cargo',
category='devenv')
@ -97,6 +115,21 @@ class MachCommands(CommandBase):
params = []
return call(["rustc"] + params, env=self.build_env())
@Command('rustc-geckolib',
description='Run the Rust compiler 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 rustc")
def rustc_geckolib(self, params):
if params is None:
params = []
self.set_use_stable_rust()
env = self.build_env(geckolib=True)
return call(["rustc"] + params, env=env)
@Command('rust-root',
description='Print the path to the root of the Rust compiler',
category='devenv')