Index: build/android/gyp/lint.py |
diff --git a/build/android/gyp/lint.py b/build/android/gyp/lint.py |
index 1e60c2e4d163d0b6f86680d6afe68f2923d155c1..b326ba81caaf43b55de0b365ffdc4c75a6b45e5e 100755 |
--- a/build/android/gyp/lint.py |
+++ b/build/android/gyp/lint.py |
@@ -19,8 +19,9 @@ _SRC_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), |
'..', '..', '..')) |
-def _RunLint(lint_path, config_path, processed_config_path, manifest_path, |
- result_path, product_dir, sources, jar_path, resource_dir=None): |
+def _OnStaleMd5(changes, lint_path, config_path, processed_config_path, |
+ manifest_path, result_path, product_dir, sources, jar_path, |
+ resource_dir=None, can_fail_build=False): |
def _RelativizePath(path): |
"""Returns relative path to top-level src dir. |
@@ -71,6 +72,10 @@ def _RunLint(lint_path, config_path, processed_config_path, manifest_path, |
print >> sys.stderr, error_line.encode('utf-8') |
return len(issues) |
+ if changes.AddedOrModifiedOnly(): |
+ changed_paths = set(changes.IterChangedPaths()) |
+ sources = [s for s in sources if s in changed_paths] |
+ |
with build_utils.TempDir() as temp_dir: |
_ProcessConfigFile() |
@@ -121,7 +126,7 @@ def _RunLint(lint_path, config_path, processed_config_path, manifest_path, |
if not os.path.exists(result_path): |
print 'Something is wrong:' |
print e |
- return 1 |
+ raise |
# There are actual lint issues |
else: |
@@ -132,7 +137,7 @@ def _RunLint(lint_path, config_path, processed_config_path, manifest_path, |
print 'File contents:' |
with open(result_path) as f: |
print f.read() |
- return 1 |
+ raise |
_ProcessResultFile() |
msg = ('\nLint found %d new issues.\n' |
@@ -147,9 +152,8 @@ def _RunLint(lint_path, config_path, processed_config_path, manifest_path, |
'lint', 'suppress.py')), |
_RelativizePath(result_path))) |
print >> sys.stderr, msg |
- return 1 |
- |
- return 0 |
+ if can_fail_build: |
+ raise Exception('Lint failed.') |
def main(): |
@@ -181,8 +185,6 @@ def main(): |
'result_path', 'product_dir', |
'jar_path']) |
- rc = 0 |
- |
if options.enable: |
sources = [] |
if options.src_dirs: |
@@ -193,21 +195,34 @@ def main(): |
else: |
print 'One of --src-dirs or --java-files must be specified.' |
return 1 |
- rc = _RunLint(options.lint_path, options.config_path, |
- options.processed_config_path, |
- options.manifest_path, options.result_path, |
- options.product_dir, sources, options.jar_path, |
- options.resource_dir) |
- if options.depfile: |
- build_utils.WriteDepfile( |
- options.depfile, |
- build_utils.GetPythonDependencies()) |
- |
- if options.stamp and not rc: |
- build_utils.Touch(options.stamp) |
- |
- return rc if options.can_fail_build else 0 |
+ input_paths = [ |
+ options.lint_path, |
+ options.config_path, |
+ options.manifest_path, |
+ options.jar_path, |
+ ] |
+ input_paths.extend(sources) |
+ if options.resource_dir: |
+ input_paths.extend(build_utils.FindInDirectory(options.resource_dir, '*')) |
+ |
+ input_strings = [ options.processed_config_path ] |
+ output_paths = [ options.result_path ] |
+ |
+ build_utils.CallAndWriteDepfileIfStale( |
+ lambda changes: _OnStaleMd5(changes, options.lint_path, |
+ options.config_path, |
+ options.processed_config_path, |
+ options.manifest_path, options.result_path, |
+ options.product_dir, sources, |
+ options.jar_path, |
+ resource_dir=options.resource_dir, |
+ can_fail_build=options.can_fail_build), |
+ options, |
+ input_paths=input_paths, |
+ input_strings=input_strings, |
+ output_paths=output_paths, |
+ pass_changes=True) |
if __name__ == '__main__': |