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

Unified 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, 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/android/gyp/javac.py ('k') | build/android/gyp/write_build_config.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 de815e1a47b7233c200398610bc766a20520e7c4..9b74f689d6db875dc132fd92a729165ff3dfbf85 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 contextlib
import fnmatch
import json
@@ -14,6 +15,7 @@ import sys
import tempfile
import zipfile
+
CHROMIUM_SRC = os.path.normpath(
os.path.join(os.path.dirname(__file__),
os.pardir, os.pardir, os.pardir, os.pardir))
@@ -66,6 +68,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 $.
@@ -73,6 +79,9 @@ def ParseGypList(gyp_string):
# https://code.google.com/p/gyp/issues/detail?id=327
# is addressed.
gyp_string = gyp_string.replace('##', '$')
+
+ if gyp_string.startswith('['):
+ return ParseGnList(gyp_string)
return shlex.split(gyp_string)
@@ -252,3 +261,45 @@ def WriteDepfile(path, dependencies):
depfile.write(': ')
depfile.write(' '.join(dependencies))
depfile.write('\n')
+
+
+def ExpandFileArgs(args):
+ """Replaces file-arg placeholders in args.
+
+ These placeholders have the form:
+ @(filename:key1:key2:...:keyn)
+
+ The value of such a placeholder is calculated by reading 'filename' as json.
+ And then extracting the value at [key1][key2]...[keyn].
+
+ Note: This intentionally does not return the list of files that appear in such
+ placeholders. An action that uses file-args *must* know the paths of those
+ files prior to the parsing of the arguments (typically by explicitly listing
+ them in the action's inputs in build files).
+ """
+ new_args = list(args)
+ file_jsons = dict()
+ for i, arg in enumerate(args):
+ start = arg.find('@(')
+ if start < 0:
+ continue
+ end = arg[start:].find(')')
+ if end < 0:
+ continue
+ end += start
+
+ if '@(' in arg[end:]:
+ raise Exception('Only one file-lookup-expansion is allowed in each arg.')
+
+ lookup_path = arg[start + 2:end].split(':')
+ file_path = lookup_path[0]
+ if not file_path in file_jsons:
+ file_jsons[file_path] = ReadJson(file_path)
+
+ expansion = file_jsons[file_path]
+ for k in lookup_path[1:]:
+ expansion = expansion[k]
+
+ new_args[i] = arg[:start] + str(expansion) + arg[end + 1:]
+ return new_args
+
« no previous file with comments | « build/android/gyp/javac.py ('k') | build/android/gyp/write_build_config.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698