aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--etc/ci/buildbot_steps.yml18
-rw-r--r--python/servo/command_base.py7
-rw-r--r--python/servo/package_commands.py38
3 files changed, 57 insertions, 6 deletions
diff --git a/etc/ci/buildbot_steps.yml b/etc/ci/buildbot_steps.yml
index 941f9f861d8..2b8e84638b2 100644
--- a/etc/ci/buildbot_steps.yml
+++ b/etc/ci/buildbot_steps.yml
@@ -230,11 +230,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
diff --git a/python/servo/command_base.py b/python/servo/command_base.py
index 3770de6c9cd..e44336c39d1 100644
--- a/python/servo/command_base.py
+++ b/python/servo/command_base.py
@@ -353,14 +353,17 @@ class CommandBase(object):
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"
diff --git a/python/servo/package_commands.py b/python/servo/package_commands.py
index 91ca1628ee3..cbecf880262 100644
--- a/python/servo/package_commands.py
+++ b/python/servo/package_commands.py
@@ -14,6 +14,7 @@ import hashlib
import json
import os
import os.path as path
+import platform
import shutil
import subprocess
import sys
@@ -55,6 +56,9 @@ PACKAGES = {
'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/',
@@ -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')
@@ -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"]
@@ -218,10 +226,34 @@ class PackageCommands(CommandBase):
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"