diff options
Diffstat (limited to 'python')
-rw-r--r-- | python/servo/build_commands.py | 7 | ||||
-rw-r--r-- | python/servo/command_base.py | 3 | ||||
-rw-r--r-- | python/servo/post_build_commands.py | 38 |
3 files changed, 38 insertions, 10 deletions
diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py index 9b5b3e4e11a..ad901ba0fd4 100644 --- a/python/servo/build_commands.py +++ b/python/servo/build_commands.py @@ -198,13 +198,6 @@ class MachCommands(CommandBase): if verbose: opts += ["-v"] if android: - # Ensure the APK builder submodule has been built first - apk_builder_dir = "support/android-rs-glue" - with cd(path.join(apk_builder_dir, "apk-builder")): - status = call(["cargo", "build"], env=self.build_env(), verbose=verbose) - if status: - return status - opts += ["--target", "arm-linux-androideabi"] if debug_mozjs or self.config["build"]["debug-mozjs"]: diff --git a/python/servo/command_base.py b/python/servo/command_base.py index 4de1caf5f71..14f8dff0c6f 100644 --- a/python/servo/command_base.py +++ b/python/servo/command_base.py @@ -135,6 +135,9 @@ class CommandBase(object): self._cargo_build_id = f.read().strip() return self._cargo_build_id + def get_top_dir(self): + return self.context.topdir + def get_target_dir(self): if "CARGO_TARGET_DIR" in os.environ: return os.environ["CARGO_TARGET_DIR"] diff --git a/python/servo/post_build_commands.py b/python/servo/post_build_commands.py index efa315158f8..6e59895f956 100644 --- a/python/servo/post_build_commands.py +++ b/python/servo/post_build_commands.py @@ -22,7 +22,7 @@ from mach.decorators import ( Command, ) -from servo.command_base import CommandBase +from servo.command_base import CommandBase, cd def read_file(filename, if_exists=False): @@ -33,8 +33,7 @@ def read_file(filename, if_exists=False): @CommandProvider -class MachCommands(CommandBase): - +class PostBuildCommands(CommandBase): @Command('run', description='Run Servo', category='post-build') @@ -167,3 +166,36 @@ class MachCommands(CommandBase): import webbrowser webbrowser.open("file://" + path.abspath(path.join( self.get_target_dir(), "doc", "servo", "index.html"))) + + @Command('package', + description='Package Servo (currently, Android APK only)', + category='post-build') + @CommandArgument('--release', '-r', action='store_true', + help='Package the release build') + @CommandArgument('--dev', '-d', action='store_true', + help='Package the dev build') + @CommandArgument( + 'params', nargs='...', + help="Command-line arguments to be passed through to Servo") + def package(self, params, release=False, dev=False, debug=False, debugger=None): + env = self.build_env() + target_dir = path.join(self.get_target_dir(), "arm-linux-androideabi") + dev_flag = "" + + if dev: + env["NDK_DEBUG"] = "1" + env["ANT_FLAVOR"] = "debug" + dev_flag = "-d" + target_dir = path.join(target_dir, "debug") + else: + env["ANT_FLAVOR"] = "release" + target_dir = path.join(target_dir, "release") + + output_apk = path.join(target_dir, "servo.apk") + try: + with cd(path.join("support", "android", "build-apk")): + subprocess.check_call(["cargo", "run", "--", dev_flag, "-o", output_apk, "-t", target_dir, + "-r", self.get_top_dir()], env=env) + except subprocess.CalledProcessError as e: + print("Packaging Android exited with return value %d" % e.returncode) + return e.returncode |