Skip to content

Commit

Permalink
Auto merge of #22277 - servo:android, r=jdm
Browse files Browse the repository at this point in the history
Put every Android build artefact in target/android/

This works around #20380 at the cost of rebuilding build-only dependencies twice,
once for normal builds and once for android builds.

<!-- 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/22277)
<!-- Reviewable:end -->
  • Loading branch information
bors-servo committed Nov 28, 2018
2 parents 3f0643c + 1d86d43 commit eb70e9d
Show file tree
Hide file tree
Showing 9 changed files with 47 additions and 44 deletions.
10 changes: 5 additions & 5 deletions etc/taskcluster/decision_task.py
Expand Up @@ -113,8 +113,8 @@ def android_arm32():
.with_treeherder("Android ARMv7")
.with_script("./mach build --android --release")
.with_artifacts(
"/repo/target/armv7-linux-androideabi/release/servoapp.apk",
"/repo/target/armv7-linux-androideabi/release/servoview.aar",
"/repo/target/android/armv7-linux-androideabi/release/servoapp.apk",
"/repo/target/android/armv7-linux-androideabi/release/servoview.aar",
)
.find_or_create("build.android_armv7_release." + CONFIG.git_sha)
)
Expand All @@ -126,8 +126,8 @@ def android_x86():
.with_treeherder("Android x86")
.with_script("./mach build --target i686-linux-android --release")
.with_artifacts(
"/repo/target/i686-linux-android/release/servoapp.apk",
"/repo/target/i686-linux-android/release/servoview.aar",
"/repo/target/android/i686-linux-android/release/servoapp.apk",
"/repo/target/android/i686-linux-android/release/servoview.aar",
)
.find_or_create("build.android_x86_release." + CONFIG.git_sha)
)
Expand All @@ -140,7 +140,7 @@ def android_x86():
.with_scopes("project:servo:docker-worker-kvm:capability:privileged")
.with_dockerfile(dockerfile_path("run-android-emulator"))
.with_repo()
.with_curl_artifact_script(build_task, "servoapp.apk", "target/i686-linux-android/release")
.with_curl_artifact_script(build_task, "servoapp.apk", "target/android/i686-linux-android/release")
.with_script("""
./mach bootstrap-android --accept-all-licences --emulator-x86
./mach test-android-startup --release
Expand Down
44 changes: 25 additions & 19 deletions python/servo/build_commands.py
Expand Up @@ -207,7 +207,26 @@ def build(self, target=None, release=False, dev=False, jobs=None,
android = self.config["build"]["android"]
features = features or self.servo_features()

base_path = self.get_target_dir()
if target and android:
print("Please specify either --target or --android.")
sys.exit(1)

if android:
target = self.config["android"]["target"]

if not magicleap:
features += ["native-bluetooth"]

if magicleap and not target:
target = "aarch64-linux-android"

target_path = base_path = self.get_target_dir()
if android:
target_path = path.join(target_path, "android")
base_path = path.join(target_path, target)
elif magicleap:
target_path = path.join(target_path, "magicleap")
base_path = path.join(target_path, target)
release_path = path.join(base_path, "release", "servo")
dev_path = path.join(base_path, "debug", "servo")

Expand All @@ -232,10 +251,6 @@ def build(self, target=None, release=False, dev=False, jobs=None,
print("Please specify either --dev or --release.")
sys.exit(1)

if target and android:
print("Please specify either --target or --android.")
sys.exit(1)

if release:
opts += ["--release"]
servo_path = release_path
Expand All @@ -249,15 +264,6 @@ def build(self, target=None, release=False, dev=False, jobs=None,
if very_verbose:
opts += ["-vv"]

if android:
target = self.config["android"]["target"]

if not magicleap:
features += ["native-bluetooth"]

if magicleap and not target:
target = "aarch64-linux-android"

if target:
if self.config["tools"]["use-rustup"]:
# 'rustup target add' fails if the toolchain is not installed at all.
Expand Down Expand Up @@ -288,6 +294,7 @@ def build(self, target=None, release=False, dev=False, jobs=None,

build_start = time()
env = self.build_env(target=target, is_build=True)
env["CARGO_TARGET_DIR"] = target_path

if with_debug_assertions:
env['RUSTFLAGS'] = env.get('RUSTFLAGS', "") + " -C debug_assertions"
Expand All @@ -314,8 +321,7 @@ def build(self, target=None, release=False, dev=False, jobs=None,
make_cmd = ["make"]
if jobs is not None:
make_cmd += ["-j" + jobs]
android_dir = self.android_build_dir(dev)
openssl_dir = path.join(android_dir, "native", "openssl")
openssl_dir = path.join(target_path, target, "native", "openssl")
if not path.exists(openssl_dir):
os.makedirs(openssl_dir)
shutil.copy(path.join(self.android_support_dir(), "openssl.makefile"), openssl_dir)
Expand Down Expand Up @@ -435,8 +441,8 @@ def build(self, target=None, release=False, dev=False, jobs=None,
# according to the build target.
gst_lib = "gst-build-{}".format(self.config["android"]["lib"])
gst_lib_zip = "gstreamer-{}-1.14.3-20181105-103937.zip".format(self.config["android"]["lib"])
gst_dir = os.path.join(base_path, "gstreamer")
gst_lib_path = os.path.join(base_path, gst_dir, gst_lib)
gst_dir = os.path.join(target_path, "gstreamer")
gst_lib_path = os.path.join(gst_dir, gst_lib)
pkg_config_path = os.path.join(gst_lib_path, "pkgconfig")
env["PKG_CONFIG_PATH"] = pkg_config_path
if not os.path.exists(gst_lib_path):
Expand Down Expand Up @@ -529,7 +535,7 @@ def build(self, target=None, release=False, dev=False, jobs=None,
env.setdefault("CMAKE_TOOLCHAIN_FILE", path.join(ml_support, "toolchain.cmake"))

# The Open SSL configuration
env.setdefault("OPENSSL_DIR", path.join(self.get_target_dir(), target, "magicleap", "openssl"))
env.setdefault("OPENSSL_DIR", path.join(target_path, target, "native", "openssl"))
env.setdefault("OPENSSL_VERSION", "1.0.2k")
env.setdefault("OPENSSL_STATIC", "1")

Expand Down
11 changes: 4 additions & 7 deletions python/servo/command_base.py
Expand Up @@ -345,7 +345,7 @@ def get_target_dir(self):

def get_apk_path(self, release):
base_path = self.get_target_dir()
base_path = path.join(base_path, self.config["android"]["target"])
base_path = path.join(base_path, "android", self.config["android"]["target"])
apk_name = "servoapp.apk"
build_type = "release" if release else "debug"
return path.join(base_path, build_type, apk_name)
Expand All @@ -361,10 +361,10 @@ def get_binary_path(self, release, dev, android=False, magicleap=False):
binary_name = "servo" + BIN_SUFFIX

if magicleap:
base_path = path.join(base_path, "aarch64-linux-android")
base_path = path.join(base_path, "magicleap", "aarch64-linux-android")
binary_name = "libmlservo.a"
elif android:
base_path = path.join(base_path, self.config["android"]["target"])
base_path = path.join(base_path, "android", self.config["android"]["target"])
binary_name = "libsimpleservo.so"

release_path = path.join(base_path, "release", binary_name)
Expand Down Expand Up @@ -700,11 +700,8 @@ def servo_features(self):
def android_support_dir(self):
return path.join(self.context.topdir, "support", "android")

def android_build_dir(self, dev):
return path.join(self.get_target_dir(), self.config["android"]["target"], "debug" if dev else "release")

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:
Expand Down
12 changes: 6 additions & 6 deletions python/servo/package_commands.py
Expand Up @@ -44,8 +44,8 @@

PACKAGES = {
'android': [
'target/armv7-linux-androideabi/release/servoapp.apk',
'target/armv7-linux-androideabi/release/servoview.aar',
'target/android/armv7-linux-androideabi/release/servoapp.apk',
'target/android/armv7-linux-androideabi/release/servoview.aar',
],
'linux': [
'target/release/servo-tech-demo.tar.gz',
Expand All @@ -57,11 +57,11 @@
'target/release/brew/servo.tar.gz',
],
'magicleap': [
'target/aarch64-linux-android/release/Servo2D.mpk',
'target/magicleap/aarch64-linux-android/release/Servo2D.mpk',
],
'maven': [
'target/gradle/servoview/maven/org/mozilla/servoview/servoview-armv7/',
'target/gradle/servoview/maven/org/mozilla/servoview/servoview-x86/',
'target/android/gradle/servoview/maven/org/mozilla/servoview/servoview-armv7/',
'target/android/gradle/servoview/maven/org/mozilla/servoview/servoview-x86/',
],
'windows-msvc': [
r'target\release\msi\Servo.exe',
Expand Down Expand Up @@ -578,7 +578,7 @@ def update_maven(directory):
BUCKET = 'servo-builds'

nightly_dir = 'nightly/maven'
dest_key_base = directory.replace("target/gradle/servoview/maven", nightly_dir)
dest_key_base = directory.replace("target/android/gradle/servoview/maven", nightly_dir)
if dest_key_base[-1] == '/':
dest_key_base = dest_key_base[:-1]

Expand Down
4 changes: 2 additions & 2 deletions support/android/apk/build.gradle
Expand Up @@ -14,7 +14,7 @@ allprojects {
repositories {
jcenter()
flatDir {
dirs rootDir.absolutePath + "/../../../target/android_aar"
dirs rootDir.absolutePath + "/../../../target/android/aar"
}
google()
}
Expand All @@ -23,7 +23,7 @@ allprojects {
// Utility methods
String getTargetDir(boolean debug, String arch) {
def basePath = project.rootDir.getParentFile().getParentFile().getParentFile().absolutePath
return basePath + '/target/' + getSubTargetDir(debug, arch)
return basePath + '/target/android/' + getSubTargetDir(debug, arch)
}

String getSubTargetDir(boolean debug, String arch) {
Expand Down
2 changes: 1 addition & 1 deletion support/android/apk/servoapp/build.gradle
Expand Up @@ -7,7 +7,7 @@ android {
compileSdkVersion 27
buildToolsVersion '27.0.3'

buildDir = rootDir.absolutePath + "/../../../target/gradle/servoapp"
buildDir = rootDir.absolutePath + "/../../../target/android/gradle/servoapp"

defaultConfig {
applicationId "org.mozilla.servo"
Expand Down
2 changes: 1 addition & 1 deletion support/android/apk/servoview/build.gradle
Expand Up @@ -8,7 +8,7 @@ android {
compileSdkVersion 27
buildToolsVersion '27.0.3'

buildDir = rootDir.absolutePath + "/../../../target/gradle/servoview"
buildDir = rootDir.absolutePath + "/../../../target/android/gradle/servoview"

defaultConfig {
minSdkVersion 18
Expand Down
2 changes: 1 addition & 1 deletion support/magicleap/README.md
Expand Up @@ -16,7 +16,7 @@ Build the mlservo library:
```
MAGICLEAP_SDK=*directory* ./mach build -d --magicleap
```
This builds a static library `target/aarch64-linux-android/debug/libmlservo.a`.
This builds a static library `target/magicleap/aarch64-linux-android/debug/libmlservo.a`.

## Building the Servo2D application

Expand Down
4 changes: 2 additions & 2 deletions support/magicleap/Servo2D/Servo2D.mabu
Expand Up @@ -9,10 +9,10 @@ SRCS = \
code/src/Servo2D.cpp

LIBPATHS.debug = \
../../../target/aarch64-linux-android/debug
../../../target/magicleap/aarch64-linux-android/debug

LIBPATHS.release = \
../../../target/aarch64-linux-android/release
../../../target/magicleap/aarch64-linux-android/release

STLIBS = \
mlservo
Expand Down

0 comments on commit eb70e9d

Please sign in to comment.