Make APPX build part of package command. Add nightly build for UWP.

This commit is contained in:
Josh Matthews 2019-09-05 11:54:09 -04:00
parent 2b31c0a644
commit c1f9dfda25
7 changed files with 157 additions and 125 deletions

View file

@ -67,6 +67,9 @@ PACKAGES = {
r'target\release\msi\Servo.exe',
r'target\release\msi\Servo.zip',
],
'uwp': [
r'support\hololens\AppPackages\ServoApp\ServoApp_1.0.0.0_Test\ServoApp_1.0.0.0_x64_arm64.appxbundle',
],
}
@ -202,8 +205,12 @@ class PackageCommands(CommandBase):
default=None,
action='store_true',
help='Create a local Maven repository')
@CommandArgument('--uwp',
default=None,
action='append',
help='Create an APPX package')
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, uwp=None):
if android is None:
android = self.config["build"]["android"]
if target and android:
@ -219,10 +226,16 @@ class PackageCommands(CommandBase):
if magicleap:
target = "aarch64-linux-android"
env = self.build_env(target=target)
binary_path = self.get_binary_path(release, dev, target=target, android=android, magicleap=magicleap)
binary_path = self.get_binary_path(
release, dev, target=target, android=android, magicleap=magicleap,
simpleservo=uwp is not None
)
dir_to_root = self.get_top_dir()
target_dir = path.dirname(binary_path)
if magicleap:
if uwp:
vs_info = self.vs_dirs()
build_uwp(uwp, dev, vs_info['msbuild'])
elif magicleap:
if platform.system() not in ["Darwin"]:
raise Exception("Magic Leap builds are only supported on macOS.")
if not env.get("MAGICLEAP_SDK"):
@ -724,3 +737,32 @@ class PackageCommands(CommandBase):
update_brew(packages[0], timestamp)
return 0
def build_uwp(platforms, dev, msbuild_dir):
if any(map(lambda p: p not in ['x64', 'x86', 'arm64'], platforms)):
raise Exception("Unsupported appx platforms: " + str(platforms))
if dev and len(platforms) > 1:
raise Exception("Debug package with multiple architectures is unsupported")
if dev:
Configuration = "Debug"
else:
Configuration = "Release"
msbuild = path.join(msbuild_dir, "msbuild.exe")
build_file_template = path.join('support', 'hololens', 'package.msbuild')
with open(build_file_template) as f:
template_contents = f.read()
build_file = tempfile.NamedTemporaryFile(delete=False)
build_file.write(
template_contents
.replace("%%BUILD_PLATFORMS%%", ';'.join(platforms))
.replace("%%PACKAGE_PLATFORMS%%", '|'.join(platforms))
.replace("%%CONFIGURATION%%", Configuration)
.replace("%%SOLUTION%%", path.join(os.getcwd(), 'support', 'hololens', 'ServoApp.sln'))
)
build_file.close()
# Generate an appxbundle.
subprocess.check_call([msbuild, "/m", build_file.name])
os.unlink(build_file.name)