Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: pylib/gyp/input.py

Issue 10449026: Fixing leftover from prior reveiew, plus more lint. (Closed) Base URL: http://gyp.googlecode.com/svn/trunk/
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pylib/gyp/generator/ninja.py ('k') | test/variables/commands/commands-repeated.gyp.stdout » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 Google Inc. All rights reserved. 1 # Copyright (c) 2012 Google Inc. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 from compiler.ast import Const 5 from compiler.ast import Const
6 from compiler.ast import Dict 6 from compiler.ast import Dict
7 from compiler.ast import Discard 7 from compiler.ast import Discard
8 from compiler.ast import List 8 from compiler.ast import List
9 from compiler.ast import Module 9 from compiler.ast import Module
10 from compiler.ast import Node 10 from compiler.ast import Node
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 def ProcessToolsetsInDict(data): 295 def ProcessToolsetsInDict(data):
296 if 'targets' in data: 296 if 'targets' in data:
297 target_list = data['targets'] 297 target_list = data['targets']
298 new_target_list = [] 298 new_target_list = []
299 for target in target_list: 299 for target in target_list:
300 # If this target already has an explicit 'toolset', and no 'toolsets' 300 # If this target already has an explicit 'toolset', and no 'toolsets'
301 # list, don't modify it further. 301 # list, don't modify it further.
302 if 'toolset' in target and 'toolsets' not in target: 302 if 'toolset' in target and 'toolsets' not in target:
303 new_target_list.append(target) 303 new_target_list.append(target)
304 continue 304 continue
305 global multiple_toolsets
306 if multiple_toolsets: 305 if multiple_toolsets:
307 toolsets = target.get('toolsets', ['target']) 306 toolsets = target.get('toolsets', ['target'])
308 else: 307 else:
309 toolsets = ['target'] 308 toolsets = ['target']
310 # Make sure this 'toolsets' definition is only processed once. 309 # Make sure this 'toolsets' definition is only processed once.
311 if 'toolsets' in target: 310 if 'toolsets' in target:
312 del target['toolsets'] 311 del target['toolsets']
313 if len(toolsets) > 0: 312 if len(toolsets) > 0:
314 # Optimization: only do copies if more than one toolset is specified. 313 # Optimization: only do copies if more than one toolset is specified.
315 for build in toolsets[1:]: 314 for build in toolsets[1:]:
316 new_target = copy.deepcopy(target) 315 new_target = copy.deepcopy(target)
317 new_target['toolset'] = build 316 new_target['toolset'] = build
318 new_target_list.append(new_target) 317 new_target_list.append(new_target)
319 target['toolset'] = toolsets[0] 318 target['toolset'] = toolsets[0]
320 new_target_list.append(target) 319 new_target_list.append(target)
321 data['targets'] = new_target_list 320 data['targets'] = new_target_list
322 if 'conditions' in data: 321 if 'conditions' in data:
323 for condition in data['conditions']: 322 for condition in data['conditions']:
324 if isinstance(condition, list): 323 if isinstance(condition, list):
325 for condition_dict in condition[1:]: 324 for condition_dict in condition[1:]:
326 ProcessToolsetsInDict(condition_dict) 325 ProcessToolsetsInDict(condition_dict)
327 326
328 327
329 # TODO(mark): I don't love this name. It just means that it's going to load 328 # TODO(mark): I don't love this name. It just means that it's going to load
330 # a build file that contains targets and is expected to provide a targets dict 329 # a build file that contains targets and is expected to provide a targets dict
331 # that contains the targets... 330 # that contains the targets...
332 def LoadTargetBuildFile(build_file_path, data, aux_data, variables, includes, 331 def LoadTargetBuildFile(build_file_path, data, aux_data, variables, includes,
333 depth, check): 332 depth, check):
334 global absolute_build_file_paths
335
336 # If depth is set, predefine the DEPTH variable to be a relative path from 333 # If depth is set, predefine the DEPTH variable to be a relative path from
337 # this build file's directory to the directory identified by depth. 334 # this build file's directory to the directory identified by depth.
338 if depth: 335 if depth:
339 # TODO(dglazkov) The backslash/forward-slash replacement at the end is a 336 # TODO(dglazkov) The backslash/forward-slash replacement at the end is a
340 # temporary measure. This should really be addressed by keeping all paths 337 # temporary measure. This should really be addressed by keeping all paths
341 # in POSIX until actual project generation. 338 # in POSIX until actual project generation.
342 d = gyp.common.RelativePath(depth, os.path.dirname(build_file_path)) 339 d = gyp.common.RelativePath(depth, os.path.dirname(build_file_path))
343 if d == '': 340 if d == '':
344 variables['DEPTH'] = '.' 341 variables['DEPTH'] = '.'
345 else: 342 else:
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 for op in ('', '!', '/')] 1132 for op in ('', '!', '/')]
1136 1133
1137 for target, target_dict in targets.iteritems(): 1134 for target, target_dict in targets.iteritems():
1138 target_build_file = gyp.common.BuildFile(target) 1135 target_build_file = gyp.common.BuildFile(target)
1139 toolset = target_dict['toolset'] 1136 toolset = target_dict['toolset']
1140 for dependency_key in all_dependency_sections: 1137 for dependency_key in all_dependency_sections:
1141 dependencies = target_dict.get(dependency_key, []) 1138 dependencies = target_dict.get(dependency_key, [])
1142 for index in xrange(0, len(dependencies)): 1139 for index in xrange(0, len(dependencies)):
1143 dep_file, dep_target, dep_toolset = gyp.common.ResolveTarget( 1140 dep_file, dep_target, dep_toolset = gyp.common.ResolveTarget(
1144 target_build_file, dependencies[index], toolset) 1141 target_build_file, dependencies[index], toolset)
1145 global multiple_toolsets
1146 if not multiple_toolsets: 1142 if not multiple_toolsets:
1147 # Ignore toolset specification in the dependency if it is specified. 1143 # Ignore toolset specification in the dependency if it is specified.
1148 dep_toolset = toolset 1144 dep_toolset = toolset
1149 dependency = gyp.common.QualifiedTarget(dep_file, 1145 dependency = gyp.common.QualifiedTarget(dep_file,
1150 dep_target, 1146 dep_target,
1151 dep_toolset) 1147 dep_toolset)
1152 dependencies[index] = dependency 1148 dependencies[index] = dependency
1153 1149
1154 # Make sure anything appearing in a list other than "dependencies" also 1150 # Make sure anything appearing in a list other than "dependencies" also
1155 # appears in the "dependencies" list. 1151 # appears in the "dependencies" list.
(...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after
1871 # Merge it into the new config. 1867 # Merge it into the new config.
1872 MergeDicts(new_configuration_dict, configuration_dict, 1868 MergeDicts(new_configuration_dict, configuration_dict,
1873 build_file, build_file) 1869 build_file, build_file)
1874 1870
1875 # Drop abstract. 1871 # Drop abstract.
1876 if 'abstract' in new_configuration_dict: 1872 if 'abstract' in new_configuration_dict:
1877 del new_configuration_dict['abstract'] 1873 del new_configuration_dict['abstract']
1878 1874
1879 1875
1880 def SetUpConfigurations(target, target_dict): 1876 def SetUpConfigurations(target, target_dict):
1881 global non_configuration_keys
1882 # key_suffixes is a list of key suffixes that might appear on key names. 1877 # key_suffixes is a list of key suffixes that might appear on key names.
1883 # These suffixes are handled in conditional evaluations (for =, +, and ?) 1878 # These suffixes are handled in conditional evaluations (for =, +, and ?)
1884 # and rules/exclude processing (for ! and /). Keys with these suffixes 1879 # and rules/exclude processing (for ! and /). Keys with these suffixes
1885 # should be treated the same as keys without. 1880 # should be treated the same as keys without.
1886 key_suffixes = ['=', '+', '?', '!', '/'] 1881 key_suffixes = ['=', '+', '?', '!', '/']
1887 1882
1888 build_file = gyp.common.BuildFile(target) 1883 build_file = gyp.common.BuildFile(target)
1889 1884
1890 # Provide a single configuration by default if none exists. 1885 # Provide a single configuration by default if none exists.
1891 # TODO(mark): Signal an error if default_configurations exists but 1886 # TODO(mark): Signal an error if default_configurations exists but
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
2059 2054
2060 if action == 'exclude': 2055 if action == 'exclude':
2061 # This item matches an exclude regex, so set its value to 0 (exclude). 2056 # This item matches an exclude regex, so set its value to 0 (exclude).
2062 action_value = 0 2057 action_value = 0
2063 elif action == 'include': 2058 elif action == 'include':
2064 # This item matches an include regex, so set its value to 1 (include). 2059 # This item matches an include regex, so set its value to 1 (include).
2065 action_value = 1 2060 action_value = 1
2066 else: 2061 else:
2067 # This is an action that doesn't make any sense. 2062 # This is an action that doesn't make any sense.
2068 raise ValueError, 'Unrecognized action ' + action + ' in ' + name + \ 2063 raise ValueError, 'Unrecognized action ' + action + ' in ' + name + \
2069 ' key ' + key 2064 ' key ' + regex_key
2070 2065
2071 for index in xrange(0, len(the_list)): 2066 for index in xrange(0, len(the_list)):
2072 list_item = the_list[index] 2067 list_item = the_list[index]
2073 if list_actions[index] == action_value: 2068 if list_actions[index] == action_value:
2074 # Even if the regex matches, nothing will change so continue (regex 2069 # Even if the regex matches, nothing will change so continue (regex
2075 # searches are expensive). 2070 # searches are expensive).
2076 continue 2071 continue
2077 if pattern_re.search(list_item): 2072 if pattern_re.search(list_item):
2078 # Regular expression match. 2073 # Regular expression match.
2079 list_actions[index] = action_value 2074 list_actions[index] = action_value
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
2481 ValidateRunAsInTarget(target, target_dict, build_file) 2476 ValidateRunAsInTarget(target, target_dict, build_file)
2482 ValidateActionsInTarget(target, target_dict, build_file) 2477 ValidateActionsInTarget(target, target_dict, build_file)
2483 2478
2484 # Generators might not expect ints. Turn them into strs. 2479 # Generators might not expect ints. Turn them into strs.
2485 TurnIntIntoStrInDict(data) 2480 TurnIntIntoStrInDict(data)
2486 2481
2487 # TODO(mark): Return |data| for now because the generator needs a list of 2482 # TODO(mark): Return |data| for now because the generator needs a list of
2488 # build files that came in. In the future, maybe it should just accept 2483 # build files that came in. In the future, maybe it should just accept
2489 # a list, and not the whole data dict. 2484 # a list, and not the whole data dict.
2490 return [flat_list, targets, data] 2485 return [flat_list, targets, data]
OLDNEW
« no previous file with comments | « pylib/gyp/generator/ninja.py ('k') | test/variables/commands/commands-repeated.gyp.stdout » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698