aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo/package_commands.py
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2019-09-05 11:54:09 -0400
committerJosh Matthews <josh@joshmatthews.net>2019-09-12 23:27:38 -0400
commitc1f9dfda254ebb2b1a38adf81baa45f4654c357f (patch)
tree6821c9ca2ad2665b078fe4bf4e5b512f6fd57feb /python/servo/package_commands.py
parent2b31c0a64478cb2c15038151d147673a2b51896c (diff)
downloadservo-c1f9dfda254ebb2b1a38adf81baa45f4654c357f.tar.gz
servo-c1f9dfda254ebb2b1a38adf81baa45f4654c357f.zip
Make APPX build part of package command. Add nightly build for UWP.
Diffstat (limited to 'python/servo/package_commands.py')
-rw-r--r--python/servo/package_commands.py48
1 files changed, 45 insertions, 3 deletions
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)