Permalink
Browse files

Add `--build` and `--emulator-x86` to `./mach bootstrap-android`

This allows not downloading dependencies that are not needed for a praticular task.
  • Loading branch information...
SimonSapin committed Oct 11, 2018
1 parent 597f7c1 commit 89e1878bd6dcc7f7304abbf385ca4a76356b6313
View
@@ -249,7 +249,7 @@ linker = "lld-link.exe"
#### Cross-compilation for Android
Run `./mach bootstrap-android` to get Android-specific tools. See wiki for
Run `./mach bootstrap-android --build` to get Android-specific tools. See wiki for
[details](https://github.com/servo/servo/wiki/Building-for-Android).
## The Rust compiler
@@ -14,4 +14,4 @@ set -o pipefail
set +o pipefail
cd $(dirname ${0})/../..
yes | ./mach bootstrap-android
yes | ./mach bootstrap-android "${@}"
@@ -180,7 +180,7 @@ android:
- ./mach clean-nightlies --keep 3 --force
- ./mach clean-cargo-cache --keep 3 --force
- ./etc/ci/clean_build_artifacts.sh
- ./etc/ci/bootstrap-android-and-accept-licences.sh
- ./etc/ci/bootstrap-android-and-accept-licences.sh --build
- env --unset ANDROID_NDK --unset ANDROID_SDK ./mach build --android --dev
- env --unset ANDROID_NDK --unset ANDROID_SDK ./mach package --android --dev
- bash ./etc/ci/lockfile_changed.sh
@@ -191,7 +191,7 @@ android-mac:
commands:
- ./mach clean-nightlies --keep 3 --force
- ./mach clean-cargo-cache --keep 3 --force
- ./etc/ci/bootstrap-android-and-accept-licences.sh
- ./etc/ci/bootstrap-android-and-accept-licences.sh --build
- ./mach build --android --dev
- ./mach package --android --dev
- bash ./etc/ci/lockfile_changed.sh
@@ -205,7 +205,7 @@ android-x86:
- ./mach clean-nightlies --keep 3 --force
- ./mach clean-cargo-cache --keep 3 --force
- ./etc/ci/clean_build_artifacts.sh
- ./etc/ci/bootstrap-android-and-accept-licences.sh
- ./etc/ci/bootstrap-android-and-accept-licences.sh --build --emulator-x86
- env --unset ANDROID_NDK --unset ANDROID_SDK ./mach build --target i686-linux-android --release
- env --unset ANDROID_NDK --unset ANDROID_SDK ./mach test-android-startup --release
- env --unset ANDROID_NDK --unset ANDROID_SDK ./mach test-wpt-android --release /_mozilla/mozilla/DOMParser.html /_mozilla/mozilla/webgl/context_creation_error.html
@@ -220,7 +220,7 @@ android-nightly:
- ./mach clean-nightlies --keep 3 --force
- ./mach clean-cargo-cache --keep 3 --force
- ./etc/ci/clean_build_artifacts.sh
- ./etc/ci/bootstrap-android-and-accept-licences.sh
- ./etc/ci/bootstrap-android-and-accept-licences.sh --build
- env --unset ANDROID_NDK --unset ANDROID_SDK ./mach build --android --release
- env --unset ANDROID_NDK --unset ANDROID_SDK ./mach package --android --release --maven
- env --unset ANDROID_NDK --unset ANDROID_SDK ./mach build --target=i686-linux-android --release
@@ -87,7 +87,7 @@ def android_arm32():
# wget: servo-media-gstreamer’s build script
.with_script("""
apt-get install -y --no-install-recommends openjdk-8-jdk-headless file wget
./etc/ci/bootstrap-android-and-accept-licences.sh
yes | ./mach bootstrap-android --build
./mach build --android --release
""")
.with_artifacts(
@@ -79,16 +79,21 @@ def bootstrap_gstreamer(self, force=False):
@Command('bootstrap-android',
description='Install the Android SDK and NDK.',
category='bootstrap')
def bootstrap_android(self):
@CommandArgument('--build',
action='store_true',
help='Install Android-specific dependencies for building')
@CommandArgument('--emulator-x86',
action='store_true',
help='Install Android x86 emulator and system image')
def bootstrap_android(self, build=False, emulator_x86=False):
if not (build or emulator_x86):
print("Must specify `--build` or `--emulator-x86` or both.")
ndk = "android-ndk-r12b-{system}-{arch}"
tools = "sdk-tools-{system}-4333796"
sdk_build_tools = "27.0.3"
emulator_images = [
("servo-arm", "25", "google_apis;armeabi-v7a"),
("servo-x86", "28", "google_apis;x86"),
]
emulator_platform = "android-28"
emulator_image = "system-images;%s;google_apis;x86" % emulator_platform
known_sha1 = {
# https://dl.google.com/android/repository/repository2-1.xml
@@ -135,29 +140,34 @@ def download(target_dir, name, flatten=False):
system = platform.system().lower()
machine = platform.machine().lower()
arch = {"i386": "x86"}.get(machine, machine)
download("ndk", ndk.format(system=system, arch=arch), flatten=True)
if build:
download("ndk", ndk.format(system=system, arch=arch), flatten=True)
download("sdk", tools.format(system=system))
subprocess.check_call([
path.join(toolchains, "sdk", "tools", "bin", "sdkmanager"),
"platform-tools",
"build-tools;" + sdk_build_tools,
"emulator",
] + [
arg
for avd_name, api_level, system_image in emulator_images
for arg in [
"platforms;android-" + api_level,
"system-images;android-%s;%s" % (api_level, system_image),
components = []
if emulator_x86:
components += [
"platform-tools",
"emulator",
"platforms;" + emulator_platform,
emulator_image,
]
])
for avd_name, api_level, system_image in emulator_images:
if build:
components += [
"platforms;android-18",
]
subprocess.check_call(
[path.join(toolchains, "sdk", "tools", "bin", "sdkmanager")] + components
)
if emulator_x86:
avd_path = path.join(toolchains, "avd", "servo-x86")
process = subprocess.Popen(stdin=subprocess.PIPE, stdout=subprocess.PIPE, args=[
path.join(toolchains, "sdk", "tools", "bin", "avdmanager"),
"create", "avd",
"--path", path.join(toolchains, "avd", avd_name),
"--name", avd_name,
"--package", "system-images;android-%s;%s" % (api_level, system_image),
"--path", avd_path,
"--name", "servo-x86",
"--package", emulator_image,
"--force",
])
output = b""
@@ -175,7 +185,7 @@ def download(target_dir, name, flatten=False):
if output.endswith(b"Do you wish to create a custom hardware profile? [no]"):
process.stdin.write("no\n")
assert process.wait() == 0
with open(path.join(toolchains, "avd", avd_name, "config.ini"), "a") as f:
with open(path.join(avd_path, "config.ini"), "a") as f:
f.write("disk.dataPartition.size=2G\n")
@Command('update-hsts-preload',

0 comments on commit 89e1878

Please sign in to comment.