Auto merge of #22180 - asajeffrey:magicleap-nightly, r=jdm

Package and release the Servo magicleap app

<!-- Please describe your changes on the following line: -->

Package the Magic Leap Servo2D app, and build and release it nightly.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes do not require tests because we don't test ML

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- 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/22180)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2018-11-15 15:34:37 -05:00 committed by GitHub
commit 4620f0b8c8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 57 additions and 6 deletions

View file

@ -230,11 +230,27 @@ android-nightly:
magicleap: magicleap:
env: env:
MAGICLEAP_SDK: /Users/servo/magicleap/v0.17.0 MAGICLEAP_SDK: /Users/servo/magicleap/v0.17.0
MLCERT: /Users/servo/magicleap/certs/TempSharedCert.cert
commands: commands:
- ./mach clean-nightlies --keep 3 --force - ./mach clean-nightlies --keep 3 --force
- ./mach clean-cargo-cache --keep 3 --force - ./mach clean-cargo-cache --keep 3 --force
- ./etc/ci/clean_build_artifacts.sh - ./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 - bash ./etc/ci/lockfile_changed.sh
- ./etc/ci/clean_build_artifacts.sh - ./etc/ci/clean_build_artifacts.sh

View file

@ -353,14 +353,17 @@ class CommandBase(object):
def get_gstreamer_path(self): def get_gstreamer_path(self):
return path.join(self.context.topdir, "support", "linux", "gstreamer", "gstreamer") 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 # TODO(autrilla): this function could still use work - it shouldn't
# handle quitting, or printing. It should return the path, or an error. # handle quitting, or printing. It should return the path, or an error.
base_path = self.get_target_dir() base_path = self.get_target_dir()
binary_name = "servo" + BIN_SUFFIX 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"]) base_path = path.join(base_path, self.config["android"]["target"])
binary_name = "libsimpleservo.so" binary_name = "libsimpleservo.so"

View file

@ -14,6 +14,7 @@ import hashlib
import json import json
import os import os
import os.path as path import os.path as path
import platform
import shutil import shutil
import subprocess import subprocess
import sys import sys
@ -55,6 +56,9 @@ PACKAGES = {
'macbrew': [ 'macbrew': [
'target/release/brew/servo.tar.gz', 'target/release/brew/servo.tar.gz',
], ],
'magicleap': [
'target/aarch64-linux-android/release/Servo2D.mpk',
],
'maven': [ 'maven': [
'target/gradle/servoview/maven/org/mozilla/servoview/servoview-armv7/', 'target/gradle/servoview/maven/org/mozilla/servoview/servoview-armv7/',
'target/gradle/servoview/maven/org/mozilla/servoview/servoview-x86/', 'target/gradle/servoview/maven/org/mozilla/servoview/servoview-x86/',
@ -196,6 +200,10 @@ class PackageCommands(CommandBase):
default=None, default=None,
action='store_true', action='store_true',
help='Package Android') help='Package Android')
@CommandArgument('--magicleap',
default=None,
action='store_true',
help='Package Magic Leap')
@CommandArgument('--target', '-t', @CommandArgument('--target', '-t',
default=None, default=None,
help='Package for given target platform') help='Package for given target platform')
@ -206,7 +214,7 @@ class PackageCommands(CommandBase):
default=None, default=None,
action='store_true', action='store_true',
help='Create a local Maven repository') 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): debugger=None, target=None, flavor=None, maven=False):
if android is None: if android is None:
android = self.config["build"]["android"] android = self.config["build"]["android"]
@ -218,10 +226,34 @@ class PackageCommands(CommandBase):
else: else:
target = self.config["android"]["target"] target = self.config["android"]["target"]
env = self.build_env(target=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() dir_to_root = self.get_top_dir()
target_dir = path.dirname(binary_path) 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"] android_target = self.config["android"]["target"]
if "aarch64" in android_target: if "aarch64" in android_target:
build_type = "Arm64" build_type = "Arm64"