Merge changes from topic "revert-2929615-JHGJGJFRRX" into main

* changes:
  Revert "Additional cleanup prior to adding the runtime stubs"
  Revert "Generate runtime stubs in droidstubs"
This commit is contained in:
Treehugger Robot
2024-03-05 22:55:29 +00:00
committed by Gerrit Code Review
3 changed files with 52 additions and 136 deletions

View File

@@ -227,7 +227,6 @@ type currentApiTimestampProvider interface {
type annotationFlagsParams struct {
migratingNullability bool
validatingNullability bool
extractAnnotations bool
nullabilityWarningsFile android.WritablePath
annotationsZip android.WritablePath
}
@@ -243,19 +242,16 @@ type stubsCommandParams struct {
stubConfig stubsCommandConfigParams
}
type stubsCommandConfigParams struct {
stubsType StubsType
javaVersion javaVersion
deps deps
checkApi bool
generateStubs bool
doApiLint bool
doCheckReleased bool
writeSdkValues bool
migratingNullability bool
validatingNullability bool
annotationsEnabled bool
apiLevelsAnnotationsEnabled bool
extractAnnotations bool
stubsType StubsType
javaVersion javaVersion
deps deps
checkApi bool
generateStubs bool
doApiLint bool
doCheckReleased bool
writeSdkValues bool
migratingNullability bool
validatingNullability bool
}
// droidstubs passes sources files through Metalava to generate stub .java files that only contain the API to be
@@ -525,30 +521,30 @@ func (d *Droidstubs) stubsFlags(ctx android.ModuleContext, cmd *android.RuleBuil
}
func (d *Droidstubs) annotationsFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand, params annotationFlagsParams) {
cmd.Flag(config.MetalavaAnnotationsFlags)
if Bool(d.properties.Annotations_enabled) {
cmd.Flag(config.MetalavaAnnotationsFlags)
if params.migratingNullability {
previousApi := android.PathForModuleSrc(ctx, String(d.properties.Previous_api))
cmd.FlagWithInput("--migrate-nullness ", previousApi)
}
if params.migratingNullability {
previousApi := android.PathForModuleSrc(ctx, String(d.properties.Previous_api))
cmd.FlagWithInput("--migrate-nullness ", previousApi)
}
if s := String(d.properties.Validate_nullability_from_list); s != "" {
cmd.FlagWithInput("--validate-nullability-from-list ", android.PathForModuleSrc(ctx, s))
}
if s := String(d.properties.Validate_nullability_from_list); s != "" {
cmd.FlagWithInput("--validate-nullability-from-list ", android.PathForModuleSrc(ctx, s))
}
if params.validatingNullability {
cmd.FlagWithOutput("--nullability-warnings-txt ", params.nullabilityWarningsFile)
}
if params.validatingNullability {
cmd.FlagWithOutput("--nullability-warnings-txt ", params.nullabilityWarningsFile)
}
if params.extractAnnotations {
cmd.FlagWithOutput("--extract-annotations ", params.annotationsZip)
}
if len(d.properties.Merge_annotations_dirs) != 0 {
d.mergeAnnoDirFlags(ctx, cmd)
}
if len(d.properties.Merge_annotations_dirs) != 0 {
d.mergeAnnoDirFlags(ctx, cmd)
}
cmd.Flag(config.MetalavaAnnotationsWarningsFlags)
cmd.Flag(config.MetalavaAnnotationsWarningsFlags)
}
}
func (d *Droidstubs) mergeAnnoDirFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand) {
@@ -573,11 +569,9 @@ func (d *Droidstubs) inclusionAnnotationsFlags(ctx android.ModuleContext, cmd *a
})
}
func (d *Droidstubs) apiLevelsAnnotationsFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand, params stubsCommandParams) {
func (d *Droidstubs) apiLevelsAnnotationsFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand, stubsType StubsType, apiVersionsXml android.WritablePath) {
var apiVersions android.Path
stubsType := params.stubConfig.stubsType
apiVersionsXml := params.apiVersionsXml
if params.stubConfig.apiLevelsAnnotationsEnabled {
if proptools.Bool(d.properties.Api_levels_annotations_enabled) {
d.apiLevelsGenerationFlags(ctx, cmd, stubsType, apiVersionsXml)
apiVersions = apiVersionsXml
} else {
@@ -588,9 +582,7 @@ func (d *Droidstubs) apiLevelsAnnotationsFlags(ctx android.ModuleContext, cmd *a
} else if stubsType == Exportable {
apiVersions = s.exportableArtifacts.apiVersionsXml
} else {
// if the stubs type does not generate api-versions.xml file, default to using the
// everything artifacts
apiVersions = s.everythingArtifacts.apiVersionsXml
ctx.ModuleErrorf("%s stubs type does not generate api-versions.xml file", stubsType.String())
}
} else {
ctx.PropertyErrorf("api_levels_module",
@@ -824,16 +816,13 @@ func (d *Droidstubs) commonMetalavaStubCmd(ctx android.ModuleContext, rule *andr
annotationParams := annotationFlagsParams{
migratingNullability: params.stubConfig.migratingNullability,
validatingNullability: params.stubConfig.validatingNullability,
extractAnnotations: params.stubConfig.extractAnnotations,
nullabilityWarningsFile: params.nullabilityWarningsFile,
annotationsZip: params.annotationsZip,
}
if params.stubConfig.annotationsEnabled {
d.annotationsFlags(ctx, cmd, annotationParams)
}
d.annotationsFlags(ctx, cmd, annotationParams)
d.inclusionAnnotationsFlags(ctx, cmd)
d.apiLevelsAnnotationsFlags(ctx, cmd, params)
d.apiLevelsAnnotationsFlags(ctx, cmd, params.stubConfig.stubsType, params.apiVersionsXml)
d.expandArgs(ctx, cmd)
@@ -863,13 +852,13 @@ func (d *Droidstubs) everythingStubCmd(ctx android.ModuleContext, params stubsCo
d.everythingArtifacts.metadataZip = android.PathForModuleOut(ctx, Everything.String(), ctx.ModuleName()+"-metadata.zip")
}
if params.annotationsEnabled {
if Bool(d.properties.Annotations_enabled) {
if params.validatingNullability {
d.everythingArtifacts.nullabilityWarningsFile = android.PathForModuleOut(ctx, Everything.String(), ctx.ModuleName()+"_nullability_warnings.txt")
}
d.everythingArtifacts.annotationsZip = android.PathForModuleOut(ctx, Everything.String(), ctx.ModuleName()+"_annotations.zip")
}
if params.apiLevelsAnnotationsEnabled {
if Bool(d.properties.Api_levels_annotations_enabled) {
d.everythingArtifacts.apiVersionsXml = android.PathForModuleOut(ctx, Everything.String(), "api-versions.xml")
}
@@ -1047,7 +1036,7 @@ func (d *Droidstubs) exportableStubCmd(ctx android.ModuleContext, params stubsCo
optionalCmdParams.metadataDir = d.exportableArtifacts.metadataDir
}
if params.annotationsEnabled {
if Bool(d.properties.Annotations_enabled) {
if params.validatingNullability {
d.exportableArtifacts.nullabilityWarningsFile = android.PathForModuleOut(ctx, params.stubsType.String(), ctx.ModuleName()+"_nullability_warnings.txt")
optionalCmdParams.nullabilityWarningsFile = d.exportableArtifacts.nullabilityWarningsFile
@@ -1055,7 +1044,7 @@ func (d *Droidstubs) exportableStubCmd(ctx android.ModuleContext, params stubsCo
d.exportableArtifacts.annotationsZip = android.PathForModuleOut(ctx, params.stubsType.String(), ctx.ModuleName()+"_annotations.zip")
optionalCmdParams.annotationsZip = d.exportableArtifacts.annotationsZip
}
if params.apiLevelsAnnotationsEnabled {
if Bool(d.properties.Api_levels_annotations_enabled) {
d.exportableArtifacts.apiVersionsXml = android.PathForModuleOut(ctx, params.stubsType.String(), "api-versions.xml")
optionalCmdParams.apiVersionsXml = d.exportableArtifacts.apiVersionsXml
}
@@ -1073,38 +1062,6 @@ func (d *Droidstubs) exportableStubCmd(ctx android.ModuleContext, params stubsCo
d.optionalStubCmd(ctx, optionalCmdParams)
}
// Sandbox rule for generating runtime stubs
func (d *Droidstubs) runtimeStubCmd(ctx android.ModuleContext, params stubsCommandConfigParams) {
// We are only interested in generating the stubs srcjar,
// not other artifacts for the runtime stubs
params.checkApi = false
params.writeSdkValues = false
params.validatingNullability = false
params.extractAnnotations = false
params.apiLevelsAnnotationsEnabled = false
optionalCmdParams := stubsCommandParams{
stubConfig: params,
}
d.Javadoc.runtimeStubsSrcJar = android.PathForModuleOut(ctx, params.stubsType.String(), ctx.ModuleName()+"-"+"stubs.srcjar")
optionalCmdParams.stubsSrcJar = d.Javadoc.runtimeStubsSrcJar
// If aconfig_declarations property is not defined, all flagged apis symbols are stripped
// as no aconfig flags are enabled. In such case, the runtime stubs are identical to the
// exportable stubs, thus no additional metalava invocation is needed.
if len(d.properties.Aconfig_declarations) == 0 {
rule := android.NewRuleBuilder(pctx, ctx)
rule.Command().
Text("cp").Flag("-f").
Input(d.exportableStubsSrcJar).Output(d.runtimeStubsSrcJar)
rule.Build(fmt.Sprintf("metalava_%s", params.stubsType.String()), "metalava merged")
} else {
d.optionalStubCmd(ctx, optionalCmdParams)
}
}
func (d *Droidstubs) optionalStubCmd(ctx android.ModuleContext, params stubsCommandParams) {
params.srcJarDir = android.PathForModuleOut(ctx, params.stubConfig.stubsType.String(), "srcjars")
@@ -1176,8 +1133,6 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) {
annotationsEnabled := Bool(d.properties.Annotations_enabled)
extractAnnotations := annotationsEnabled
migratingNullability := annotationsEnabled && String(d.properties.Previous_api) != ""
validatingNullability := annotationsEnabled && (strings.Contains(String(d.Javadoc.properties.Args), "--validate-nullability-from-merged-stubs") ||
String(d.properties.Validate_nullability_from_list) != "")
@@ -1185,40 +1140,27 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) {
checkApi := apiCheckEnabled(ctx, d.properties.Check_api.Current, "current") ||
apiCheckEnabled(ctx, d.properties.Check_api.Last_released, "last_released")
apiLevelsAnnotationsEnabled := proptools.Bool(d.properties.Api_levels_annotations_enabled)
stubCmdParams := stubsCommandConfigParams{
javaVersion: javaVersion,
deps: deps,
checkApi: checkApi,
generateStubs: generateStubs,
doApiLint: doApiLint,
doCheckReleased: doCheckReleased,
writeSdkValues: writeSdkValues,
migratingNullability: migratingNullability,
validatingNullability: validatingNullability,
annotationsEnabled: annotationsEnabled,
apiLevelsAnnotationsEnabled: apiLevelsAnnotationsEnabled,
extractAnnotations: extractAnnotations,
javaVersion: javaVersion,
deps: deps,
checkApi: checkApi,
generateStubs: generateStubs,
doApiLint: doApiLint,
doCheckReleased: doCheckReleased,
writeSdkValues: writeSdkValues,
migratingNullability: migratingNullability,
validatingNullability: validatingNullability,
}
stubCmdParams.stubsType = Everything
// Create default (i.e. "everything" stubs) rule for metalava
d.everythingStubCmd(ctx, stubCmdParams)
// The module generates "exportable" stubs regardless of whether
// The module generates "exportable" (and "runtime" eventually) stubs regardless of whether
// aconfig_declarations property is defined or not. If the property is not defined, the module simply
// strips all flagged apis to generate the "exportable" stubs
stubCmdParams.stubsType = Exportable
d.exportableStubCmd(ctx, stubCmdParams)
// "runtime" stubs do not generate any other artifacts than the stubs.
// Therefore, metalava does not have to run for "runtime" configuration
// when the module does not generate stubs.
if stubCmdParams.generateStubs {
stubCmdParams.stubsType = Runtime
d.runtimeStubCmd(ctx, stubCmdParams)
}
if apiCheckEnabled(ctx, d.properties.Check_api.Current, "current") {
if len(d.Javadoc.properties.Out) > 0 {