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

Side by Side Diff: build/gyp_chromium

Issue 102243005: Re-enable GN in the GYP build. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 2
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # This script is wrapper for Chromium that adds some support for how GYP 7 # This script is wrapper for Chromium that adds some support for how GYP
8 # is invoked by Chromium beyond what can be done in the gclient hooks. 8 # is invoked by Chromium beyond what can be done in the gclient hooks.
9 9
10 import glob 10 import glob
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 else: 55 else:
56 psyco = None 56 psyco = None
57 57
58 58
59 def GetSupplementalFiles(): 59 def GetSupplementalFiles():
60 """Returns a list of the supplemental files that are included in all GYP 60 """Returns a list of the supplemental files that are included in all GYP
61 sources.""" 61 sources."""
62 return glob.glob(os.path.join(chrome_src, '*', 'supplement.gypi')) 62 return glob.glob(os.path.join(chrome_src, '*', 'supplement.gypi'))
63 63
64 64
65 def FormatKeyForGN(key):
66 """Returns the given GYP key reformatted for GN.
67
68 GYP dictionary keys can be almost anything, but in GN they are identifiers
69 and must follow the same rules. This reformats such keys to be valid GN
70 identifiers."""
71 ret = ''
72 for c in key:
73 if (c >= 'a' and c <= 'z') or (c >= 'A' and c <= 'Z'):
Nico 2013/12/04 18:15:20 if c in string.ascii_letters, and add `import stri
74 ret = ret + c
Nico 2013/12/04 18:15:20 ret += c
75 else:
76 ret = ret + '_'
Nico 2013/12/04 18:15:20 ret += '_'
77 return ret
Nico 2013/12/04 18:15:20 I think the "more pythonic" way of writing this is
78
79
65 def GetVarsStringForGN(supplemental_files): 80 def GetVarsStringForGN(supplemental_files):
66 vars_dict = {} 81 vars_dict = {}
67 82
68 for supplement in supplemental_files: 83 for supplement in supplemental_files:
69 with open(supplement, 'r') as f: 84 with open(supplement, 'r') as f:
70 try: 85 try:
71 file_data = eval(f.read(), {'__builtins__': None}, None) 86 file_data = eval(f.read(), {'__builtins__': None}, None)
72 except SyntaxError, e: 87 except SyntaxError, e:
73 e.filename = os.path.abspath(supplement) 88 e.filename = os.path.abspath(supplement)
74 raise 89 raise
75 variables = file_data.get('variables') 90 variables = file_data.get('variables')
76 for v in variables: 91 for v in variables:
77 vars_dict[v] = '"' + str(variables[v]) + '"' 92 vars_dict[v] = '"' + str(variables[v]) + '"'
78 93
79 env_string = os.environ.get('GYP_DEFINES', '') 94 env_string = os.environ.get('GYP_DEFINES', '')
80 items = shlex.split(env_string) 95 items = shlex.split(env_string)
81 for item in items: 96 for item in items:
82 tokens = item.split('=', 1) 97 tokens = item.split('=', 1)
83 # Some GYP variables have hyphens, which we don't support. 98 # Some GYP variables have hyphens, which we don't support.
84 key = tokens[0].replace("-", "_") 99 key = FormatKeyForGN(tokens[0])
85 if len(tokens) == 2: 100 if len(tokens) == 2:
86 # Escape $ characters which have special meaning to GN. 101 # Escape $ characters which have special meaning to GN.
87 vars_dict[key] = '"' + tokens[1].replace("$", "\\$") + '"' 102 vars_dict[key] = '"' + tokens[1].replace("$", "\\$") + '"'
88 else: 103 else:
89 # No value supplied, treat it as a boolean and set it. 104 # No value supplied, treat it as a boolean and set it.
90 vars_dict[key] = 'true' 105 vars_dict[key] = 'true'
91 106
92 vars_string = '' 107 vars_string = ''
93 for v in vars_dict: 108 for v in vars_dict:
94 vars_string = vars_string + v + '=' + vars_dict[v] + ' ' 109 vars_string = vars_string + v + '=' + vars_dict[v] + ' '
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 gyp_file = os.environ.get('CHROMIUM_GYP_FILE') 214 gyp_file = os.environ.get('CHROMIUM_GYP_FILE')
200 if gyp_file: 215 if gyp_file:
201 # Note that CHROMIUM_GYP_FILE values can't have backslashes as 216 # Note that CHROMIUM_GYP_FILE values can't have backslashes as
202 # path separators even on Windows due to the use of shlex.split(). 217 # path separators even on Windows due to the use of shlex.split().
203 args.extend(shlex.split(gyp_file)) 218 args.extend(shlex.split(gyp_file))
204 else: 219 else:
205 args.append(os.path.join(script_dir, 'all.gyp')) 220 args.append(os.path.join(script_dir, 'all.gyp'))
206 221
207 supplemental_includes = GetSupplementalFiles() 222 supplemental_includes = GetSupplementalFiles()
208 223
209 # Temporarily disabled until it is debugged. 224 if not RunGN(supplemental_includes):
210 # TODO(brettw) re-enable this code. 225 sys.exit(1)
211 #if not RunGN(supplemental_includes):
212 # sys.exit(1)
213 226
214 args.extend( 227 args.extend(
215 ['-I' + i for i in additional_include_files(supplemental_includes, args)]) 228 ['-I' + i for i in additional_include_files(supplemental_includes, args)])
216 229
217 # There shouldn't be a circular dependency relationship between .gyp files, 230 # There shouldn't be a circular dependency relationship between .gyp files,
218 # but in Chromium's .gyp files, on non-Mac platforms, circular relationships 231 # but in Chromium's .gyp files, on non-Mac platforms, circular relationships
219 # currently exist. The check for circular dependencies is currently 232 # currently exist. The check for circular dependencies is currently
220 # bypassed on other platforms, but is left enabled on the Mac, where a 233 # bypassed on other platforms, but is left enabled on the Mac, where a
221 # violation of the rule causes Xcode to misbehave badly. 234 # violation of the rule causes Xcode to misbehave badly.
222 # TODO(mark): Find and kill remaining circular dependencies, and remove this 235 # TODO(mark): Find and kill remaining circular dependencies, and remove this
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 # to enfore syntax checking. 282 # to enfore syntax checking.
270 syntax_check = os.environ.get('CHROMIUM_GYP_SYNTAX_CHECK') 283 syntax_check = os.environ.get('CHROMIUM_GYP_SYNTAX_CHECK')
271 if syntax_check and int(syntax_check): 284 if syntax_check and int(syntax_check):
272 args.append('--check') 285 args.append('--check')
273 286
274 print 'Updating projects from gyp files...' 287 print 'Updating projects from gyp files...'
275 sys.stdout.flush() 288 sys.stdout.flush()
276 289
277 # Off we go... 290 # Off we go...
278 sys.exit(gyp.main(args)) 291 sys.exit(gyp.main(args))
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698