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

Unified Diff: build/android/gyp/lint.py

Issue 1870073002: Properly set up classpath for Android Lint (and fix its stderr filter) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Skip --android-sdk-version for GYP build Created 4 years, 8 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/android_lint_cache.gyp ('k') | build/config/android/internal_rules.gni » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/gyp/lint.py
diff --git a/build/android/gyp/lint.py b/build/android/gyp/lint.py
index 6f74d66d2b48c2fb445397b7aeb6c65f7a60e71b..72d81033d11267ea0201c372d34450ac41b96186 100755
--- a/build/android/gyp/lint.py
+++ b/build/android/gyp/lint.py
@@ -9,6 +9,7 @@
import argparse
import os
+import re
import sys
import traceback
from xml.dom import minidom
@@ -22,9 +23,8 @@ _SRC_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__),
def _OnStaleMd5(changes, lint_path, config_path, processed_config_path,
manifest_path, result_path, product_dir, sources, jar_path,
- cache_dir, resource_dir=None, classpath=None,
- can_fail_build=False, silent=False):
-
+ cache_dir, android_sdk_version, resource_dir=None,
+ classpath=None, can_fail_build=False, silent=False):
def _RelativizePath(path):
"""Returns relative path to top-level src dir.
@@ -129,14 +129,22 @@ def _OnStaleMd5(changes, lint_path, config_path, processed_config_path,
cmd.extend(['--sources', _RelativizePath(src_dir)])
os.symlink(os.path.abspath(src), PathInDir(src_dir, src))
+ project_dir = NewSourceDir()
+ 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
+ # classpath is necessary for most source-level checks.
+ with open(os.path.join(project_dir, 'project.properties'), 'w') \
+ as propfile:
+ print >> propfile, 'target=android-{}'.format(android_sdk_version)
+
# Put the manifest in a temporary directory in order to avoid lint detecting
# sibling res/ and src/ directories (which should be pass explicitly if they
# are to be included).
if manifest_path:
- src_dir = NewSourceDir()
os.symlink(os.path.abspath(manifest_path),
- PathInDir(src_dir, manifest_path))
- cmd.append(src_dir)
+ PathInDir(project_dir, manifest_path))
+ cmd.append(project_dir)
if os.path.exists(result_path):
os.remove(result_path)
@@ -144,10 +152,12 @@ def _OnStaleMd5(changes, lint_path, config_path, processed_config_path,
env = {}
stderr_filter = None
if cache_dir:
+ env['_JAVA_OPTIONS'] = '-Duser.home=%s' % _RelativizePath(cache_dir)
# When _JAVA_OPTIONS is set, java prints to stderr:
# Picked up _JAVA_OPTIONS: ...
- env['_JAVA_OPTIONS'] = '-Duser.home=%s' % _RelativizePath(cache_dir)
- stderr_filter = lambda l: '' if '_JAVA_OPTIONS' in l else l
+ #
+ # We drop all lines that contain _JAVA_OPTIONS from the output
+ stderr_filter = lambda l: re.sub(r'.*_JAVA_OPTIONS.*\n?', '', l)
try:
build_utils.CheckOutput(cmd, cwd=_SRC_ROOT, env=env or None,
@@ -225,6 +235,9 @@ def main():
'directory tree should be stored.')
parser.add_argument('--platform-xml-path', required=True,
help='Path to api-platforms.xml')
+ parser.add_argument('--android-sdk-version',
+ help='Version (API level) of the Android SDK used for '
+ 'building.')
parser.add_argument('--create-cache', action='store_true',
help='Mark the lint cache file as an output rather than '
'an input.')
@@ -289,6 +302,8 @@ def main():
input_paths.extend(classpath)
input_strings = []
+ if args.android_sdk_version:
+ input_strings.append(args.android_sdk_version)
if args.processed_config_path:
input_strings.append(args.processed_config_path)
@@ -302,6 +317,7 @@ def main():
args.product_dir, sources,
args.jar_path,
args.cache_dir,
+ args.android_sdk_version,
resource_dir=args.resource_dir,
classpath=classpath,
can_fail_build=args.can_fail_build,
« no previous file with comments | « build/android/android_lint_cache.gyp ('k') | build/config/android/internal_rules.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698