Auto merge of #20421 - talklittle:issue-20219, r=jdm

mach: android install/run: infer adb path from SDK dir

<!-- Please describe your changes on the following line: -->
Infer Android `adb` path from SDK directory in environment variables.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #20219 (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because it is a build script change

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20421)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2018-06-19 16:37:16 -04:00 committed by GitHub
commit c2d3f2a40f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 3 deletions

View file

@ -606,6 +606,13 @@ class CommandBase(object):
def android_aar_dir(self): def android_aar_dir(self):
return path.join(self.context.topdir, "target", "android_aar") return path.join(self.context.topdir, "target", "android_aar")
def android_adb_path(self, env):
if "ANDROID_SDK" in env:
sdk_adb = path.join(env["ANDROID_SDK"], "platform-tools", "adb")
if path.exists(sdk_adb):
return sdk_adb
return "adb"
def handle_android_target(self, target): def handle_android_target(self, target):
if target == "arm-linux-androideabi": if target == "arm-linux-androideabi":
self.config["android"]["platform"] = "android-18" self.config["android"]["platform"] = "android-18"

View file

@ -393,6 +393,7 @@ class PackageCommands(CommandBase):
default=None, default=None,
help='Install the given target platform') help='Install the given target platform')
def install(self, release=False, dev=False, android=False, target=None): def install(self, release=False, dev=False, android=False, target=None):
env = self.build_env()
if target and android: if target and android:
print("Please specify either --target or --android.") print("Please specify either --target or --android.")
sys.exit(1) sys.exit(1)
@ -415,7 +416,7 @@ class PackageCommands(CommandBase):
if android: if android:
pkg_path = binary_path + ".apk" pkg_path = binary_path + ".apk"
exec_command = ["adb", "install", "-r", pkg_path] exec_command = [self.android_adb_path(env), "install", "-r", pkg_path]
elif is_windows(): elif is_windows():
pkg_path = path.join(path.dirname(binary_path), 'msi', 'Servo.msi') pkg_path = path.join(path.dirname(binary_path), 'msi', 'Servo.msi')
exec_command = ["msiexec", "/i", pkg_path] exec_command = ["msiexec", "/i", pkg_path]
@ -428,7 +429,7 @@ class PackageCommands(CommandBase):
return result return result
print(" ".join(exec_command)) print(" ".join(exec_command))
return subprocess.call(exec_command, env=self.build_env()) return subprocess.call(exec_command, env=env)
@Command('upload-nightly', @Command('upload-nightly',
description='Upload Servo nightly to S3', description='Upload Servo nightly to S3',

View file

@ -93,7 +93,7 @@ class PostBuildCommands(CommandBase):
"am start com.mozilla.servo/com.mozilla.servo.MainActivity", "am start com.mozilla.servo/com.mozilla.servo.MainActivity",
"exit" "exit"
] ]
shell = subprocess.Popen(["adb", "shell"], stdin=subprocess.PIPE) shell = subprocess.Popen([self.android_adb_path(env), "shell"], stdin=subprocess.PIPE)
shell.communicate("\n".join(script) + "\n") shell.communicate("\n".join(script) + "\n")
return shell.wait() return shell.wait()