Package: Merge changed prefs from package-prefs.json to prefs.json

This commit is contained in:
UK992 2016-12-26 16:44:31 +01:00
parent 7f2da7483b
commit 7eb4d7a9a7
5 changed files with 39 additions and 76 deletions

View file

@ -13,6 +13,7 @@ import sys
import os.path as path import os.path as path
sys.path.append(path.join(path.dirname(sys.argv[0]), "components", "style", "properties", "Mako-0.9.1.zip")) sys.path.append(path.join(path.dirname(sys.argv[0]), "components", "style", "properties", "Mako-0.9.1.zip"))
import json
import os import os
import shutil import shutil
import subprocess import subprocess
@ -78,7 +79,6 @@ def change_non_system_libraries_path(libraries, relative_path, binary):
def copy_dependencies(binary_path, lib_path): def copy_dependencies(binary_path, lib_path):
relative_path = path.relpath(lib_path, path.dirname(binary_path)) + "/" relative_path = path.relpath(lib_path, path.dirname(binary_path)) + "/"
# Update binary libraries # Update binary libraries
@ -105,6 +105,24 @@ def copy_dependencies(binary_path, lib_path):
need_checked.difference_update(checked) need_checked.difference_update(checked)
def change_prefs(resources_path, platform):
print("Swapping prefs")
prefs_path = path.join(resources_path, "prefs.json")
package_prefs_path = path.join(resources_path, "package-prefs.json")
os_type = "os:{}".format(platform)
with open(prefs_path) as prefs, open(package_prefs_path) as package_prefs:
prefs = json.load(prefs)
package_prefs = json.load(package_prefs)
for pref in package_prefs:
if os_type in pref:
prefs[pref.split(";")[1]] = package_prefs[pref]
if pref in prefs:
prefs[pref] = package_prefs[pref]
with open(prefs_path, "w") as out:
json.dump(prefs, out, sort_keys=True, indent=2)
delete(package_prefs_path)
@CommandProvider @CommandProvider
class PackageCommands(CommandBase): class PackageCommands(CommandBase):
@Command('package', @Command('package',
@ -151,7 +169,6 @@ class PackageCommands(CommandBase):
print("Packaging Android exited with return value %d" % e.returncode) print("Packaging Android exited with return value %d" % e.returncode)
return e.returncode return e.returncode
elif is_macosx(): elif is_macosx():
dir_to_build = path.dirname(binary_path) dir_to_build = path.dirname(binary_path)
dir_to_root = self.get_top_dir() dir_to_root = self.get_top_dir()
@ -176,12 +193,7 @@ class PackageCommands(CommandBase):
os.makedirs(content_dir) os.makedirs(content_dir)
shutil.copy2(binary_path, content_dir) shutil.copy2(binary_path, content_dir)
print("Swapping prefs") change_prefs(dir_to_resources, "macosx")
package_prefs_path = path.join(dir_to_resources, 'package-prefs.json')
prefs_path = path.join(dir_to_resources, 'prefs.json')
delete(prefs_path)
shutil.copy2(package_prefs_path, prefs_path)
delete(package_prefs_path)
print("Finding dylibs and relinking") print("Finding dylibs and relinking")
copy_dependencies(path.join(content_dir, 'servo'), content_dir) copy_dependencies(path.join(content_dir, 'servo'), content_dir)
@ -250,7 +262,6 @@ class PackageCommands(CommandBase):
archive_deterministically(dir_to_brew, tar_path, prepend_path='servo/') archive_deterministically(dir_to_brew, tar_path, prepend_path='servo/')
delete(dir_to_brew) delete(dir_to_brew)
print("Packaged Servo into " + tar_path) print("Packaged Servo into " + tar_path)
elif is_windows(): elif is_windows():
dir_to_package = path.dirname(binary_path) dir_to_package = path.dirname(binary_path)
dir_to_root = self.get_top_dir() dir_to_root = self.get_top_dir()
@ -259,20 +270,27 @@ class PackageCommands(CommandBase):
print("Cleaning up from previous packaging") print("Cleaning up from previous packaging")
delete(dir_to_msi) delete(dir_to_msi)
os.makedirs(dir_to_msi) os.makedirs(dir_to_msi)
top_path = dir_to_root
browserhtml_path = find_dep_path_newest('browserhtml', binary_path) browserhtml_path = find_dep_path_newest('browserhtml', binary_path)
if browserhtml_path is None: if browserhtml_path is None:
print("Could not find browserhtml package; perhaps you haven't built Servo.") print("Could not find browserhtml package; perhaps you haven't built Servo.")
return 1 return 1
browserhtml_path = path.join(browserhtml_path, "out") browserhtml_path = path.join(browserhtml_path, "out")
print("Copying files")
dir_to_resources = path.join(dir_to_msi, 'resources')
shutil.copytree(path.join(self.get_top_dir(), 'resources'), dir_to_resources)
change_prefs(dir_to_resources, "windows")
# generate Servo.wxs # generate Servo.wxs
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 = Template(open(template_path).read()) template = Template(open(template_path).read())
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=dir_to_package, exe_path=dir_to_package,
top_path=top_path, resources_path=dir_to_resources,
browserhtml_path=browserhtml_path)) browserhtml_path=browserhtml_path))
# run candle and light # run candle and light
print("Creating MSI") print("Creating MSI")
try: try:
@ -307,12 +325,10 @@ class PackageCommands(CommandBase):
shutil.copytree(browserhtml_path, path.join(dir_to_temp, 'browserhtml')) shutil.copytree(browserhtml_path, path.join(dir_to_temp, 'browserhtml'))
shutil.copy(binary_path, dir_to_temp) shutil.copy(binary_path, dir_to_temp)
change_prefs(dir_to_resources, "linux")
print("Writing runservo.sh") print("Writing runservo.sh")
# TODO: deduplicate this arg list from post_build_commands
servo_args = ['-b', servo_args = ['-b',
'--pref', 'dom.mozbrowser.enabled',
'--pref', 'dom.forcetouch.enabled',
'--pref', 'shell.builtin-key-shortcuts.enabled=false',
path.join('./browserhtml', 'out', 'index.html')] path.join('./browserhtml', 'out', 'index.html')]
runservo = os.open(path.join(dir_to_temp, 'runservo.sh'), os.O_WRONLY | os.O_CREAT, int("0755", 8)) runservo = os.open(path.join(dir_to_temp, 'runservo.sh'), os.O_WRONLY | os.O_CREAT, int("0755", 8))

View file

@ -1,59 +1,6 @@
{ {
"dom.bluetooth.enabled": false,
"dom.bluetooth.testing.enabled": false,
"dom.forcetouch.enabled": true, "dom.forcetouch.enabled": true,
"dom.mouseevent.which.enabled": false,
"dom.mozbrowser.enabled": true, "dom.mozbrowser.enabled": true,
"dom.serviceworker.timeout_seconds": 60,
"dom.testable_crash.enabled": false,
"dom.testbinding.enabled": false,
"js.asmjs.enabled": true,
"js.asyncstack.enabled": false,
"js.baseline.enabled": true,
"js.baseline.unsafe_eager_compilation.enabled": false,
"js.discard_system_source.enabled": false,
"js.dump_stack_on_debuggee_would_run.enabled": false,
"js.ion.enabled": true,
"js.ion.offthread_compilation.enabled": true,
"js.ion.unsafe_eager_compilation.enabled": false,
"js.mem.gc.allocation_threshold_mb": 30,
"js.mem.gc.compacting.enabled": true,
"js.mem.gc.decommit_threshold_mb": 32,
"js.mem.gc.dynamic_heap_growth.enabled": true,
"js.mem.gc.dynamic_mark_slice.enabled": true,
"js.mem.gc.empty_chunk_count_max": 30,
"js.mem.gc.empty_chunk_count_min": 1,
"js.mem.gc.high_frequency_heap_growth_max": 300,
"js.mem.gc.high_frequency_heap_growth_min": 150,
"js.mem.gc.high_frequency_high_limit_mb": 500,
"js.mem.gc.high_frequency_low_limit_mb": 100,
"js.mem.gc.high_frequency_time_limit_ms": 1000,
"js.mem.gc.incremental.enabled": true,
"js.mem.gc.incremental.slice_ms": 10,
"js.mem.gc.low_frequency_heap_growth": 150,
"js.mem.gc.per_compartment.enabled": true,
"js.mem.gc.refresh_frame_slices.enabled": true,
"js.mem.gc.zeal.frequency": 100,
"js.mem.gc.zeal.level": 0,
"js.mem.high_water_mark": 128,
"js.mem.max": -1,
"js.native_regexp.enabled": true,
"js.parallel_parsing.enabled": true,
"js.shared_memory.enabled": true,
"js.strict.debug.enabled": false,
"js.strict.enabled": false,
"js.throw_on_asmjs_validation_failure.enabled": false,
"js.throw_on_debuggee_would_run.enabled": false,
"js.werror.enabled": false,
"layout.column-count.enabled": false,
"layout.column-gap.enabled": false,
"layout.column-width.enabled": false,
"layout.columns.enabled": false,
"layout.text-orientation.enabled": false,
"layout.viewport.enabled": false,
"layout.writing-mode.enabled": false,
"network.mime.sniff": false,
"shell.builtin-key-shortcuts.enabled": false, "shell.builtin-key-shortcuts.enabled": false,
"shell.homepage": "https://servo.org", "os:macosx;shell.native-titlebar.enabled": false
"shell.native-titlebar.enabled": false
} }

View file

@ -55,6 +55,6 @@
"layout.writing-mode.enabled": false, "layout.writing-mode.enabled": false,
"network.mime.sniff": false, "network.mime.sniff": false,
"shell.builtin-key-shortcuts.enabled": true, "shell.builtin-key-shortcuts.enabled": true,
"shell.homepage": "http://servo.org", "shell.homepage": "https://servo.org",
"shell.native-titlebar.enabled": true "shell.native-titlebar.enabled": true
} }

View file

@ -38,7 +38,7 @@
WorkingDirectory="INSTALLDIR" WorkingDirectory="INSTALLDIR"
Icon="Servo.ico" Icon="Servo.ico"
IconIndex="0" IconIndex="0"
Arguments="-w --pref dom.mozbrowser.enabled --pref shell.builtin-key-shortcuts.enabled=false browserhtml\index.html" Arguments="browserhtml\index.html"
Advertise="yes"/> Advertise="yes"/>
</File> </File>
<File Id="ServoManifest" <File Id="ServoManifest"
@ -49,7 +49,7 @@
${include_dependencies()} ${include_dependencies()}
</Component> </Component>
${include_directory(path.join(top_path, "resources"), "resources")} ${include_directory(resources_path, "resources")}
${include_directory(browserhtml_path, "browserhtml")} ${include_directory(browserhtml_path, "browserhtml")}
</Directory> </Directory>
</Directory> </Directory>
@ -77,7 +77,7 @@
<ComponentRef Id="ProgramMenuDir"/> <ComponentRef Id="ProgramMenuDir"/>
</Feature> </Feature>
<Icon Id="Servo.ico" SourceFile="${windowize(top_path)}\resources\Servo.ico"/> <Icon Id="Servo.ico" SourceFile="${windowize(resources_path)}\Servo.ico"/>
</Product> </Product>
</Wix> </Wix>
<%! <%!

View file

@ -12,7 +12,7 @@ fn test_create_pref() {
let json_str = "{\ let json_str = "{\
\"layout.writing-mode.enabled\": true,\ \"layout.writing-mode.enabled\": true,\
\"network.mime.sniff\": false,\ \"network.mime.sniff\": false,\
\"shell.homepage\": \"http://servo.org\"\ \"shell.homepage\": \"https://servo.org\"\
}"; }";
let prefs = read_prefs_from_file(json_str.as_bytes()); let prefs = read_prefs_from_file(json_str.as_bytes());
@ -33,11 +33,11 @@ fn test_get_set_reset_extend() {
assert_eq!(*PREFS.get("test"), PrefValue::Missing); assert_eq!(*PREFS.get("test"), PrefValue::Missing);
PREFS.set("test", PrefValue::String("hi".to_owned())); PREFS.set("test", PrefValue::String("hi".to_owned()));
assert_eq!(*PREFS.get("test"), PrefValue::String("hi".to_owned())); assert_eq!(*PREFS.get("test"), PrefValue::String("hi".to_owned()));
assert_eq!(*PREFS.get("shell.homepage"), PrefValue::String("http://servo.org".to_owned())); assert_eq!(*PREFS.get("shell.homepage"), PrefValue::String("https://servo.org".to_owned()));
PREFS.set("shell.homepage", PrefValue::Boolean(true)); PREFS.set("shell.homepage", PrefValue::Boolean(true));
assert_eq!(*PREFS.get("shell.homepage"), PrefValue::Boolean(true)); assert_eq!(*PREFS.get("shell.homepage"), PrefValue::Boolean(true));
PREFS.reset("shell.homepage"); PREFS.reset("shell.homepage");
assert_eq!(*PREFS.get("shell.homepage"), PrefValue::String("http://servo.org".to_owned())); assert_eq!(*PREFS.get("shell.homepage"), PrefValue::String("https://servo.org".to_owned()));
let extension = read_prefs_from_file(json_str.as_bytes()).unwrap(); let extension = read_prefs_from_file(json_str.as_bytes()).unwrap();
PREFS.extend(extension); PREFS.extend(extension);