Index: build/android/gyp/lint.py |
diff --git a/build/android/gyp/lint.py b/build/android/gyp/lint.py |
index 2efe9f856fb9611d3124912055940128df2687a9..f0735ec34b93204032af64855aa436861fbfc121 100755 |
--- a/build/android/gyp/lint.py |
+++ b/build/android/gyp/lint.py |
@@ -23,7 +23,7 @@ _SRC_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), |
def _OnStaleMd5(lint_path, config_path, processed_config_path, |
manifest_path, result_path, product_dir, sources, jar_path, |
- cache_dir, android_sdk_version, resource_dir=None, |
+ cache_dir, android_sdk_version, resource_sources, |
classpath=None, can_fail_build=False, silent=False): |
def _RelativizePath(path): |
"""Returns relative path to top-level src dir. |
@@ -89,8 +89,29 @@ def _OnStaleMd5(lint_path, config_path, processed_config_path, |
cmd.extend(['--classpath', _RelativizePath(jar_path)]) |
if processed_config_path: |
cmd.extend(['--config', _RelativizePath(processed_config_path)]) |
- if resource_dir: |
+ |
+ def _NewTempSubdir(prefix, all_subdirs): |
+ # Helper function to create a new sub directory based on the number of |
+ # subdirs created earlier. Path of the directory is appended to the |
+ # all_subdirs list. |
+ new_dir = os.path.join(temp_dir, prefix + str(len(all_subdirs))) |
+ os.mkdir(new_dir) |
+ all_subdirs.append(new_dir) |
+ return new_dir |
+ |
+ resource_dirs = [] |
+ for resource_source in resource_sources: |
+ if os.path.isdir(resource_source): |
+ resource_dirs.append(resource_source) |
+ else: |
+ # This is a zip file with generated resources (e. g. strings from GRD). |
+ # Extract it to temporary folder. |
+ resource_dir = _NewTempSubdir('r', resource_dirs) |
+ build_utils.ExtractAll(resource_source, path=resource_dir) |
+ |
+ for resource_dir in resource_dirs: |
cmd.extend(['--resources', _RelativizePath(resource_dir)]) |
+ |
if classpath: |
# --libraries is the classpath (excluding active target). |
cp = ':'.join(_RelativizePath(p) for p in classpath) |
@@ -102,12 +123,6 @@ def _OnStaleMd5(lint_path, config_path, processed_config_path, |
# into temporary directories (creating a new one whenever there is a name |
# conflict). |
src_dirs = [] |
- def NewSourceDir(): |
- new_dir = os.path.join(temp_dir, str(len(src_dirs))) |
- os.mkdir(new_dir) |
- src_dirs.append(new_dir) |
- return new_dir |
- |
def PathInDir(d, src): |
return os.path.join(d, os.path.basename(src)) |
@@ -118,11 +133,11 @@ def _OnStaleMd5(lint_path, config_path, processed_config_path, |
src_dir = d |
break |
if not src_dir: |
- src_dir = NewSourceDir() |
+ src_dir = _NewTempSubdir('s', src_dirs) |
cmd.extend(['--sources', _RelativizePath(src_dir)]) |
os.symlink(os.path.abspath(src), PathInDir(src_dir, src)) |
- project_dir = NewSourceDir() |
+ project_dir = _NewTempSubdir('p', []) |
if android_sdk_version: |
# Create dummy project.properies file in a temporary "project" directory. |
# It is the only way to add Android SDK to the Lint's classpath. Proper |
@@ -248,6 +263,10 @@ def main(): |
help='Path to processed lint suppressions file.') |
parser.add_argument('--resource-dir', |
help='Path to resource dir.') |
+ parser.add_argument('--resource-sources', default=[], action='append', |
+ help='GYP-list of resource sources (directories with ' |
+ 'resources or archives created by resource-generating ' |
+ 'tasks.') |
parser.add_argument('--silent', action='store_true', |
help='If set, script will not log anything.') |
parser.add_argument('--src-dirs', |
@@ -280,8 +299,6 @@ def main(): |
input_paths.append(args.jar_path) |
if args.manifest_path: |
input_paths.append(args.manifest_path) |
- if args.resource_dir: |
- input_paths.extend(build_utils.FindInDirectory(args.resource_dir, '*')) |
if sources: |
input_paths.extend(sources) |
classpath = [] |
@@ -289,6 +306,20 @@ def main(): |
classpath.extend(build_utils.ParseGypList(gyp_list)) |
input_paths.extend(classpath) |
+ resource_sources = [] |
+ if args.resource_dir: |
+ # Backward compatibility with GYP |
+ resource_sources += [ args.resource_dir ] |
+ |
+ for gyp_list in args.resource_sources: |
+ resource_sources += build_utils.ParseGypList(gyp_list) |
+ |
+ for resource_source in resource_sources: |
+ if os.path.isdir(resource_source): |
+ input_paths.extend(build_utils.FindInDirectory(resource_source, '*')) |
+ else: |
+ input_paths.append(resource_source) |
+ |
input_strings = [] |
if args.android_sdk_version: |
input_strings.append(args.android_sdk_version) |
@@ -306,7 +337,7 @@ def main(): |
args.jar_path, |
args.cache_dir, |
args.android_sdk_version, |
- resource_dir=args.resource_dir, |
+ resource_sources, |
classpath=classpath, |
can_fail_build=args.can_fail_build, |
silent=args.silent), |