Temporarily add support for conditional modules

Some bootclasspath libraries are currently conditionally included
in the SDK. Add support for that in api.go.

Bug: 169103987
Test: mmm frameworks/base/api
Change-Id: I7704a884675eb58c429a59f99a663cf09807ecec
This commit is contained in:
Anton Hansson
2022-01-12 17:28:39 +00:00
parent 7a173a626f
commit a8e3488cc3
2 changed files with 20 additions and 8 deletions

View File

@@ -126,6 +126,9 @@ combined_apis {
"framework-wifi", "framework-wifi",
"i18n.module.public.api", "i18n.module.public.api",
], ],
conditional_bootclasspath: [
"framework-supplementalapi",
],
system_server_classpath: [ system_server_classpath: [
"service-media-s", "service-media-s",
"service-permission", "service-permission",

View File

@@ -15,6 +15,8 @@
package api package api
import ( import (
"sort"
"github.com/google/blueprint/proptools" "github.com/google/blueprint/proptools"
"android/soong/android" "android/soong/android"
@@ -32,6 +34,8 @@ import (
type CombinedApisProperties struct { type CombinedApisProperties struct {
// Module libraries in the bootclasspath // Module libraries in the bootclasspath
Bootclasspath []string Bootclasspath []string
// Module libraries on the bootclasspath if include_nonpublic_framework_api is true.
Conditional_bootclasspath []string
// Module libraries in system server // Module libraries in system server
System_server_classpath []string System_server_classpath []string
} }
@@ -169,10 +173,10 @@ func remove(s []string, v string) []string {
return s2 return s2
} }
func createMergedTxts(ctx android.LoadHookContext, props CombinedApisProperties) { func createMergedTxts(ctx android.LoadHookContext, bootclasspath, system_server_classpath []string) {
var textFiles []MergedTxtDefinition var textFiles []MergedTxtDefinition
// Two module libraries currently do not support @SystemApi so only have the public scope. // Two module libraries currently do not support @SystemApi so only have the public scope.
bcpWithSystemApi := props.Bootclasspath bcpWithSystemApi := bootclasspath
bcpWithSystemApi = remove(bcpWithSystemApi, "conscrypt.module.public.api") bcpWithSystemApi = remove(bcpWithSystemApi, "conscrypt.module.public.api")
bcpWithSystemApi = remove(bcpWithSystemApi, "i18n.module.public.api") bcpWithSystemApi = remove(bcpWithSystemApi, "i18n.module.public.api")
@@ -181,7 +185,7 @@ func createMergedTxts(ctx android.LoadHookContext, props CombinedApisProperties)
textFiles = append(textFiles, MergedTxtDefinition{ textFiles = append(textFiles, MergedTxtDefinition{
TxtFilename: f, TxtFilename: f,
BaseTxt: ":non-updatable-" + f, BaseTxt: ":non-updatable-" + f,
Modules: props.Bootclasspath, Modules: bootclasspath,
ModuleTag: "{.public" + tagSuffix[i], ModuleTag: "{.public" + tagSuffix[i],
Scope: "public", Scope: "public",
}) })
@@ -202,7 +206,7 @@ func createMergedTxts(ctx android.LoadHookContext, props CombinedApisProperties)
textFiles = append(textFiles, MergedTxtDefinition{ textFiles = append(textFiles, MergedTxtDefinition{
TxtFilename: f, TxtFilename: f,
BaseTxt: ":non-updatable-system-server-" + f, BaseTxt: ":non-updatable-system-server-" + f,
Modules: props.System_server_classpath, Modules: system_server_classpath,
ModuleTag: "{.system-server" + tagSuffix[i], ModuleTag: "{.system-server" + tagSuffix[i],
Scope: "system-server", Scope: "system-server",
}) })
@@ -213,12 +217,17 @@ func createMergedTxts(ctx android.LoadHookContext, props CombinedApisProperties)
} }
func (a *CombinedApis) createInternalModules(ctx android.LoadHookContext) { func (a *CombinedApis) createInternalModules(ctx android.LoadHookContext) {
createMergedTxts(ctx, a.properties) bootclasspath := a.properties.Bootclasspath
if ctx.Config().VendorConfig("ANDROID").Bool("include_nonpublic_framework_api") {
bootclasspath = append(bootclasspath, a.properties.Conditional_bootclasspath...)
sort.Strings(bootclasspath)
}
createMergedTxts(ctx, bootclasspath, a.properties.System_server_classpath)
createMergedStubsSrcjar(ctx, a.properties.Bootclasspath) createMergedStubsSrcjar(ctx, bootclasspath)
// Conscrypt and i18n currently do not enable annotations // Conscrypt and i18n currently do not enable annotations
annotationModules := a.properties.Bootclasspath annotationModules := bootclasspath
annotationModules = remove(annotationModules, "conscrypt.module.public.api") annotationModules = remove(annotationModules, "conscrypt.module.public.api")
annotationModules = remove(annotationModules, "i18n.module.public.api") annotationModules = remove(annotationModules, "i18n.module.public.api")
createMergedAnnotations(ctx, annotationModules) createMergedAnnotations(ctx, annotationModules)
@@ -230,7 +239,7 @@ func (a *CombinedApis) createInternalModules(ctx android.LoadHookContext) {
// 3) It's a compromise. Ideally we wouldn't be filtering out any module APIs, and have // 3) It's a compromise. Ideally we wouldn't be filtering out any module APIs, and have
// per-module lint databases that excludes just that module's APIs. Alas, that's more // per-module lint databases that excludes just that module's APIs. Alas, that's more
// difficult to achieve. // difficult to achieve.
filteredModules := a.properties.Bootclasspath filteredModules := bootclasspath
filteredModules = remove(filteredModules, "art.module.public.api") filteredModules = remove(filteredModules, "art.module.public.api")
createFilteredApiVersions(ctx, filteredModules) createFilteredApiVersions(ctx, filteredModules)
} }