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

Side by Side Diff: build/android/gyp/util/build_utils.py

Issue 361633002: [Android][gn] Add android resources templates (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gn-java
Patch Set: Fix bad rebase Created 6 years, 5 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
« no previous file with comments | « build/android/gyp/process_resources.py ('k') | build/android/gyp/write_build_config.py » ('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 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. 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 import ast 5 import ast
6 import contextlib 6 import contextlib
7 import fnmatch 7 import fnmatch
8 import json 8 import json
9 import os 9 import os
10 import pipes 10 import pipes
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 191
192 192
193 def ExtractAll(zip_path, path=None, no_clobber=True): 193 def ExtractAll(zip_path, path=None, no_clobber=True):
194 if path is None: 194 if path is None:
195 path = os.getcwd() 195 path = os.getcwd()
196 elif not os.path.exists(path): 196 elif not os.path.exists(path):
197 MakeDirectory(path) 197 MakeDirectory(path)
198 198
199 with zipfile.ZipFile(zip_path) as z: 199 with zipfile.ZipFile(zip_path) as z:
200 for name in z.namelist(): 200 for name in z.namelist():
201 if name.endswith('/'):
202 continue
201 CheckZipPath(name) 203 CheckZipPath(name)
202 if no_clobber: 204 if no_clobber:
203 output_path = os.path.join(path, name) 205 output_path = os.path.join(path, name)
204 if os.path.exists(output_path): 206 if os.path.exists(output_path):
205 raise Exception( 207 raise Exception(
206 'Path already exists from zip: %s %s %s' 208 'Path already exists from zip: %s %s %s'
207 % (zip_path, name, output_path)) 209 % (zip_path, name, output_path))
208 210
209 z.extractall(path=path) 211 z.extractall(path=path)
210 212
211 213
212 def DoZip(inputs, output, base_dir): 214 def DoZip(inputs, output, base_dir):
213 with zipfile.ZipFile(output, 'w') as outfile: 215 with zipfile.ZipFile(output, 'w') as outfile:
214 for f in inputs: 216 for f in inputs:
215 CheckZipPath(os.path.relpath(f, base_dir)) 217 CheckZipPath(os.path.relpath(f, base_dir))
216 outfile.write(f, os.path.relpath(f, base_dir)) 218 outfile.write(f, os.path.relpath(f, base_dir))
217 219
218 220
221 def ZipDir(output, base_dir):
222 with zipfile.ZipFile(output, 'w') as outfile:
223 for root, _, files in os.walk(base_dir):
224 for f in files:
225 path = os.path.join(root, f)
226 archive_path = os.path.relpath(path, base_dir)
227 CheckZipPath(archive_path)
228 outfile.write(path, archive_path)
229
230
219 def PrintWarning(message): 231 def PrintWarning(message):
220 print 'WARNING: ' + message 232 print 'WARNING: ' + message
221 233
222 234
223 def PrintBigWarning(message): 235 def PrintBigWarning(message):
224 print '***** ' * 8 236 print '***** ' * 8
225 PrintWarning(message) 237 PrintWarning(message)
226 print '***** ' * 8 238 print '***** ' * 8
227 239
228 240
241 def GetSortedTransitiveDependencies(top, deps_func):
242 """Gets the list of all transitive dependencies in sorted order.
243
244 There should be no cycles in the dependency graph.
245
246 Args:
247 top: a list of the top level nodes
248 deps_func: A function that takes a node and returns its direct dependencies.
249 Returns:
250 A list of all transitive dependencies of nodes in top, in order (a node will
251 appear in the list at a higher index than all of its dependencies).
252 """
253 def Node(dep):
254 return (dep, deps_func(dep))
255
256 # First: find all deps
257 unchecked_deps = list(top)
258 all_deps = set(top)
259 while unchecked_deps:
260 dep = unchecked_deps.pop()
261 new_deps = deps_func(dep).difference(all_deps)
262 unchecked_deps.extend(new_deps)
263 all_deps = all_deps.union(new_deps)
264
265 # Then: simple, slow topological sort.
266 sorted_deps = []
267 unsorted_deps = dict(map(Node, all_deps))
268 while unsorted_deps:
269 for library, dependencies in unsorted_deps.items():
270 if not dependencies.intersection(unsorted_deps.keys()):
271 sorted_deps.append(library)
272 del unsorted_deps[library]
273
274 return sorted_deps
275
276
229 def GetPythonDependencies(): 277 def GetPythonDependencies():
230 """Gets the paths of imported non-system python modules. 278 """Gets the paths of imported non-system python modules.
231 279
232 A path is assumed to be a "system" import if it is outside of chromium's 280 A path is assumed to be a "system" import if it is outside of chromium's
233 src/. The paths will be relative to the current directory. 281 src/. The paths will be relative to the current directory.
234 """ 282 """
235 module_paths = (m.__file__ for m in sys.modules.itervalues() 283 module_paths = (m.__file__ for m in sys.modules.itervalues()
236 if m is not None and hasattr(m, '__file__')) 284 if m is not None and hasattr(m, '__file__'))
237 285
238 abs_module_paths = map(os.path.abspath, module_paths) 286 abs_module_paths = map(os.path.abspath, module_paths)
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 if not file_path in file_jsons: 344 if not file_path in file_jsons:
297 file_jsons[file_path] = ReadJson(file_path) 345 file_jsons[file_path] = ReadJson(file_path)
298 346
299 expansion = file_jsons[file_path] 347 expansion = file_jsons[file_path]
300 for k in lookup_path[1:]: 348 for k in lookup_path[1:]:
301 expansion = expansion[k] 349 expansion = expansion[k]
302 350
303 new_args[i] = arg[:start] + str(expansion) + arg[end + 1:] 351 new_args[i] = arg[:start] + str(expansion) + arg[end + 1:]
304 return new_args 352 return new_args
305 353
OLDNEW
« no previous file with comments | « build/android/gyp/process_resources.py ('k') | build/android/gyp/write_build_config.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698