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

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

Issue 269943005: Add android_library template (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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
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 fnmatch 6 import fnmatch
6 import json 7 import json
7 import os 8 import os
8 import pipes 9 import pipes
9 import shlex 10 import shlex
10 import shutil 11 import shutil
11 import subprocess 12 import subprocess
12 import sys 13 import sys
14 import tempfile
15 import traceback
13 16
Nico 2014/05/05 22:08:10 nit: 2 newlines between toplevels
cjhopman 2014/06/25 01:20:03 Done.
17 class TempDir(object):
18 def __init__(self):
19 self.dir = tempfile.mkdtemp()
20
21 def __enter__(self):
22 return self.dir
23
24 def __exit__(self, type, value, traceback):
25 shutil.rmtree(self.dir)
Nico 2014/05/05 22:08:10 nit: Maybe: @contextmanager def TempDir(): dir
cjhopman 2014/06/25 01:20:03 Done.
14 26
Nico 2014/05/05 22:08:10 nit: 2 newlines between toplevels
cjhopman 2014/06/25 01:20:03 Done.
15 def MakeDirectory(dir_path): 27 def MakeDirectory(dir_path):
16 try: 28 try:
17 os.makedirs(dir_path) 29 os.makedirs(dir_path)
18 except OSError: 30 except OSError:
19 pass 31 pass
20 32
21 33
22 def DeleteDirectory(dir_path): 34 def DeleteDirectory(dir_path):
23 if os.path.exists(dir_path): 35 if os.path.exists(dir_path):
24 shutil.rmtree(dir_path) 36 shutil.rmtree(dir_path)
25 37
26 38
27 def Touch(path): 39 def Touch(path, fail_if_missing=False):
40 if fail_if_missing and not os.path.exists(path):
41 raise Exception(path + ' doesn\'t exist.')
42
28 MakeDirectory(os.path.dirname(path)) 43 MakeDirectory(os.path.dirname(path))
29 with open(path, 'a'): 44 with open(path, 'a'):
30 os.utime(path, None) 45 os.utime(path, None)
31 46
32 47
33 def FindInDirectory(directory, filename_filter): 48 def FindInDirectory(directory, filename_filter):
34 files = [] 49 files = []
35 for root, _dirnames, filenames in os.walk(directory): 50 for root, _dirnames, filenames in os.walk(directory):
36 matched_files = fnmatch.filter(filenames, filename_filter) 51 matched_files = fnmatch.filter(filenames, filename_filter)
37 files.extend((os.path.join(root, f) for f in matched_files)) 52 files.extend((os.path.join(root, f) for f in matched_files))
38 return files 53 return files
39 54
40 55
41 def FindInDirectories(directories, filename_filter): 56 def FindInDirectories(directories, filename_filter):
42 all_files = [] 57 all_files = []
43 for directory in directories: 58 for directory in directories:
44 all_files.extend(FindInDirectory(directory, filename_filter)) 59 all_files.extend(FindInDirectory(directory, filename_filter))
45 return all_files 60 return all_files
46 61
47 62
63 def ParseGnList(gn_string):
64 return ast.literal_eval(gn_string)
65
66
48 def ParseGypList(gyp_string): 67 def ParseGypList(gyp_string):
49 # The ninja generator doesn't support $ in strings, so use ## to 68 # The ninja generator doesn't support $ in strings, so use ## to
50 # represent $. 69 # represent $.
51 # TODO(cjhopman): Remove when 70 # TODO(cjhopman): Remove when
52 # https://code.google.com/p/gyp/issues/detail?id=327 71 # https://code.google.com/p/gyp/issues/detail?id=327
53 # is addressed. 72 # is addressed.
54 gyp_string = gyp_string.replace('##', '$') 73 gyp_string = gyp_string.replace('##', '$')
55 return shlex.split(gyp_string) 74 return shlex.split(gyp_string)
56 75
57 76
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 162
144 163
145 def PrintWarning(message): 164 def PrintWarning(message):
146 print 'WARNING: ' + message 165 print 'WARNING: ' + message
147 166
148 167
149 def PrintBigWarning(message): 168 def PrintBigWarning(message):
150 print '***** ' * 8 169 print '***** ' * 8
151 PrintWarning(message) 170 PrintWarning(message)
152 print '***** ' * 8 171 print '***** ' * 8
172
Nico 2014/05/05 22:08:10 nit: 2 newlines
cjhopman 2014/06/25 01:20:03 Done.
173 def GetPythonDependencies():
Nico 2014/05/05 22:08:10 docstring
cjhopman 2014/06/25 01:20:03 Done.
174 module_paths = (m.__file__ for m in sys.modules.itervalues()
175 if m is not None and hasattr(m, '__file__'))
176
177 abs_module_paths = map(os.path.abspath, module_paths)
178
179 chromium_src = os.path.abspath(
180 os.path.join(__file__, '..', '..', '..', '..'))
Nico 2014/05/05 22:08:10 Can you put this in a constant at the top of the f
cjhopman 2014/06/25 01:20:03 Done.
181
182 non_system_module_paths = [p for p in abs_module_paths if p.startswith(chromiu m_src)]
Nico 2014/05/05 22:08:10 nit: 80 cols
cjhopman 2014/06/25 01:20:03 Done.
183 def ConvertPycToPy(s):
184 if s.endswith('.pyc'):
185 return s[:-1]
186 return s
187
188 non_system_module_paths = map(ConvertPycToPy, non_system_module_paths)
189 return list(set(non_system_module_paths))
Nico 2014/05/05 22:08:10 Huh, so these are all absolute paths? Can we make
cjhopman 2014/06/25 01:20:03 Done.
190
Nico 2014/05/05 22:08:10 2 newlines
cjhopman 2014/06/25 01:20:03 Done.
191 def WriteDepfile(path, dependencies):
192 with open(path, 'w') as depfile:
193 depfile.write(path)
194 depfile.write(': ')
195 depfile.write(' '.join(dependencies))
196 depfile.write('\n')
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698