mirror of
https://github.com/servo/servo.git
synced 2025-06-29 11:33:39 +01:00
new android port: fix android build and tests
This commit is contained in:
parent
76d394eca8
commit
bef2fe83cd
9 changed files with 43 additions and 39 deletions
|
@ -185,7 +185,6 @@ class MachCommands(CommandBase):
|
|||
debug_mozjs=False, params=None, with_debug_assertions=False):
|
||||
|
||||
opts = params or []
|
||||
opts += ["--manifest-path", self.servo_manifest()]
|
||||
|
||||
if android is None:
|
||||
android = self.config["build"]["android"]
|
||||
|
@ -420,4 +419,4 @@ class MachCommands(CommandBase):
|
|||
opts += ["-v"]
|
||||
opts += params
|
||||
return check_call(["cargo", "clean"] + opts,
|
||||
env=self.build_env(), cwd=self.servo_crate(), verbose=verbose)
|
||||
env=self.build_env(), cwd=self.ports_servo_crate(), verbose=verbose)
|
||||
|
|
|
@ -330,15 +330,24 @@ class CommandBase(object):
|
|||
else:
|
||||
return path.join(self.context.topdir, "target")
|
||||
|
||||
def get_apk_path(self, release):
|
||||
base_path = self.get_target_dir()
|
||||
base_path = path.join(base_path, self.config["android"]["target"])
|
||||
apk_name = "servo.apk"
|
||||
build_type = "release" if release else "debug"
|
||||
return path.join(base_path, build_type, apk_name)
|
||||
|
||||
def get_binary_path(self, release, dev, android=False):
|
||||
# TODO(autrilla): this function could still use work - it shouldn't
|
||||
# handle quitting, or printing. It should return the path, or an error.
|
||||
base_path = self.get_target_dir()
|
||||
|
||||
binary_name = "servo" + BIN_SUFFIX
|
||||
|
||||
if android:
|
||||
base_path = path.join(base_path, self.config["android"]["target"])
|
||||
binary_name = "libsimpleservo.so"
|
||||
|
||||
binary_name = "servo" + BIN_SUFFIX
|
||||
release_path = path.join(base_path, "release", binary_name)
|
||||
dev_path = path.join(base_path, "debug", binary_name)
|
||||
|
||||
|
@ -594,10 +603,10 @@ class CommandBase(object):
|
|||
|
||||
return env
|
||||
|
||||
def servo_crate(self):
|
||||
def ports_servo_crate(self):
|
||||
return path.join(self.context.topdir, "ports", "servo")
|
||||
|
||||
def servo_manifest(self):
|
||||
def ports_servo_manifest(self):
|
||||
return path.join(self.context.topdir, "ports", "servo", "Cargo.toml")
|
||||
|
||||
def servo_features(self):
|
||||
|
|
|
@ -421,7 +421,7 @@ class PackageCommands(CommandBase):
|
|||
return 1
|
||||
|
||||
if android:
|
||||
pkg_path = binary_path + ".apk"
|
||||
pkg_path = self.get_apk_path(release)
|
||||
exec_command = [self.android_adb_path(env)]
|
||||
if emulator and usb:
|
||||
print("Cannot install to both emulator and USB at the same time.")
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
import json
|
||||
import os
|
||||
import os.path as path
|
||||
import subprocess
|
||||
|
@ -34,6 +35,13 @@ def read_file(filename, if_exists=False):
|
|||
return f.read()
|
||||
|
||||
|
||||
# Copied from Python 3.3+'s shlex.quote()
|
||||
def shell_quote(arg):
|
||||
# use single quotes, and put single quotes into double quotes
|
||||
# the string $'b is then quoted as '$'"'"'b'
|
||||
return "'" + arg.replace("'", "'\"'\"'") + "'"
|
||||
|
||||
|
||||
@CommandProvider
|
||||
class PostBuildCommands(CommandBase):
|
||||
@Command('run',
|
||||
|
@ -88,15 +96,11 @@ class PostBuildCommands(CommandBase):
|
|||
return
|
||||
script = [
|
||||
"am force-stop com.mozilla.servo",
|
||||
"echo servo >/sdcard/Android/data/com.mozilla.servo/files/android_params"
|
||||
]
|
||||
for param in params:
|
||||
script += [
|
||||
"echo '%s' >>/sdcard/Android/data/com.mozilla.servo/files/android_params"
|
||||
% param.replace("'", "\\'")
|
||||
]
|
||||
json_params = shell_quote(json.dumps(params))
|
||||
extra = "-e servoargs " + json_params
|
||||
script += [
|
||||
"am start com.mozilla.servo/com.mozilla.servo.MainActivity",
|
||||
"am start " + extra + " com.mozilla.servo/com.mozilla.servo.MainActivity",
|
||||
"sleep 0.5",
|
||||
"echo Servo PID: $(pidof com.mozilla.servo)",
|
||||
"exit"
|
||||
|
@ -257,7 +261,7 @@ class PostBuildCommands(CommandBase):
|
|||
copy2(full_name, destination)
|
||||
|
||||
return self.call_rustup_run(
|
||||
["cargo", "doc", "--manifest-path", self.servo_manifest()] + params,
|
||||
["cargo", "doc", "--manifest-path", self.ports_servo_manifest()] + params,
|
||||
env=self.build_env()
|
||||
)
|
||||
|
||||
|
|
|
@ -278,7 +278,7 @@ class MachCommands(CommandBase):
|
|||
|
||||
features = self.servo_features()
|
||||
if len(packages) > 0 or len(in_crate_packages) > 0:
|
||||
args = ["cargo", "bench" if bench else "test", "--manifest-path", self.servo_manifest()]
|
||||
args = ["cargo", "bench" if bench else "test", "--manifest-path", self.ports_servo_manifest()]
|
||||
for crate in packages:
|
||||
args += ["-p", "%s_tests" % crate]
|
||||
for crate in in_crate_packages:
|
||||
|
@ -576,7 +576,7 @@ class MachCommands(CommandBase):
|
|||
def test_android_startup(self, release, dev):
|
||||
html = """
|
||||
<script>
|
||||
console.log("JavaScript is running!")
|
||||
window.alert("JavaScript is running!")
|
||||
</script>
|
||||
"""
|
||||
url = "data:text/html;base64," + html.encode("base64").replace("\n", "")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue