From c1f9dfda254ebb2b1a38adf81baa45f4654c357f Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Thu, 5 Sep 2019 11:54:09 -0400 Subject: Make APPX build part of package command. Add nightly build for UWP. --- python/servo/package_commands.py | 48 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 3 deletions(-) (limited to 'python/servo/package_commands.py') diff --git a/python/servo/package_commands.py b/python/servo/package_commands.py index 3e14876e29a..d8dbc49b117 100644 --- a/python/servo/package_commands.py +++ b/python/servo/package_commands.py @@ -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) -- cgit v1.2.3