mirror of
https://github.com/servo/servo.git
synced 2025-06-10 09:33:13 +00:00
Package: Create ZIP on Windows
This commit is contained in:
parent
f838944332
commit
7048a2f81d
2 changed files with 49 additions and 40 deletions
|
@ -106,6 +106,32 @@ def copy_dependencies(binary_path, lib_path):
|
||||||
need_checked.difference_update(checked)
|
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):
|
def change_prefs(resources_path, platform):
|
||||||
print("Swapping prefs")
|
print("Swapping prefs")
|
||||||
prefs_path = path.join(resources_path, "prefs.json")
|
prefs_path = path.join(resources_path, "prefs.json")
|
||||||
|
@ -264,8 +290,14 @@ class PackageCommands(CommandBase):
|
||||||
browserhtml_path = get_browserhtml_path(binary_path)
|
browserhtml_path = get_browserhtml_path(binary_path)
|
||||||
|
|
||||||
print("Copying files")
|
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(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")
|
change_prefs(dir_to_resources, "windows")
|
||||||
|
|
||||||
|
@ -275,8 +307,8 @@ class PackageCommands(CommandBase):
|
||||||
wxs_path = path.join(dir_to_msi, "Servo.wxs")
|
wxs_path = path.join(dir_to_msi, "Servo.wxs")
|
||||||
open(wxs_path, "w").write(template.render(
|
open(wxs_path, "w").write(template.render(
|
||||||
exe_path=target_dir,
|
exe_path=target_dir,
|
||||||
resources_path=dir_to_resources,
|
dir_to_temp=dir_to_temp_servo,
|
||||||
browserhtml_path=browserhtml_path))
|
resources_path=dir_to_resources))
|
||||||
|
|
||||||
# run candle and light
|
# run candle and light
|
||||||
print("Creating MSI")
|
print("Creating MSI")
|
||||||
|
@ -293,8 +325,14 @@ class PackageCommands(CommandBase):
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
print("WiX light exited with return value %d" % e.returncode)
|
print("WiX light exited with return value %d" % e.returncode)
|
||||||
return e.returncode
|
return e.returncode
|
||||||
msi_path = path.join(dir_to_msi, "Servo.msi")
|
print("Packaged Servo into " + path.join(dir_to_msi, "Servo.msi"))
|
||||||
print("Packaged Servo into {}".format(msi_path))
|
|
||||||
|
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:
|
else:
|
||||||
dir_to_temp = path.join(target_dir, 'packaging-temp')
|
dir_to_temp = path.join(target_dir, 'packaging-temp')
|
||||||
browserhtml_path = get_browserhtml_path(binary_path)
|
browserhtml_path = get_browserhtml_path(binary_path)
|
||||||
|
|
|
@ -40,16 +40,11 @@
|
||||||
IconIndex="0"
|
IconIndex="0"
|
||||||
Advertise="yes"/>
|
Advertise="yes"/>
|
||||||
</File>
|
</File>
|
||||||
<File Id="ServoManifest"
|
|
||||||
Name="servo.exe.manifest"
|
|
||||||
Source="${windowize(exe_path)}\servo.exe.manifest"
|
|
||||||
DiskId="1"/>
|
|
||||||
|
|
||||||
${include_dependencies()}
|
${include_dependencies()}
|
||||||
</Component>
|
</Component>
|
||||||
|
|
||||||
${include_directory(resources_path, "resources")}
|
${include_directory(resources_path, "resources")}
|
||||||
${include_directory(browserhtml_path, "browserhtml")}
|
${include_directory(path.join(dir_to_temp, "browserhtml"), "browserhtml")}
|
||||||
</Directory>
|
</Directory>
|
||||||
</Directory>
|
</Directory>
|
||||||
</Directory>
|
</Directory>
|
||||||
|
@ -87,9 +82,7 @@ import uuid
|
||||||
from servo.command_base import host_triple
|
from servo.command_base import host_triple
|
||||||
|
|
||||||
def make_id(s):
|
def make_id(s):
|
||||||
s = s.replace(os.getcwd(), "").replace("-", "_").replace("/", "_").replace("\\", "_")
|
s = s.replace("-", "_").replace("/", "_").replace("\\", "_")
|
||||||
if "browserhtml" in s:
|
|
||||||
s = "browserhtml_" + s[s.index("out") + 4:]
|
|
||||||
return "Id{}".format(s)
|
return "Id{}".format(s)
|
||||||
|
|
||||||
def listfiles(directory):
|
def listfiles(directory):
|
||||||
|
@ -100,30 +93,8 @@ def listdirs(directory):
|
||||||
return [f for f in os.listdir(directory)
|
return [f for f in os.listdir(directory)
|
||||||
if path.isdir(path.join(directory, f))]
|
if path.isdir(path.join(directory, f))]
|
||||||
|
|
||||||
def listdeps(exe_path):
|
def listdeps(temp_dir):
|
||||||
if "msvc" in host_triple():
|
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"]
|
||||||
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 windowize(p):
|
def windowize(p):
|
||||||
if not p.startswith("/"):
|
if not p.startswith("/"):
|
||||||
|
@ -134,7 +105,7 @@ components = []
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<%def name="include_dependencies()">
|
<%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")}"
|
<File Id="${make_id(path.basename(f)).replace(".","").replace("+","x")}"
|
||||||
Name="${path.basename(f)}"
|
Name="${path.basename(f)}"
|
||||||
Source="${f}"
|
Source="${f}"
|
||||||
|
@ -150,7 +121,7 @@ components = []
|
||||||
<CreateFolder/>
|
<CreateFolder/>
|
||||||
<% components.append(make_id(path.basename(d))) %>
|
<% components.append(make_id(path.basename(d))) %>
|
||||||
% for f in listfiles(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}"
|
Name="${f}"
|
||||||
Source="${windowize(path.join(d, f))}"
|
Source="${windowize(path.join(d, f))}"
|
||||||
DiskId="1"/>
|
DiskId="1"/>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue