Index: build/android/gyp/util/build_utils.py |
diff --git a/build/android/gyp/util/build_utils.py b/build/android/gyp/util/build_utils.py |
index 607f9be2771039fdd20bf09bc3ee0e690a85d059..ba1224a1c6652828acdd81c2eaabf6dd4fc288fb 100644 |
--- a/build/android/gyp/util/build_utils.py |
+++ b/build/android/gyp/util/build_utils.py |
@@ -2,6 +2,7 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import ast |
import fnmatch |
import json |
import os |
@@ -10,7 +11,18 @@ import shlex |
import shutil |
import subprocess |
import sys |
+import tempfile |
+import traceback |
Nico
2014/05/05 22:08:10
nit: 2 newlines between toplevels
cjhopman
2014/06/25 01:20:03
Done.
|
+class TempDir(object): |
+ def __init__(self): |
+ self.dir = tempfile.mkdtemp() |
+ |
+ def __enter__(self): |
+ return self.dir |
+ |
+ def __exit__(self, type, value, traceback): |
+ 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.
|
Nico
2014/05/05 22:08:10
nit: 2 newlines between toplevels
cjhopman
2014/06/25 01:20:03
Done.
|
def MakeDirectory(dir_path): |
try: |
@@ -24,7 +36,10 @@ def DeleteDirectory(dir_path): |
shutil.rmtree(dir_path) |
-def Touch(path): |
+def Touch(path, fail_if_missing=False): |
+ if fail_if_missing and not os.path.exists(path): |
+ raise Exception(path + ' doesn\'t exist.') |
+ |
MakeDirectory(os.path.dirname(path)) |
with open(path, 'a'): |
os.utime(path, None) |
@@ -45,6 +60,10 @@ def FindInDirectories(directories, filename_filter): |
return all_files |
+def ParseGnList(gn_string): |
+ return ast.literal_eval(gn_string) |
+ |
+ |
def ParseGypList(gyp_string): |
# The ninja generator doesn't support $ in strings, so use ## to |
# represent $. |
@@ -150,3 +169,28 @@ def PrintBigWarning(message): |
print '***** ' * 8 |
PrintWarning(message) |
print '***** ' * 8 |
+ |
Nico
2014/05/05 22:08:10
nit: 2 newlines
cjhopman
2014/06/25 01:20:03
Done.
|
+def GetPythonDependencies(): |
Nico
2014/05/05 22:08:10
docstring
cjhopman
2014/06/25 01:20:03
Done.
|
+ module_paths = (m.__file__ for m in sys.modules.itervalues() |
+ if m is not None and hasattr(m, '__file__')) |
+ |
+ abs_module_paths = map(os.path.abspath, module_paths) |
+ |
+ chromium_src = os.path.abspath( |
+ 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.
|
+ |
+ non_system_module_paths = [p for p in abs_module_paths if p.startswith(chromium_src)] |
Nico
2014/05/05 22:08:10
nit: 80 cols
cjhopman
2014/06/25 01:20:03
Done.
|
+ def ConvertPycToPy(s): |
+ if s.endswith('.pyc'): |
+ return s[:-1] |
+ return s |
+ |
+ non_system_module_paths = map(ConvertPycToPy, non_system_module_paths) |
+ 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.
|
+ |
Nico
2014/05/05 22:08:10
2 newlines
cjhopman
2014/06/25 01:20:03
Done.
|
+def WriteDepfile(path, dependencies): |
+ with open(path, 'w') as depfile: |
+ depfile.write(path) |
+ depfile.write(': ') |
+ depfile.write(' '.join(dependencies)) |
+ depfile.write('\n') |