Android: Make missing dep suggestions more copy / pasteable
Bug: None Change-Id: I01b59489312ea1c367f50f3c229ea9396bd8b2fa Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3457782 Reviewed-by: Peter Wen <wnwen@chromium.org> Reviewed-by: Sky Malice <skym@chromium.org> Commit-Queue: Andrew Grieve <agrieve@chromium.org> Cr-Commit-Position: refs/heads/main@{#970697}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
35d3490b2c
commit
048ea3976d
build/android
chrome/android/features/android_library_factory/test
docs
@ -25,7 +25,9 @@ import lookup_dep
|
||||
|
||||
class JavacOutputProcessor:
|
||||
def __init__(self, target_name):
|
||||
self._target_name = target_name
|
||||
self._target_name = self._RemoveSuffixesIfPresent(
|
||||
["__compile_java", "__errorprone", "__header"], target_name)
|
||||
self._suggested_deps = set()
|
||||
|
||||
# Example: ../../ui/android/java/src/org/chromium/ui/base/Clipboard.java:45:
|
||||
fileline_prefix = (
|
||||
@ -40,8 +42,7 @@ class JavacOutputProcessor:
|
||||
# Matches output modification performed by _ElaborateLineForUnknownSymbol()
|
||||
# so that it can be colorized.
|
||||
# Example: org.chromium.base.Log found in dep //base:base_java.
|
||||
self._please_add_dep_re = re.compile(
|
||||
r'(?P<full_message>Please add //[\w/:]+ dep to //[\w/:]+.*)$')
|
||||
self._please_add_dep_re = re.compile(r'(?P<full_message>Hint:.*)$')
|
||||
|
||||
# First element in pair is bool which indicates whether the missing
|
||||
# class/package is part of the error message.
|
||||
@ -80,7 +81,13 @@ class JavacOutputProcessor:
|
||||
- Suggests GN dep to add for 'unresolved symbol in Java import' errors.
|
||||
"""
|
||||
lines = self._ElaborateLinesForUnknownSymbol(iter(lines))
|
||||
return (self._ApplyColors(l) for l in lines)
|
||||
for line in lines:
|
||||
yield self._ApplyColors(line)
|
||||
if self._suggested_deps:
|
||||
# Show them in quotes so they can be copy/pasted into BUILD.gn files.
|
||||
yield "Full list of deps to add to {}:".format(self._target_name)
|
||||
for dep in sorted(self._suggested_deps):
|
||||
yield ' "{}",'.format(dep)
|
||||
|
||||
def _ElaborateLinesForUnknownSymbol(self, lines):
|
||||
""" Elaborates passed-in javac output for unresolved symbols.
|
||||
@ -152,15 +159,14 @@ class JavacOutputProcessor:
|
||||
|
||||
suggested_target = suggested_deps[0].target
|
||||
|
||||
target_name = self._RemoveSuffixesIfPresent(
|
||||
["__compile_java", "__errorprone", "__header"], self._target_name)
|
||||
if not has_missing_symbol_in_error_msg:
|
||||
line = "{} {}".format(line, class_to_lookup)
|
||||
|
||||
self._suggested_deps.add(suggested_target)
|
||||
return [
|
||||
line,
|
||||
"Please add {} dep to {}. ".format(suggested_target, target_name) +
|
||||
"File a crbug if this suggestion is incorrect.",
|
||||
'Hint: Add "{}" to deps of {}'.format(suggested_target,
|
||||
self._target_name),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
|
@ -55,12 +55,12 @@ if (enable_java_templates) {
|
||||
rebase_path(import_child_missing_symbol_test_nocompile_sources,
|
||||
"",
|
||||
"nocompile_gn")
|
||||
expected_compile_output_regex = "error: package test\.missing_symbol\.sub does not exist\nPlease add //build/android/test/nocompile_gn:sub_b_java dep to //build/android/test/nocompile_gn:import_child_missing_symbol_test_java\."
|
||||
expected_compile_output_regex = "error: package test\.missing_symbol\.sub does not exist\nHint: Add \"//build/android/test/nocompile_gn:sub_b_java\" to deps of //build/android/test/nocompile_gn:import_child_missing_symbol_test_java"
|
||||
},
|
||||
{
|
||||
target = "nocompile_gn:import_parent_missing_symbol_test_java"
|
||||
nocompile_sources = []
|
||||
expected_compile_output_regex = "error: cannot find symbol test\.missing_symbol\.B\nPlease add //build/android/test/nocompile_gn:b_java dep to //build/android/test/nocompile_gn:import_parent_missing_symbol_test_java\."
|
||||
expected_compile_output_regex = "error: cannot find symbol test\.missing_symbol\.B\nHint: Add \"//build/android/test/nocompile_gn:b_java\" to deps of //build/android/test/nocompile_gn:import_parent_missing_symbol_test_java"
|
||||
},
|
||||
{
|
||||
target = "nocompile_gn:import_turbine_missing_symbol_test_java"
|
||||
@ -68,17 +68,17 @@ if (enable_java_templates) {
|
||||
rebase_path(import_turbine_missing_symbol_test_nocompile_sources,
|
||||
"",
|
||||
"nocompile_gn")
|
||||
expected_compile_output_regex = "error: symbol not found test\.missing_symbol\.B\nPlease add //build/android/test/nocompile_gn:b_java dep to //build/android/test/nocompile_gn:import_turbine_missing_symbol_test_java\."
|
||||
expected_compile_output_regex = "error: symbol not found test\.missing_symbol\.B\nHint: Add \"//build/android/test/nocompile_gn:b_java\" to deps of //build/android/test/nocompile_gn:import_turbine_missing_symbol_test_java"
|
||||
},
|
||||
{
|
||||
target = "nocompile_gn:prebuilt_missing_symbol_test_java"
|
||||
nocompile_sources = []
|
||||
expected_compile_output_regex = "error: cannot find symbol test\.missing_symbol\.C\nPlease add //build/android/test/nocompile_gn:c_prebuilt_java dep to //build/android/test/nocompile_gn:prebuilt_missing_symbol_test_java\."
|
||||
expected_compile_output_regex = "error: cannot find symbol test\.missing_symbol\.C\nHint: Add \"//build/android/test/nocompile_gn:c_prebuilt_java\" to deps of //build/android/test/nocompile_gn:prebuilt_missing_symbol_test_java"
|
||||
},
|
||||
{
|
||||
target = "nocompile_gn:cpp_template_missing_symbol_test_java"
|
||||
nocompile_sources = []
|
||||
expected_compile_output_regex = "error: cannot find symbol test\.missing_symbol\.D\nPlease add //build/android/test/nocompile_gn:d_java dep to //build/android/test/nocompile_gn:cpp_template_missing_symbol_test_java\."
|
||||
expected_compile_output_regex = "error: cannot find symbol test\.missing_symbol\.D\nHint: Add \"//build/android/test/nocompile_gn:d_java\" to deps of //build/android/test/nocompile_gn:cpp_template_missing_symbol_test_java"
|
||||
},
|
||||
]
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ android_nocompile_test_suite("android_lookup_dep_tests") {
|
||||
{
|
||||
target = "nocompile_gn:android_library_factory_missing_symbol_test_java"
|
||||
nocompile_sources = []
|
||||
expected_compile_output_regex = "error: package org\.chromium\.chrome\.browser\.android_library_factory does not exist\nPlease add //chrome/android/features/android_library_factory/test/nocompile_gn:b_factory_java dep to //chrome/android/features/android_library_factory/test/nocompile_gn:android_library_factory_missing_symbol_test_java\."
|
||||
expected_compile_output_regex = "error: package org\.chromium\.chrome\.browser\.android_library_factory does not exist\nHint: Add \"//chrome/android/features/android_library_factory/test/nocompile_gn:b_factory_java\" to deps of //chrome/android/features/android_library_factory/test/nocompile_gn:android_library_factory_missing_symbol_test_java"
|
||||
},
|
||||
]
|
||||
}
|
||||
|
@ -166,7 +166,7 @@ You may see an error like this when compiling:
|
||||
$ autoninja -C out/Default base/foo_java
|
||||
util.build_utils.CalledProcessError: Command failed: ...
|
||||
org/chromium/chrome/FooBar.java:13: error: symbol not found androidx.annotation.IntDef
|
||||
Please add //third_party/androidx:androidx_annotation_annotation_java dep to //base/foo_java. File a crbug if this suggestion is incorrect.
|
||||
Hint: Add "//third_party/androidx:androidx_annotation_annotation_java" to deps of //base/foo_java
|
||||
import androidx.annotation.IntDef;
|
||||
^
|
||||
org/chromium/chrome/FooBar.java:18: error: could not resolve IntDef
|
||||
|
Reference in New Issue
Block a user