Skip to content

Commit

Permalink
Add magicleap-nightly builder
Browse files Browse the repository at this point in the history
  • Loading branch information
Alan Jeffrey committed Nov 13, 2018
1 parent b1a2b6b commit ef2c2f9
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 6 deletions.
18 changes: 17 additions & 1 deletion etc/ci/buildbot_steps.yml
Expand Up @@ -232,11 +232,27 @@ android-nightly:
magicleap:
env:
MAGICLEAP_SDK: /Users/servo/magicleap/v0.17.0
MLCERT: /Users/servo/magicleap/certs/TempSharedCert.cert
commands:
- ./mach clean-nightlies --keep 3 --force
- ./mach clean-cargo-cache --keep 3 --force
- ./etc/ci/clean_build_artifacts.sh
- ./mach build --magicleap --dev
- env -u OPENSSL_INCLUDE_DIR -u OPENSSL_LIB_DIR ./mach build --magicleap --dev
- ./mach package --magicleap --dev
- bash ./etc/ci/lockfile_changed.sh
- ./etc/ci/clean_build_artifacts.sh

magicleap-nightly:
env:
MAGICLEAP_SDK: /Users/servo/magicleap/v0.17.0
MLCERT: /Users/servo/magicleap/certs/TempSharedCert.cert
commands:
- ./mach clean-nightlies --keep 3 --force
- ./mach clean-cargo-cache --keep 3 --force
- ./etc/ci/clean_build_artifacts.sh
- env -u OPENSSL_INCLUDE_DIR -u OPENSSL_LIB_DIR ./mach build --magicleap --release
- ./mach package --magicleap --release
- ./mach upload-nightly magicleap
- bash ./etc/ci/lockfile_changed.sh
- ./etc/ci/clean_build_artifacts.sh

Expand Down
7 changes: 5 additions & 2 deletions python/servo/command_base.py
Expand Up @@ -353,14 +353,17 @@ def get_apk_path(self, release):
def get_gstreamer_path(self):
return path.join(self.context.topdir, "support", "linux", "gstreamer", "gstreamer")

def get_binary_path(self, release, dev, android=False):
def get_binary_path(self, release, dev, android=False, magicleap=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:
if magicleap:
base_path = path.join(base_path, "aarch64-linux-android")
binary_name = "libmlservo.a"
elif android:
base_path = path.join(base_path, self.config["android"]["target"])
binary_name = "libsimpleservo.so"

Expand Down
38 changes: 35 additions & 3 deletions python/servo/package_commands.py
Expand Up @@ -14,6 +14,7 @@
import json
import os
import os.path as path
import platform
import shutil
import subprocess
import sys
Expand Down Expand Up @@ -55,6 +56,9 @@
'macbrew': [
'target/release/brew/servo.tar.gz',
],
'magicleap': [
'target/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/',
Expand Down Expand Up @@ -196,6 +200,10 @@ class PackageCommands(CommandBase):
default=None,
action='store_true',
help='Package Android')
@CommandArgument('--magicleap',
default=None,
action='store_true',
help='Package Magic Leap')
@CommandArgument('--target', '-t',
default=None,
help='Package for given target platform')
Expand All @@ -206,7 +214,7 @@ class PackageCommands(CommandBase):
default=None,
action='store_true',
help='Create a local Maven repository')
def package(self, release=False, dev=False, android=None, debug=False,
def package(self, release=False, dev=False, android=None, magicleap=None, debug=False,
debugger=None, target=None, flavor=None, maven=False):
if android is None:
android = self.config["build"]["android"]
Expand All @@ -218,10 +226,34 @@ def package(self, release=False, dev=False, android=None, debug=False,
else:
target = self.config["android"]["target"]
env = self.build_env(target=target)
binary_path = self.get_binary_path(release, dev, android=android)
binary_path = self.get_binary_path(release, dev, android=android, magicleap=magicleap)
dir_to_root = self.get_top_dir()
target_dir = path.dirname(binary_path)
if android:
if magicleap:
if platform.system() not in ["Darwin"]:
raise Exception("Magic Leap builds are only supported on macOS.")
if not env.get("MAGICLEAP_SDK"):
raise Exception("Magic Leap builds need the MAGICLEAP_SDK environment variable")
if not env.get("MLCERT"):
raise Exception("Magic Leap builds need the MLCERT environment variable")
mabu = path.join(env.get("MAGICLEAP_SDK"), "mabu")
package = "./support/magicleap/Servo2D/Servo2D.package"
if dev:
build_type = "lumin_debug"
else:
build_type = "lumin_release"
argv = [
mabu,
"-o", target_dir,
"-t", build_type,
package
]
try:
subprocess.check_call(argv, env=env)
except subprocess.CalledProcessError as e:
print("Packaging Magic Leap exited with return value %d" % e.returncode)
return e.returncode
elif android:
android_target = self.config["android"]["target"]
if "aarch64" in android_target:
build_type = "Arm64"
Expand Down

0 comments on commit ef2c2f9

Please sign in to comment.