API: Add baseline file for API check

Bug: 139128921
Test: m apicheck
Change-Id: Ia10c51fdca10e2a3d1cc3a7bc6d798d447c7b729
Merged-In: Ia10c51fdca10e2a3d1cc3a7bc6d798d447c7b729
This commit is contained in:
Adrian Roos 2019-08-12 17:54:09 +02:00
parent 43377eeb38
commit 4937c4a8ba
1 changed files with 33 additions and 9 deletions

View File

@ -227,6 +227,9 @@ type ApiToCheck struct {
// :module syntax).
Removed_api_file *string `android:"path"`
// If not blank, path to the baseline txt file for approved API check violations.
Baseline_file *string `android:"path"`
// Arguments to the apicheck tool.
Args *string
}
@ -1562,16 +1565,25 @@ func (d *Droidstubs) transformMetalava(ctx android.ModuleContext, implicits andr
}
func (d *Droidstubs) transformCheckApi(ctx android.ModuleContext,
apiFile, removedApiFile android.Path, implicits android.Paths,
apiFile, removedApiFile android.Path, baselineFile android.OptionalPath, updatedBaselineOut android.WritablePath, implicits android.Paths,
javaVersion, bootclasspathArgs, classpathArgs, sourcepathArgs, opts, subdir, msg string,
output android.WritablePath) {
implicits = append(android.Paths{apiFile, removedApiFile, d.apiFile, d.removedApiFile}, implicits...)
var implicitOutputs android.WritablePaths
if baselineFile.Valid() {
implicits = append(implicits, baselineFile.Path())
implicitOutputs = append(implicitOutputs, updatedBaselineOut)
}
ctx.Build(pctx, android.BuildParams{
Rule: metalavaApiCheck,
Description: "Metalava Check API",
Output: output,
Inputs: d.Javadoc.srcFiles,
Implicits: append(android.Paths{apiFile, removedApiFile, d.apiFile, d.removedApiFile},
implicits...),
Rule: metalavaApiCheck,
Description: "Metalava Check API",
Output: output,
Inputs: d.Javadoc.srcFiles,
Implicits: implicits,
ImplicitOutputs: implicitOutputs,
Args: map[string]string{
"srcJarDir": android.PathForModuleOut(ctx, subdir, "srcjars").String(),
"srcJars": strings.Join(d.Javadoc.srcJars.Strings(), " "),
@ -1655,13 +1667,19 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) {
"check_api.current.api_file")
removedApiFile := ctx.ExpandSource(String(d.properties.Check_api.Current.Removed_api_file),
"check_api.current_removed_api_file")
baselineFile := ctx.ExpandOptionalSource(d.properties.Check_api.Current.Baseline_file,
"check_api.current.baseline_file")
d.checkCurrentApiTimestamp = android.PathForModuleOut(ctx, "check_current_api.timestamp")
opts := " " + d.Javadoc.args + " --check-compatibility:api:current " + apiFile.String() +
" --check-compatibility:removed:current " + removedApiFile.String() +
flags.metalavaInclusionAnnotationsFlags + flags.metalavaMergeAnnoDirFlags + " "
baselineOut := android.PathForModuleOut(ctx, "current_baseline.txt")
if baselineFile.Valid() {
opts = opts + "--baseline " + baselineFile.String() + " --update-baseline " + baselineOut.String() + " "
}
d.transformCheckApi(ctx, apiFile, removedApiFile, metalavaCheckApiImplicits,
d.transformCheckApi(ctx, apiFile, removedApiFile, baselineFile, baselineOut, metalavaCheckApiImplicits,
javaVersion, flags.bootClasspathArgs, flags.classpathArgs, flags.sourcepathArgs, opts, "current-apicheck",
fmt.Sprintf(`\n******************************\n`+
`You have tried to change the API from what has been previously approved.\n\n`+
@ -1686,13 +1704,19 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) {
"check_api.last_released.api_file")
removedApiFile := ctx.ExpandSource(String(d.properties.Check_api.Last_released.Removed_api_file),
"check_api.last_released.removed_api_file")
baselineFile := ctx.ExpandOptionalSource(d.properties.Check_api.Last_released.Baseline_file,
"check_api.last_released.baseline_file")
d.checkLastReleasedApiTimestamp = android.PathForModuleOut(ctx, "check_last_released_api.timestamp")
opts := " " + d.Javadoc.args + " --check-compatibility:api:released " + apiFile.String() +
flags.metalavaInclusionAnnotationsFlags + " --check-compatibility:removed:released " +
removedApiFile.String() + flags.metalavaMergeAnnoDirFlags + " "
baselineOut := android.PathForModuleOut(ctx, "last_released_baseline.txt")
if baselineFile.Valid() {
opts = opts + "--baseline " + baselineFile.String() + " --update-baseline " + baselineOut.String() + " "
}
d.transformCheckApi(ctx, apiFile, removedApiFile, metalavaCheckApiImplicits,
d.transformCheckApi(ctx, apiFile, removedApiFile, baselineFile, baselineOut, metalavaCheckApiImplicits,
javaVersion, flags.bootClasspathArgs, flags.classpathArgs, flags.sourcepathArgs, opts, "last-apicheck",
`\n******************************\n`+
`You have tried to change the API from what has been previously released in\n`+