diff options
-rw-r--r-- | etc/ci/buildbot_steps.yml | 18 | ||||
-rw-r--r-- | python/servo/command_base.py | 7 | ||||
-rw-r--r-- | python/servo/package_commands.py | 38 |
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" |