aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo
diff options
context:
space:
mode:
Diffstat (limited to 'python/servo')
-rw-r--r--python/servo/build_commands.py6
-rw-r--r--python/servo/command_base.py29
-rw-r--r--python/servo/devenv_commands.py11
-rw-r--r--python/servo/post_build_commands.py8
4 files changed, 45 insertions, 9 deletions
diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py
index d4ac8d98b68..8f462939b5b 100644
--- a/python/servo/build_commands.py
+++ b/python/servo/build_commands.py
@@ -171,7 +171,7 @@ class MachCommands(CommandBase):
@CommandArgument('params', nargs='...',
help="Command-line arguments to be passed through to Cargo")
@CommandBase.build_like_command_arguments
- def build(self, release=False, dev=False, jobs=None, params=None,
+ def build(self, release=False, dev=False, jobs=None, params=None, media_stack=None,
no_package=False, verbose=False, very_verbose=False,
target=None, android=False, magicleap=False, libsimpleservo=False,
features=None, uwp=False, win_arm64=False, **kwargs):
@@ -191,6 +191,8 @@ class MachCommands(CommandBase):
if not uwp:
uwp = target and 'uwp' in target
+ features += self.pick_media_stack(media_stack, target)
+
target_path = base_path = self.get_target_dir()
if android:
target_path = path.join(target_path, "android")
@@ -243,7 +245,7 @@ class MachCommands(CommandBase):
check_call(["rustup" + BIN_SUFFIX, "target", "add",
"--toolchain", self.toolchain(), target])
- env = self.build_env(target=target, is_build=True, uwp=uwp)
+ env = self.build_env(target=target, is_build=True, uwp=uwp, features=features)
self.ensure_bootstrapped(target=target)
self.ensure_clobbered()
diff --git a/python/servo/command_base.py b/python/servo/command_base.py
index 2a82ec51612..5a8818333a9 100644
--- a/python/servo/command_base.py
+++ b/python/servo/command_base.py
@@ -562,9 +562,11 @@ class CommandBase(object):
return self.get_executable(destination_folder)
- def needs_gstreamer_env(self, target, env, uwp=False):
+ def needs_gstreamer_env(self, target, env, uwp=False, features=[]):
if uwp:
return False
+ if "media-dummy" in features:
+ return False
try:
if check_gstreamer_lib():
return False
@@ -620,7 +622,7 @@ install them, let us know by filing a bug!")
'vcdir': vcinstalldir,
}
- def build_env(self, hosts_file_path=None, target=None, is_build=False, test_unit=False, uwp=False):
+ def build_env(self, hosts_file_path=None, target=None, is_build=False, test_unit=False, uwp=False, features=None):
"""Return an extended environment dictionary."""
env = os.environ.copy()
if sys.platform == "win32" and type(env['PATH']) == unicode:
@@ -670,7 +672,7 @@ install them, let us know by filing a bug!")
# Always build harfbuzz from source
env["HARFBUZZ_SYS_NO_PKG_CONFIG"] = "true"
- if is_build and self.needs_gstreamer_env(target or host_triple(), env, uwp):
+ if is_build and self.needs_gstreamer_env(target or host_triple(), env, uwp, features):
gstpath = gstreamer_root(target or host_triple(), env, self.get_top_dir())
extra_path += [path.join(gstpath, "bin")]
libpath = path.join(gstpath, "lib")
@@ -791,6 +793,12 @@ install them, let us know by filing a bug!")
help='Cross compile for given target platform',
),
CommandArgument(
+ '--media-stack',
+ default=None,
+ choices=["gstreamer", "dummy"],
+ help='Which media stack to use',
+ ),
+ CommandArgument(
'--android',
default=None,
action='store_true',
@@ -854,13 +862,26 @@ install them, let us know by filing a bug!")
android = self.handle_android_target(target)
return target, android
+ # A guess about which platforms should use the gstreamer media stack
+ def pick_media_stack(self, media_stack, target):
+ if not(media_stack):
+ if (
+ not(target) or
+ ("armv7" in target and "android" in target) or
+ ("x86_64" in target)
+ ):
+ media_stack = "gstreamer"
+ else:
+ media_stack = "dummy"
+ return ["media-" + media_stack]
+
def run_cargo_build_like_command(
self, command, cargo_args,
env=None, verbose=False,
target=None, android=False, magicleap=False, libsimpleservo=False,
features=None, debug_mozjs=False, with_debug_assertions=False,
with_frame_pointer=False, with_raqote=False, with_layout_2020=False, without_wgl=False,
- uwp=False,
+ uwp=False, media_stack=None,
):
env = env or self.build_env()
target, android = self.pick_target_triple(target, android, magicleap)
diff --git a/python/servo/devenv_commands.py b/python/servo/devenv_commands.py
index 78f6e2ce392..45a3f946f38 100644
--- a/python/servo/devenv_commands.py
+++ b/python/servo/devenv_commands.py
@@ -38,16 +38,23 @@ class MachCommands(CommandBase):
'params', default=None, nargs='...',
help="Command-line arguments to be passed through to cargo check")
@CommandBase.build_like_command_arguments
- def check(self, params, **kwargs):
+ def check(self, params, features=[], media_stack=None, target=None,
+ android=False, magicleap=False, **kwargs):
if not params:
params = []
+ features = features or []
+
+ target, android = self.pick_target_triple(target, android, magicleap)
+
+ features += self.pick_media_stack(media_stack, target)
+
self.ensure_bootstrapped()
self.ensure_clobbered()
env = self.build_env()
build_start = time()
- status = self.run_cargo_build_like_command("check", params, env=env, **kwargs)
+ status = self.run_cargo_build_like_command("check", params, env=env, features=features, **kwargs)
elapsed = time() - build_start
notify_build_done(self.config, elapsed, status == 0)
diff --git a/python/servo/post_build_commands.py b/python/servo/post_build_commands.py
index 4c3b6aba3c5..a6ab4de647c 100644
--- a/python/servo/post_build_commands.py
+++ b/python/servo/post_build_commands.py
@@ -239,7 +239,8 @@ class PostBuildCommands(CommandBase):
'params', nargs='...',
help="Command-line arguments to be passed through to cargo doc")
@CommandBase.build_like_command_arguments
- def doc(self, params, features, **kwargs):
+ def doc(self, params, features, target=None, android=False, magicleap=False,
+ media_stack=None, **kwargs):
env = os.environ.copy()
env["RUSTUP_TOOLCHAIN"] = self.toolchain()
rustc_path = check_output(["rustup" + BIN_SUFFIX, "which", "rustc"], env=env)
@@ -268,6 +269,11 @@ class PostBuildCommands(CommandBase):
copy2(full_name, destination)
features = features or []
+
+ target, android = self.pick_target_triple(target, android, magicleap)
+
+ features += self.pick_media_stack(media_stack, target)
+
returncode = self.run_cargo_build_like_command("doc", params, features=features, **kwargs)
if returncode:
return returncode