diff options
Diffstat (limited to 'python/servo')
-rw-r--r-- | python/servo/build_commands.py | 6 | ||||
-rw-r--r-- | python/servo/command_base.py | 29 | ||||
-rw-r--r-- | python/servo/devenv_commands.py | 11 | ||||
-rw-r--r-- | python/servo/post_build_commands.py | 8 |
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 |