From e09e20ec47869ff99a1fc53973e64caa716a327d Mon Sep 17 00:00:00 2001 From: Liz Kammer Date: Mon, 16 Oct 2023 15:07:54 -0400 Subject: [PATCH 1/2] Share constants for droidstubs btw Soong & Bazel Test: m bp2build && verify constants Change-Id: I04865414fb627672821b10d8bcc736379dc3da86 --- java/config/Android.bp | 1 + java/config/droidstubs.go | 85 +++++++++++++++++++++++++++++++++++++++ java/droidstubs.go | 37 +++-------------- 3 files changed, 91 insertions(+), 32 deletions(-) create mode 100644 java/config/droidstubs.go diff --git a/java/config/Android.bp b/java/config/Android.bp index 194e2c6ed..bfe83ab8c 100644 --- a/java/config/Android.bp +++ b/java/config/Android.bp @@ -12,6 +12,7 @@ bootstrap_go_package { ], srcs: [ "config.go", + "droidstubs.go", "error_prone.go", "kotlin.go", "makevars.go", diff --git a/java/config/droidstubs.go b/java/config/droidstubs.go new file mode 100644 index 000000000..59cee1d61 --- /dev/null +++ b/java/config/droidstubs.go @@ -0,0 +1,85 @@ +// Copyright 2023 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package config + +import "strings" + +var ( + metalavaFlags = []string{ + "--color", + "--quiet", + "--format=v2", + "--repeat-errors-max 10", + "--hide UnresolvedImport", + "--hide InvalidNullabilityOverride", + // b/223382732 + "--hide ChangedDefault", + + // Force metalava to ignore classes on the classpath when an API file contains missing classes. + // See b/285140653 for more information. + "--api-class-resolution api", + + // Force metalava to sort overloaded methods by their order in the source code. + // See b/285312164 for more information. + // And add concrete overrides of abstract methods, see b/299366704 for more + // information. + "--format-defaults overloaded-method-order=source,add-additional-overrides=yes", + } + + MetalavaFlags = strings.Join(metalavaFlags, " ") + + metalavaAnnotationsFlags = []string{ + "--include-annotations", + "--exclude-annotation androidx.annotation.RequiresApi", + } + + MetalavaAnnotationsFlags = strings.Join(metalavaAnnotationsFlags, " ") + + metalavaAnnotationsWarningsFlags = []string{ + // TODO(tnorbye): find owners to fix these warnings when annotation was enabled. + "--hide HiddenTypedefConstant", + "--hide SuperfluousPrefix", + "--hide AnnotationExtraction", + // b/222738070 + "--hide BannedThrow", + // b/223382732 + "--hide ChangedDefault", + } + + MetalavaAnnotationsWarningsFlags = strings.Join(metalavaAnnotationsWarningsFlags, " ") + + metalavaHideFlaggedApis = []string{ + "--hide-annotation", + "android.annotation.FlaggedApi", + } + + MetalavaHideFlaggedApis = strings.Join(metalavaHideFlaggedApis, " ") +) + +const ( + MetalavaAddOpens = "-J--add-opens=java.base/java.util=ALL-UNNAMED" +) + +func init() { + exportedVars.ExportStringList("MetalavaFlags", metalavaFlags) + + exportedVars.ExportString("MetalavaAddOpens", MetalavaAddOpens) + + exportedVars.ExportStringList("MetalavaHideFlaggedApis", metalavaHideFlaggedApis) + + exportedVars.ExportStringListStaticVariable("MetalavaAnnotationsFlags", metalavaAnnotationsFlags) + + exportedVars.ExportStringListStaticVariable("MetalavaAnnotationWarningsFlags", metalavaAnnotationsWarningsFlags) +} diff --git a/java/droidstubs.go b/java/droidstubs.go index 7cb4743b5..8039d0515 100644 --- a/java/droidstubs.go +++ b/java/droidstubs.go @@ -322,9 +322,7 @@ func (d *Droidstubs) stubsFlags(ctx android.ModuleContext, cmd *android.RuleBuil func (d *Droidstubs) annotationsFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand) { if Bool(d.properties.Annotations_enabled) { - cmd.Flag("--include-annotations") - - cmd.FlagWithArg("--exclude-annotation ", "androidx.annotation.RequiresApi") + cmd.Flag(config.MetalavaAnnotationsFlags) validatingNullability := strings.Contains(String(d.Javadoc.properties.Args), "--validate-nullability-from-merged-stubs") || @@ -352,14 +350,7 @@ func (d *Droidstubs) annotationsFlags(ctx android.ModuleContext, cmd *android.Ru d.mergeAnnoDirFlags(ctx, cmd) } - // TODO(tnorbye): find owners to fix these warnings when annotation was enabled. - cmd.FlagWithArg("--hide ", "HiddenTypedefConstant"). - FlagWithArg("--hide ", "SuperfluousPrefix"). - FlagWithArg("--hide ", "AnnotationExtraction"). - // b/222738070 - FlagWithArg("--hide ", "BannedThrow"). - // b/223382732 - FlagWithArg("--hide ", "ChangedDefault") + cmd.Flag(config.MetalavaAnnotationsWarningsFlags) } } @@ -519,7 +510,7 @@ func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersi cmd.BuiltTool("metalava").ImplicitTool(ctx.Config().HostJavaToolPath(ctx, "metalava.jar")). Flag(config.JavacVmFlags). - Flag("-J--add-opens=java.base/java.util=ALL-UNNAMED"). + Flag(config.MetalavaAddOpens). FlagWithArg("--java-source ", javaVersion.String()). FlagWithRspFileInputList("@", android.PathForModuleOut(ctx, "metalava.rsp"), srcs). FlagWithInput("@", srcJarList) @@ -532,27 +523,9 @@ func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersi cmd.FlagWithInputList("--classpath ", combinedPaths, ":") } - cmd.Flag("--color"). - Flag("--quiet"). - Flag("--format=v2"). - FlagWithArg("--repeat-errors-max ", "10"). - FlagWithArg("--hide ", "UnresolvedImport"). - FlagWithArg("--hide ", "InvalidNullabilityOverride"). - // b/223382732 - FlagWithArg("--hide ", "ChangedDefault") - - // Force metalava to ignore classes on the classpath when an API file contains missing classes. - // See b/285140653 for more information. - cmd.FlagWithArg("--api-class-resolution ", "api") - - // Force metalava to sort overloaded methods by their order in the source code. - // See b/285312164 for more information. - // And add concrete overrides of abstract methods, see b/299366704 for more - // information. - cmd.FlagWithArg("--format-defaults ", "overloaded-method-order=source,add-additional-overrides=yes") - + cmd.Flag(config.MetalavaFlags) if ctx.DeviceConfig().HideFlaggedApis() { - cmd.FlagWithArg("--hide-annotation ", "android.annotation.FlaggedApi") + cmd.Flag(config.MetalavaHideFlaggedApis) } return cmd From ba5f32a2f9f48ebc1399ece9ee77dced868d78bc Mon Sep 17 00:00:00 2001 From: Liz Kammer Date: Mon, 16 Oct 2023 16:27:31 -0400 Subject: [PATCH 2/2] Improve error message readability Test: n/a Change-Id: Iceb0b68f4b83e2b43c0947885c514252a6de30c1 --- android/config_bp2build.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/config_bp2build.go b/android/config_bp2build.go index 2beeb51ec..b632e3302 100644 --- a/android/config_bp2build.go +++ b/android/config_bp2build.go @@ -201,7 +201,7 @@ func (m ExportedStringVariables) asBazel(config Config, panic(fmt.Errorf("error expanding config variable %s: %s", k, err)) } if len(expandedVar) > 1 { - panic(fmt.Errorf("%s expands to more than one string value: %s", variableValue, expandedVar)) + panic(fmt.Errorf("%q expands to more than one string value: %q", variableValue, expandedVar)) } ret = append(ret, bazelConstant{ variableName: k,