From 34ced82d2a4eccdabe62e453e56d46ce68c62c64 Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Fri, 1 May 2020 17:08:54 +0100 Subject: [PATCH] Fix soong crashing when there's no baseline file Soong was referencing the baseline file regardless of whether it was valid or not. Also update the lint message to match the one metalava itself prints, which only suggests whitelisting the error if it's not possible to fix it properly. Bug: 154616909 Test: m (with lint error) Change-Id: I4c6ec327a59aefe74825b4c4719393dd267ba3aa --- java/droiddoc.go | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/java/droiddoc.go b/java/droiddoc.go index 7ac71a468..1e950c13c 100644 --- a/java/droiddoc.go +++ b/java/droiddoc.go @@ -1489,20 +1489,37 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { updatedBaselineOutput := android.PathForModuleOut(ctx, "api_lint_baseline.txt") d.apiLintTimestamp = android.PathForModuleOut(ctx, "api_lint.timestamp") + msg := `` + + `************************************************************\n` + + `Your API changes are triggering API Lint warnings or errors.\n` + + `To make these errors go away, fix the code according to the\n` + + `error and/or warning messages above.\n` + + `\n` + + `If it's not possible to do so, there are workarounds:\n` + + `\n` + + `1. You can suppress the errors with @SuppressLint(\"\")\n` + if baselineFile.Valid() { cmd.FlagWithInput("--baseline ", baselineFile.Path()) cmd.FlagWithOutput("--update-baseline ", updatedBaselineOutput) + + msg += fmt.Sprintf(``+ + `2. You can update the baseline by executing the following\n`+ + ` command:\n`+ + ` cp \\ \n`+ + ` \"$PWD/%s\" \\ \n`+ + ` \"$PWD/%s\" \n`+ + ` To submit the revised baseline.txt to the main Android\n`+ + ` repository, you will need approval.\n`, updatedBaselineOutput, baselineFile.Path()) + } else { + msg += fmt.Sprintf(``+ + `2. You can add a baseline file of existing lint failures\n`+ + ` to the build rule of %s.\n`, d.Name()) } + msg += `************************************************************\n` zipSyncCleanupCmd(rule, srcJarDir) - msg := fmt.Sprintf(`\n******************************\n`+ - `Your API changes are triggering API Lint warnings or errors.\n\n`+ - `To make these errors go away, you have two choices:\n`+ - ` 1. You can suppress the errors with @SuppressLint(\"\").\n\n`+ - ` 2. You can update the baseline by executing the following command:\n`+ - ` cp \"$PWD/%s\" \"$PWD/%s\"\n\n`+ - `******************************\n`, updatedBaselineOutput, baselineFile.Path()) rule.Command(). Text("touch").Output(d.apiLintTimestamp). Text(") || (").