Merge "Add test to TestJavaStableSdkVersion for legacy core platform" am: 3769a27c5e

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1655611

Change-Id: I752f24a2e6b9763019866402a8af6adb3e96ee2a
This commit is contained in:
Treehugger Robot
2021-09-20 14:20:18 +00:00
committed by Automerger Merge Worker
4 changed files with 76 additions and 11 deletions

View File

@@ -382,7 +382,7 @@ func (j *Module) CheckStableSdkVersion(ctx android.BaseModuleContext) error {
return nil
}
if sdkVersion.Kind == android.SdkCorePlatform {
if useLegacyCorePlatformApiByName(j.BaseModuleName()) {
if useLegacyCorePlatformApi(ctx, j.BaseModuleName()) {
return fmt.Errorf("non stable SDK %v - uses legacy core platform", sdkVersion)
} else {
// Treat stable core platform as stable.

View File

@@ -228,17 +228,27 @@ func init() {
}
}
func useLegacyCorePlatformApi(ctx android.EarlyModuleContext) bool {
return useLegacyCorePlatformApiByName(ctx.ModuleName())
var legacyCorePlatformApiLookupKey = android.NewOnceKey("legacyCorePlatformApiLookup")
func getLegacyCorePlatformApiLookup(config android.Config) map[string]struct{} {
return config.Once(legacyCorePlatformApiLookupKey, func() interface{} {
return legacyCorePlatformApiLookup
}).(map[string]struct{})
}
func useLegacyCorePlatformApiByName(name string) bool {
_, found := legacyCorePlatformApiLookup[name]
// useLegacyCorePlatformApi checks to see whether the supplied module name is in the list of modules
// that are able to use the legacy core platform API and returns true if it does, false otherwise.
//
// This method takes the module name separately from the context as this may be being called for a
// module that is not the target of the supplied context.
func useLegacyCorePlatformApi(ctx android.EarlyModuleContext, moduleName string) bool {
lookup := getLegacyCorePlatformApiLookup(ctx.Config())
_, found := lookup[moduleName]
return found
}
func corePlatformSystemModules(ctx android.EarlyModuleContext) string {
if useLegacyCorePlatformApi(ctx) {
if useLegacyCorePlatformApi(ctx, ctx.ModuleName()) {
return config.LegacyCorePlatformSystemModules
} else {
return config.StableCorePlatformSystemModules
@@ -246,7 +256,7 @@ func corePlatformSystemModules(ctx android.EarlyModuleContext) string {
}
func corePlatformBootclasspathLibraries(ctx android.EarlyModuleContext) []string {
if useLegacyCorePlatformApi(ctx) {
if useLegacyCorePlatformApi(ctx, ctx.ModuleName()) {
return config.LegacyCorePlatformBootclasspathLibraries
} else {
return config.StableCorePlatformBootclasspathLibraries

View File

@@ -229,6 +229,26 @@ func FixtureConfigureApexBootJars(bootJars ...string) android.FixturePreparer {
)
}
// FixtureUseLegacyCorePlatformApi prepares the fixture by setting the exception list of those
// modules that are allowed to use the legacy core platform API to be the ones supplied.
func FixtureUseLegacyCorePlatformApi(moduleNames ...string) android.FixturePreparer {
lookup := make(map[string]struct{})
for _, moduleName := range moduleNames {
lookup[moduleName] = struct{}{}
}
return android.FixtureModifyConfig(func(config android.Config) {
// Try and set the legacyCorePlatformApiLookup in the config, the returned value will be the
// actual value that is set.
cached := config.Once(legacyCorePlatformApiLookupKey, func() interface{} {
return lookup
})
// Make sure that the cached value is the one we need.
if !reflect.DeepEqual(cached, lookup) {
panic(fmt.Errorf("attempting to set legacyCorePlatformApiLookupKey to %q but it has already been set to %q", lookup, cached))
}
})
}
// registerRequiredBuildComponentsForTest registers the build components used by
// PrepareForTestWithJavaDefaultModules.
//