aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo/post_build_commands.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/servo/post_build_commands.py')
-rw-r--r--python/servo/post_build_commands.py83
1 files changed, 40 insertions, 43 deletions
diff --git a/python/servo/post_build_commands.py b/python/servo/post_build_commands.py
index 78a9e2f6644..cb7ea7a63bb 100644
--- a/python/servo/post_build_commands.py
+++ b/python/servo/post_build_commands.py
@@ -16,7 +16,7 @@ import subprocess
from shutil import copytree, rmtree, copy2
from typing import List
-import servo.util
+import mozdebug
from mach.decorators import (
CommandArgument,
@@ -24,9 +24,13 @@ from mach.decorators import (
Command,
)
+import servo.util
+import servo.platform
+
from servo.command_base import (
+ BuildType,
CommandBase,
- check_call, check_output, BIN_SUFFIX,
+ check_call, check_output,
is_linux,
)
@@ -50,10 +54,6 @@ class PostBuildCommands(CommandBase):
@Command('run',
description='Run Servo',
category='post-build')
- @CommandArgument('--release', '-r', action='store_true',
- help='Run the release build')
- @CommandArgument('--dev', '-d', action='store_true',
- help='Run the dev build')
@CommandArgument('--android', action='store_true', default=None,
help='Run on an Android device through `adb shell`')
@CommandArgument('--emulator',
@@ -62,12 +62,12 @@ class PostBuildCommands(CommandBase):
@CommandArgument('--usb',
action='store_true',
help='For Android, run in the only USB device')
- @CommandArgument('--debug', action='store_true',
+ @CommandArgument('--debugger', action='store_true',
help='Enable the debugger. Not specifying a '
- '--debugger option will result in the default '
+ '--debugger-cmd option will result in the default '
'debugger being used. The following arguments '
'have no effect without this.')
- @CommandArgument('--debugger', default=None, type=str,
+ @CommandArgument('--debugger-cmd', default=None, type=str,
help='Name of debugger to use.')
@CommandArgument('--headless', '-z', action='store_true',
help='Launch in headless mode')
@@ -80,7 +80,8 @@ class PostBuildCommands(CommandBase):
@CommandArgument(
'params', nargs='...',
help="Command-line arguments to be passed through to Servo")
- def run(self, params, release=False, dev=False, android=None, debug=False, debugger=None,
+ @CommandBase.common_command_arguments(build_configuration=False, build_type=True)
+ def run(self, params, build_type: BuildType, android=None, debugger=False, debugger_cmd=None,
headless=False, software=False, bin=None, emulator=False, usb=False, nightly=None):
env = self.build_env()
env["RUST_BACKTRACE"] = "1"
@@ -92,15 +93,15 @@ class PostBuildCommands(CommandBase):
env['LIBGL_ALWAYS_SOFTWARE'] = "1"
os.environ.update(env)
- # Make --debugger imply --debug
- if debugger:
- debug = True
+ # Make --debugger-cmd imply --debugger
+ if debugger_cmd:
+ debugger = True
if android is None:
android = self.config["build"]["android"]
if android:
- if debug:
+ if debugger:
print("Android on-device debugging is not supported by mach yet. See")
print("https://github.com/servo/servo/wiki/Building-for-Android#debugging-on-device")
return
@@ -133,55 +134,54 @@ class PostBuildCommands(CommandBase):
shell.communicate("\n".join(script) + "\n")
return shell.wait()
- args = [bin or self.get_nightly_binary_path(nightly) or self.get_binary_path(release, dev)]
+ args = [bin or self.get_nightly_binary_path(nightly) or self.get_binary_path(build_type)]
if headless:
args.append('-z')
# Borrowed and modified from:
# http://hg.mozilla.org/mozilla-central/file/c9cfa9b91dea/python/mozbuild/mozbuild/mach_commands.py#l883
- if debug:
- import mozdebug
- if not debugger:
+ if debugger:
+ if not debugger_cmd:
# No debugger name was provided. Look for the default ones on
# current OS.
- debugger = mozdebug.get_default_debugger_name(
+ debugger_cmd = mozdebug.get_default_debugger_name(
mozdebug.DebuggerSearch.KeepLooking)
- self.debuggerInfo = mozdebug.get_debugger_info(debugger)
- if not self.debuggerInfo:
+ debugger_info = mozdebug.get_debugger_info(debugger_cmd)
+ if not debugger_info:
print("Could not find a suitable debugger in your PATH.")
return 1
- command = self.debuggerInfo.path
- if debugger == 'gdb' or debugger == 'lldb':
- rustCommand = 'rust-' + debugger
+ command = debugger_info.path
+ if debugger_cmd == 'gdb' or debugger_cmd == 'lldb':
+ rust_command = 'rust-' + debugger_cmd
try:
- subprocess.check_call([rustCommand, '--version'], env=env, stdout=open(os.devnull, 'w'))
+ subprocess.check_call([rust_command, '--version'], env=env, stdout=open(os.devnull, 'w'))
except (OSError, subprocess.CalledProcessError):
pass
else:
- command = rustCommand
+ command = rust_command
# Prepend the debugger args.
- args = ([command] + self.debuggerInfo.args + args + params)
+ args = ([command] + debugger_info.args + args + params)
else:
args = args + params
try:
check_call(args, env=env)
- except subprocess.CalledProcessError as e:
- if e.returncode < 0:
- print(f"Servo was terminated by signal {-e.returncode}")
+ except subprocess.CalledProcessError as exception:
+ if exception.returncode < 0:
+ print(f"Servo was terminated by signal {-exception.returncode}")
else:
- print(f"Servo exited with non-zero status {e.returncode}")
- return e.returncode
- except OSError as e:
- if e.errno == 2:
+ print(f"Servo exited with non-zero status {exception.returncode}")
+ return exception.returncode
+ except OSError as exception:
+ if exception.errno == 2:
print("Servo Binary can't be found! Run './mach build'"
" and try again!")
else:
- raise e
+ raise exception
@Command('android-emulator',
description='Run the Android emulator',
@@ -198,10 +198,6 @@ class PostBuildCommands(CommandBase):
@Command('rr-record',
description='Run Servo whilst recording execution with rr',
category='post-build')
- @CommandArgument('--release', '-r', action='store_true',
- help='Use release build')
- @CommandArgument('--dev', '-d', action='store_true',
- help='Use dev build')
@CommandArgument('--bin', default=None,
help='Launch with specific binary')
@CommandArgument('--nightly', '-n', default=None,
@@ -209,12 +205,13 @@ class PostBuildCommands(CommandBase):
@CommandArgument(
'params', nargs='...',
help="Command-line arguments to be passed through to Servo")
- def rr_record(self, release=False, dev=False, bin=None, nightly=None, params=[]):
+ @CommandBase.common_command_arguments(build_configuration=False, build_type=True)
+ def rr_record(self, build_type: BuildType, bin=None, nightly=None, params=[]):
env = self.build_env()
env["RUST_BACKTRACE"] = "1"
servo_cmd = [bin or self.get_nightly_binary_path(nightly)
- or self.get_binary_path(release, dev)] + params
+ or self.get_binary_path(build_type)] + params
rr_cmd = ['rr', '--fatal-errors', 'record']
try:
check_call(rr_cmd + servo_cmd)
@@ -242,11 +239,11 @@ class PostBuildCommands(CommandBase):
@CommandArgument(
'params', nargs='...',
help="Command-line arguments to be passed through to cargo doc")
- @CommandBase.build_like_command_arguments
+ @CommandBase.common_command_arguments(build_configuration=True, build_type=False)
def doc(self, params: List[str], **kwargs):
self.ensure_bootstrapped()
rustc_path = check_output(
- ["rustup" + BIN_SUFFIX, "which", "rustc"],
+ [f"rustup{servo.platform.get().executable_suffix()}", "which", "rustc"],
cwd=self.context.topdir).decode("utf-8")
assert path.basename(path.dirname(rustc_path)) == "bin"
toolchain_path = path.dirname(path.dirname(rustc_path))