mirror of
https://github.com/servo/servo.git
synced 2025-07-02 04:53:39 +01:00
Auto merge of #21545 - ferjm:windows.nightly.gst.fix, r=Manishearth
Fix Windows nightly build <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21545) <!-- Reviewable:end -->
This commit is contained in:
commit
4c4c2515a2
3 changed files with 64 additions and 1 deletions
|
@ -18,6 +18,7 @@ import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
|
import urllib
|
||||||
|
|
||||||
from mach.decorators import (
|
from mach.decorators import (
|
||||||
CommandArgument,
|
CommandArgument,
|
||||||
|
@ -145,6 +146,20 @@ def copy_windows_dependencies(binary_path, destination):
|
||||||
for d in deps:
|
for d in deps:
|
||||||
shutil.copy(path.join(binary_path, d), destination)
|
shutil.copy(path.join(binary_path, d), destination)
|
||||||
|
|
||||||
|
# Search for the generated nspr4.dll
|
||||||
|
build_path = path.join(binary_path, "build")
|
||||||
|
nspr4 = "nspr4.dll"
|
||||||
|
nspr4_path = None
|
||||||
|
for root, dirs, files in os.walk(build_path):
|
||||||
|
if nspr4 in files:
|
||||||
|
nspr4_path = path.join(root, nspr4)
|
||||||
|
break
|
||||||
|
|
||||||
|
if nspr4_path is None:
|
||||||
|
print("WARNING: could not find nspr4.dll")
|
||||||
|
else:
|
||||||
|
shutil.copy(nspr4_path, destination)
|
||||||
|
|
||||||
|
|
||||||
def change_prefs(resources_path, platform):
|
def change_prefs(resources_path, platform):
|
||||||
print("Swapping prefs")
|
print("Swapping prefs")
|
||||||
|
@ -332,7 +347,7 @@ class PackageCommands(CommandBase):
|
||||||
import mako.template
|
import mako.template
|
||||||
template_path = path.join(dir_to_root, "support", "windows", "Servo.wxs.mako")
|
template_path = path.join(dir_to_root, "support", "windows", "Servo.wxs.mako")
|
||||||
template = mako.template.Template(open(template_path).read())
|
template = mako.template.Template(open(template_path).read())
|
||||||
wxs_path = path.join(dir_to_msi, "Servo.wxs")
|
wxs_path = path.join(dir_to_msi, "Installer.wxs")
|
||||||
open(wxs_path, "w").write(template.render(
|
open(wxs_path, "w").write(template.render(
|
||||||
exe_path=target_dir,
|
exe_path=target_dir,
|
||||||
dir_to_temp=dir_to_temp_servo,
|
dir_to_temp=dir_to_temp_servo,
|
||||||
|
@ -353,6 +368,34 @@ 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
|
||||||
|
print("Packaged Servo into " + path.join(dir_to_msi, "Installer.msi"))
|
||||||
|
|
||||||
|
# Download GStreamer installer. Only once.
|
||||||
|
dir_to_gst_deps = path.join(dir_to_msi, 'Gstreamer.msi')
|
||||||
|
gstreamer_msi_path = path.join(target_dir, 'Gstreamer.msi')
|
||||||
|
if not os.path.exists(gstreamer_msi_path):
|
||||||
|
print('Fetching GStreamer installer. This may take a while...')
|
||||||
|
gstreamer_url = 'https://gstreamer.freedesktop.org/data/pkg/windows/1.14.2/gstreamer-1.0-x86-1.14.2.msi'
|
||||||
|
urllib.urlretrieve(gstreamer_url, gstreamer_msi_path)
|
||||||
|
shutil.copy(gstreamer_msi_path, dir_to_gst_deps)
|
||||||
|
|
||||||
|
# Generate bundle with GStreamer and Servo installers.
|
||||||
|
print("Creating bundle")
|
||||||
|
shutil.copy(path.join(dir_to_root, 'support', 'windows', 'Servo.wxs'), dir_to_msi)
|
||||||
|
bundle_wxs_path = path.join(dir_to_msi, 'Servo.wxs')
|
||||||
|
try:
|
||||||
|
with cd(dir_to_msi):
|
||||||
|
subprocess.check_call(['candle', bundle_wxs_path, '-ext', 'WixBalExtension'])
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
print("WiX candle exited with return value %d" % e.returncode)
|
||||||
|
return e.returncode
|
||||||
|
try:
|
||||||
|
wxsobj_path = "{}.wixobj".format(path.splitext(bundle_wxs_path)[0])
|
||||||
|
with cd(dir_to_msi):
|
||||||
|
subprocess.check_call(['light', wxsobj_path, '-ext', 'WixBalExtension'])
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
print("WiX light exited with return value %d" % e.returncode)
|
||||||
|
return e.returncode
|
||||||
print("Packaged Servo into " + path.join(dir_to_msi, "Servo.msi"))
|
print("Packaged Servo into " + path.join(dir_to_msi, "Servo.msi"))
|
||||||
|
|
||||||
print("Creating ZIP")
|
print("Creating ZIP")
|
||||||
|
|
19
support/windows/Servo.wxs
Normal file
19
support/windows/Servo.wxs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||||
|
<Bundle Name="Servo"
|
||||||
|
Version="1.0"
|
||||||
|
UpgradeCode="91b09c7e-6c0d-4166-b806-1dc724acf728">
|
||||||
|
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
|
||||||
|
<Chain>
|
||||||
|
<MsiPackage
|
||||||
|
SourceFile="Gstreamer.msi"
|
||||||
|
DisplayName="GStreamer"
|
||||||
|
ForcePerMachine="yes"/>
|
||||||
|
<MsiPackage
|
||||||
|
SourceFile="Installer.msi"
|
||||||
|
Compressed="yes"
|
||||||
|
DisplayName="Servo"
|
||||||
|
ForcePerMachine="yes"/>
|
||||||
|
</Chain>
|
||||||
|
</Bundle>
|
||||||
|
</Wix>
|
|
@ -40,6 +40,7 @@
|
||||||
Advertise="yes"/>
|
Advertise="yes"/>
|
||||||
</File>
|
</File>
|
||||||
${include_dependencies()}
|
${include_dependencies()}
|
||||||
|
<Environment Id="PATH" Name="PATH" Value="C:\gstreamer\1.0\x86\bin;C:\gstreamer\1.0\x86_64\bin" Permanent="yes" Part="last" Action="set" System="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
|
|
||||||
${include_directory(resources_path, "resources")}
|
${include_directory(resources_path, "resources")}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue