| Index: bindings/scripts/utilities.py
|
| diff --git a/bindings/scripts/utilities.py b/bindings/scripts/utilities.py
|
| index 8bd855514bd36c421b98c5523aed82a2f37cee1b..23708876cfcbfe13ffc376823fc778c054f598b0 100644
|
| --- a/bindings/scripts/utilities.py
|
| +++ b/bindings/scripts/utilities.py
|
| @@ -10,6 +10,7 @@ Design doc: http://www.chromium.org/developers/design-documents/idl-build
|
| import os
|
| import cPickle as pickle
|
| import re
|
| +import shlex
|
| import string
|
| import subprocess
|
|
|
| @@ -182,6 +183,26 @@ def load_interfaces_info_overall_pickle(info_dir):
|
| return pickle.load(interface_info_file)
|
|
|
|
|
| +def merge_dict_recursively(target, diff):
|
| + """Merges two dicts into one.
|
| + |target| will be updated with |diff|. Part of |diff| may be re-used in
|
| + |target|.
|
| + """
|
| + for key, value in diff.iteritems():
|
| + if key not in target:
|
| + target[key] = value
|
| + elif type(value) == dict:
|
| + merge_dict_recursively(target[key], value)
|
| + elif type(value) == list:
|
| + target[key].extend(value)
|
| + elif type(value) == set:
|
| + target[key].update(value)
|
| + else:
|
| + # Testing IDLs want to overwrite the values. Production code
|
| + # doesn't need any overwriting.
|
| + target[key] = value
|
| +
|
| +
|
| def create_component_info_provider_core(info_dir):
|
| interfaces_info = load_interfaces_info_overall_pickle(info_dir)
|
| with open(os.path.join(info_dir, 'core', 'ComponentInfoCore.pickle')) as component_info_file:
|
| @@ -238,11 +259,19 @@ def resolve_cygpath(cygdrive_names):
|
| return idl_file_names
|
|
|
|
|
| -def read_idl_files_list_from_file(filename):
|
| - """Similar to read_file_to_list, but also resolves cygpath."""
|
| +def read_idl_files_list_from_file(filename, is_gyp_format):
|
| + """Similar to read_file_to_list, but also resolves cygpath.
|
| +
|
| + If is_gyp_format is True, the file is treated as a newline-separated list
|
| + with no quoting or escaping. When False, the file is interpreted as a
|
| + Posix-style quoted and space-separated list."""
|
| with open(filename) as input_file:
|
| - file_names = sorted([os.path.realpath(line.rstrip('\n'))
|
| - for line in input_file])
|
| + if is_gyp_format:
|
| + file_names = sorted([os.path.realpath(line.rstrip('\n'))
|
| + for line in input_file])
|
| + else:
|
| + file_names = sorted(shlex.split(input_file))
|
| +
|
| idl_file_names = [file_name for file_name in file_names
|
| if not file_name.startswith('/cygdrive')]
|
| cygdrive_names = [file_name for file_name in file_names
|
|
|