aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUK992 <urbankrajnc92@gmail.com>2017-01-06 03:21:49 +0100
committerUK992 <urbankrajnc92@gmail.com>2017-01-06 03:30:29 +0100
commit7048a2f81d4f6af77f8fe73752f34bc0eeed567a (patch)
treea3449a539f6fce8b211715ca85fd51e1a1d055c7
parentf8389443323805481f753ab4b10762b72d56dcd4 (diff)
downloadservo-7048a2f81d4f6af77f8fe73752f34bc0eeed567a.tar.gz
servo-7048a2f81d4f6af77f8fe73752f34bc0eeed567a.zip
Package: Create ZIP on Windows
-rw-r--r--python/servo/package_commands.py48
-rw-r--r--support/windows/Servo.wxs.mako41
2 files changed, 49 insertions, 40 deletions
diff --git a/python/servo/package_commands.py b/python/servo/package_commands.py
index 1c31c9fddd0..33208434959 100644
--- a/python/servo/package_commands.py
+++ b/python/servo/package_commands.py
@@ -106,6 +106,32 @@ def copy_dependencies(binary_path, lib_path):
need_checked.difference_update(checked)
+def copy_windows_dependencies(binary_path, destination):
+ try:
+ [shutil.copy(path.join(binary_path, d), destination) for d in ["libeay32md.dll", "ssleay32md.dll"]]
+ except:
+ deps = [
+ "libstdc++-6.dll",
+ "libwinpthread-1.dll",
+ "libbz2-1.dll",
+ "libgcc_s_seh-1.dll",
+ "libexpat-1.dll",
+ "zlib1.dll",
+ "libpng16-16.dll",
+ "libiconv-2.dll",
+ "libglib-2.0-0.dll",
+ "libgraphite2.dll",
+ "libfreetype-6.dll",
+ "libfontconfig-1.dll",
+ "libintl-8.dll",
+ "libpcre-1.dll",
+ "libeay32.dll",
+ "ssleay32.dll",
+ "libharfbuzz-0.dll",
+ ]
+ [shutil.copy(path.join("C:\\msys64\\mingw64\\bin", d), path.join(destination, d)) for d in deps]
+
+
def change_prefs(resources_path, platform):
print("Swapping prefs")
prefs_path = path.join(resources_path, "prefs.json")
@@ -264,8 +290,14 @@ class PackageCommands(CommandBase):
browserhtml_path = get_browserhtml_path(binary_path)
print("Copying files")
- dir_to_resources = path.join(dir_to_msi, 'resources')
+ dir_to_temp = path.join(dir_to_msi, 'temp')
+ dir_to_temp_servo = path.join(dir_to_temp, 'servo')
+ dir_to_resources = path.join(dir_to_temp_servo, 'resources')
shutil.copytree(path.join(dir_to_root, 'resources'), dir_to_resources)
+ shutil.copytree(browserhtml_path, path.join(dir_to_temp_servo, 'browserhtml'))
+ shutil.copy(binary_path, dir_to_temp_servo)
+ shutil.copy("{}.manifest".format(binary_path), dir_to_temp_servo)
+ copy_windows_dependencies(target_dir, dir_to_temp_servo)
change_prefs(dir_to_resources, "windows")
@@ -275,8 +307,8 @@ class PackageCommands(CommandBase):
wxs_path = path.join(dir_to_msi, "Servo.wxs")
open(wxs_path, "w").write(template.render(
exe_path=target_dir,
- resources_path=dir_to_resources,
- browserhtml_path=browserhtml_path))
+ dir_to_temp=dir_to_temp_servo,
+ resources_path=dir_to_resources))
# run candle and light
print("Creating MSI")
@@ -293,8 +325,14 @@ class PackageCommands(CommandBase):
except subprocess.CalledProcessError as e:
print("WiX light exited with return value %d" % e.returncode)
return e.returncode
- msi_path = path.join(dir_to_msi, "Servo.msi")
- print("Packaged Servo into {}".format(msi_path))
+ print("Packaged Servo into " + path.join(dir_to_msi, "Servo.msi"))
+
+ print("Creating ZIP")
+ shutil.make_archive(path.join(dir_to_msi, "Servo"), "zip", dir_to_temp)
+ print("Packaged Servo into " + path.join(dir_to_msi, "Servo.zip"))
+
+ print("Cleaning up")
+ delete(dir_to_temp)
else:
dir_to_temp = path.join(target_dir, 'packaging-temp')
browserhtml_path = get_browserhtml_path(binary_path)
diff --git a/support/windows/Servo.wxs.mako b/support/windows/Servo.wxs.mako
index ab50dd84a66..08294abd392 100644
--- a/support/windows/Servo.wxs.mako
+++ b/support/windows/Servo.wxs.mako
@@ -40,16 +40,11 @@
IconIndex="0"
Advertise="yes"/>
</File>
- <File Id="ServoManifest"
- Name="servo.exe.manifest"
- Source="${windowize(exe_path)}\servo.exe.manifest"
- DiskId="1"/>
-
${include_dependencies()}
</Component>
${include_directory(resources_path, "resources")}
- ${include_directory(browserhtml_path, "browserhtml")}
+ ${include_directory(path.join(dir_to_temp, "browserhtml"), "browserhtml")}
</Directory>
</Directory>
</Directory>
@@ -87,9 +82,7 @@ import uuid
from servo.command_base import host_triple
def make_id(s):
- s = s.replace(os.getcwd(), "").replace("-", "_").replace("/", "_").replace("\\", "_")
- if "browserhtml" in s:
- s = "browserhtml_" + s[s.index("out") + 4:]
+ s = s.replace("-", "_").replace("/", "_").replace("\\", "_")
return "Id{}".format(s)
def listfiles(directory):
@@ -100,30 +93,8 @@ def listdirs(directory):
return [f for f in os.listdir(directory)
if path.isdir(path.join(directory, f))]
-def listdeps(exe_path):
- if "msvc" in host_triple():
- return [path.join(windowize(exe_path), d) for d in ["libeay32md.dll", "ssleay32md.dll"]]
- elif "gnu" in host_triple():
- deps = [
- "libstdc++-6.dll",
- "libwinpthread-1.dll",
- "libbz2-1.dll",
- "libgcc_s_seh-1.dll",
- "libexpat-1.dll",
- "zlib1.dll",
- "libpng16-16.dll",
- "libiconv-2.dll",
- "libglib-2.0-0.dll",
- "libgraphite2.dll",
- "libfreetype-6.dll",
- "libfontconfig-1.dll",
- "libintl-8.dll",
- "libpcre-1.dll",
- "libeay32.dll",
- "ssleay32.dll",
- "libharfbuzz-0.dll",
- ]
- return [path.join("C:\\msys64\\mingw64\\bin", d) for d in deps]
+def listdeps(temp_dir):
+ return [path.join(temp_dir, f) for f in os.listdir(temp_dir) if os.path.isfile(path.join(temp_dir, f)) and f != "servo.exe"]
def windowize(p):
if not p.startswith("/"):
@@ -134,7 +105,7 @@ components = []
%>
<%def name="include_dependencies()">
-% for f in listdeps(exe_path):
+% for f in listdeps(dir_to_temp):
<File Id="${make_id(path.basename(f)).replace(".","").replace("+","x")}"
Name="${path.basename(f)}"
Source="${f}"
@@ -150,7 +121,7 @@ components = []
<CreateFolder/>
<% components.append(make_id(path.basename(d))) %>
% for f in listfiles(d):
- <File Id="${make_id(path.join(d, f))}"
+ <File Id="${make_id(path.join(d, f).replace(dir_to_temp, ""))}"
Name="${f}"
Source="${windowize(path.join(d, f))}"
DiskId="1"/>