Merge "Add test to TestJavaStableSdkVersion for legacy core platform"
This commit is contained in:
@@ -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.
|
||||
|
@@ -163,17 +163,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
|
||||
@@ -181,7 +191,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
|
||||
|
@@ -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.
|
||||
//
|
||||
|
Reference in New Issue
Block a user