| Index: build/android/gradle/generate_gradle.py
|
| diff --git a/build/android/gradle/generate_gradle.py b/build/android/gradle/generate_gradle.py
|
| index 036b5a72494c890144f627b71dc684112d6c9843..6a6e850d7e833ef2093d95ae22711f9e3cfeefbb 100755
|
| --- a/build/android/gradle/generate_gradle.py
|
| +++ b/build/android/gradle/generate_gradle.py
|
| @@ -36,13 +36,18 @@ _JAVA_SUBDIR = 'symlinked-java'
|
| _SRCJARS_SUBDIR = 'extracted-srcjars'
|
|
|
| _DEFAULT_TARGETS = [
|
| - '//android_webview:system_webview_apk',
|
| + # TODO(agrieve): Requires alternate android.jar to compile.
|
| + # '//android_webview:system_webview_apk',
|
| '//android_webview/test:android_webview_apk',
|
| '//android_webview/test:android_webview_test_apk',
|
| + '//base:base_junit_tests',
|
| + '//chrome/android:chrome_junit_tests',
|
| '//chrome/android:chrome_public_apk',
|
| '//chrome/android:chrome_public_test_apk',
|
| '//chrome/android:chrome_sync_shell_apk',
|
| '//chrome/android:chrome_sync_shell_test_apk',
|
| + '//content/public/android:content_junit_tests',
|
| + '//content/shell/android:content_shell_apk',
|
| ]
|
|
|
| def _RebasePath(path_or_list, new_cwd=None, old_cwd=None):
|
| @@ -165,12 +170,15 @@ def _ComputeJavaSourceDirs(java_files):
|
| for path in java_files:
|
| path_root = path
|
| # Recognize these tokens as top-level.
|
| - while os.path.basename(path_root) not in ('javax', 'org', 'com', 'src'):
|
| - assert path_root, 'Failed to find source dir for ' + path
|
| - path_root = os.path.dirname(path_root)
|
| - # Assume that if we've hit "src", the we're at the root.
|
| - if os.path.basename(path_root) != 'src':
|
| + while True:
|
| path_root = os.path.dirname(path_root)
|
| + basename = os.path.basename(path_root)
|
| + assert basename, 'Failed to find source dir for ' + path
|
| + if basename in ('java', 'src'):
|
| + break
|
| + if basename in ('javax', 'org', 'com'):
|
| + path_root = os.path.dirname(path_root)
|
| + break
|
| found_roots.add(path_root)
|
| return list(found_roots)
|
|
|
| @@ -183,8 +191,6 @@ def _CreateSymlinkTree(entry_output_dir, symlink_dir, desired_files,
|
| it not listed by |desired_files|.
|
| """
|
| assert _IsSubpathOf(symlink_dir, entry_output_dir)
|
| - if os.path.exists(symlink_dir):
|
| - shutil.rmtree(symlink_dir)
|
|
|
| for target_path in desired_files:
|
| prefix = next(d for d in parent_dirs if target_path.startswith(d))
|
| @@ -218,9 +224,12 @@ def _CreateJavaSourceDir(output_dir, entry_output_dir, java_files):
|
| # Warn only about non-generated files that are missing.
|
| missing_java_files = [p for p in missing_java_files
|
| if not p.startswith(output_dir)]
|
| +
|
| + symlink_dir = os.path.join(entry_output_dir, _JAVA_SUBDIR)
|
| + shutil.rmtree(symlink_dir, True)
|
| +
|
| if unwanted_java_files:
|
| logging.debug('Target requires .java symlinks: %s', entry_output_dir)
|
| - symlink_dir = os.path.join(entry_output_dir, _JAVA_SUBDIR)
|
| _CreateSymlinkTree(entry_output_dir, symlink_dir, java_files, java_dirs)
|
| java_dirs = [symlink_dir]
|
|
|
| @@ -244,17 +253,32 @@ def _GenerateGradleFile(build_config, build_vars, java_dirs, relativize,
|
| deps_info = build_config['deps_info']
|
| gradle = build_config['gradle']
|
|
|
| + variables = {
|
| + 'sourceSetName': 'main',
|
| + 'depCompileName': 'compile',
|
| + }
|
| if deps_info['type'] == 'android_apk':
|
| target_type = 'android_apk'
|
| - elif deps_info['type'] == 'java_library' and not deps_info['is_prebuilt']:
|
| + elif deps_info['type'] == 'java_library':
|
| + if deps_info['is_prebuilt'] or deps_info['gradle_treat_as_prebuilt']:
|
| + return None
|
| +
|
| if deps_info['requires_android']:
|
| target_type = 'android_library'
|
| else:
|
| target_type = 'java_library'
|
| + elif deps_info['type'] == 'java_binary':
|
| + if gradle['main_class'] == 'org.chromium.testing.local.JunitTestMain':
|
| + target_type = 'android_junit'
|
| + variables['sourceSetName'] = 'test'
|
| + variables['depCompileName'] = 'testCompile'
|
| + else:
|
| + target_type = 'java_binary'
|
| + variables['main_class'] = gradle['main_class']
|
| else:
|
| return None
|
|
|
| - variables = {}
|
| + variables['target_name'] = os.path.splitext(deps_info['name'])[0]
|
| variables['template_type'] = target_type
|
| variables['use_gradle_process_resources'] = use_gradle_process_resources
|
| variables['build_tools_version'] = (
|
| @@ -264,6 +288,8 @@ def _GenerateGradleFile(build_config, build_vars, java_dirs, relativize,
|
| _DEFAULT_ANDROID_MANIFEST_PATH)
|
| variables['android_manifest'] = relativize(android_manifest)
|
| variables['java_dirs'] = relativize(java_dirs)
|
| + # TODO(agrieve): Add an option to use interface jars and see if that speeds
|
| + # things up at all.
|
| variables['prebuilts'] = relativize(gradle['dependent_prebuilt_jars'])
|
| deps = [_ProjectEntry.FromBuildConfigPath(p)
|
| for p in gradle['dependent_android_projects']]
|
| @@ -304,8 +330,7 @@ def _ExtractSrcjars(entry_output_dir, srcjar_tuples):
|
| extracted_paths = set(s[1] for s in srcjar_tuples)
|
| for extracted_path in extracted_paths:
|
| assert _IsSubpathOf(extracted_path, entry_output_dir)
|
| - if os.path.exists(extracted_path):
|
| - shutil.rmtree(extracted_path)
|
| + shutil.rmtree(extracted_path, True)
|
|
|
| for srcjar_path, extracted_path in srcjar_tuples:
|
| logging.info('Extracting %s to %s', srcjar_path, extracted_path)
|
| @@ -375,6 +400,8 @@ def main():
|
| # TODO(agrieve): See if it makes sense to utilize Gradle's test constructs
|
| # for our instrumentation tests.
|
| targets = [re.sub(r'_test_apk$', '_test_apk__apk', t) for t in targets]
|
| + targets = [re.sub(r'_junit_tests$', '_junit_tests__java_binary', t)
|
| + for t in targets]
|
|
|
| main_entries = [_ProjectEntry(t) for t in targets]
|
|
|
| @@ -396,7 +423,7 @@ def main():
|
| srcjar_tuples = []
|
| generated_inputs = []
|
| for entry in all_entries:
|
| - if entry.GetType() not in ('android_apk', 'java_library'):
|
| + if entry.GetType() not in ('android_apk', 'java_library', 'java_binary'):
|
| continue
|
|
|
| entry_output_dir = os.path.join(gradle_output_dir, entry.GradleSubdir())
|
|
|