0

Android: Apply jar_included_patterns to .jar.info files

It already had jar_excluded_patterns, but not jar_included_patterns.
This should fix SuperSize attributing size to JNI Zero placeholder
srcjars.

Bug: 399437822
Change-Id: I4af5fe1d45bc74ac61d3d142cf235506aa80543a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6333301
Auto-Submit: Andrew Grieve <agrieve@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: Andrew Grieve <agrieve@chromium.org>
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1429629}
This commit is contained in:
Andrew Grieve
2025-03-07 11:08:14 -08:00
committed by Chromium LUCI CQ
parent a2b7de5749
commit 67d3698897
2 changed files with 21 additions and 6 deletions
build
android
config

@ -155,9 +155,10 @@ def ParseJavaSource(data, services_map, path=None):
class _MetadataParser:
def __init__(self, chromium_code, excluded_globs):
def __init__(self, chromium_code, exclude_globs, include_globs):
self._chromium_code = chromium_code
self._excluded_globs = excluded_globs
self._exclude_globs = exclude_globs
self._include_globs = include_globs
# Map of .java path -> .srcjar/nested/path.java.
self._srcjar_files = {}
# Map of @ServiceImpl class -> impl class
@ -196,7 +197,10 @@ class _MetadataParser:
def _ShouldIncludeInJarInfo(self, fully_qualified_name):
name_as_class_glob = fully_qualified_name.replace('.', '/') + '.class'
return not build_utils.MatchesGlob(name_as_class_glob, self._excluded_globs)
if self._include_globs and not build_utils.MatchesGlob(
name_as_class_glob, self._include_globs):
return False
return not build_utils.MatchesGlob(name_as_class_glob, self._exclude_globs)
def ParseAndWriteInfoFile(self, output_path, java_files, kt_files=None):
"""Writes a .jar.info file.
@ -340,7 +344,8 @@ def _RunCompiler(changes,
build_utils.DeleteDirectory(temp_dir)
os.makedirs(temp_dir)
metadata_parser = _MetadataParser(options.chromium_code,
options.jar_info_exclude_globs)
options.jar_info_exclude_globs,
options.jar_info_include_globs)
try:
classes_dir = os.path.join(temp_dir, 'classes')
@ -494,6 +499,9 @@ def _ParseOptions(argv):
parser.add_argument(
'--jar-info-exclude-globs',
help='GN list of exclude globs to filter from generated .info files.')
parser.add_argument(
'--jar-info-include-globs',
help='GN list of inlclude globs to filter from generated .info files.')
parser.add_argument(
'--chromium-code',
action='store_true',
@ -532,6 +540,8 @@ def _ParseOptions(argv):
options.java_srcjars = action_helpers.parse_gn_list(options.java_srcjars)
options.jar_info_exclude_globs = action_helpers.parse_gn_list(
options.jar_info_exclude_globs)
options.jar_info_include_globs = action_helpers.parse_gn_list(
options.jar_info_include_globs)
additional_jar_files = []
for arg in options.additional_jar_files or []:
@ -644,8 +654,10 @@ def main(argv,
input_paths += [x[0] for x in options.additional_jar_files]
input_strings = (
javac_cmd + javac_args + options.classpath + java_files + kt_files +
[options.warnings_as_errors, options.jar_info_exclude_globs])
javac_cmd + javac_args + options.classpath + java_files + kt_files + [
options.warnings_as_errors, options.jar_info_exclude_globs,
options.jar_info_include_globs
])
# Use md5_check for |pass_changes| feature.
md5_check.CallAndWriteDepfileIfStale(do_it,

@ -3254,6 +3254,9 @@ if (enable_java_templates) {
if (defined(invoker.jar_excluded_patterns)) {
args += [ "--jar-info-exclude-globs=${invoker.jar_excluded_patterns}" ]
}
if (defined(invoker.jar_included_patterns)) {
args += [ "--jar-info-include-globs=${invoker.jar_included_patterns}" ]
}
if (invoker.enable_errorprone) {
# Our custom plugin pulls in the main errorprone dep transitively.