diff options
| author | 2021-04-30 12:56:56 +0000 | |
|---|---|---|
| committer | 2021-04-30 12:56:56 +0000 | |
| commit | 3f9af76391ba10714caa29684978393ce1539307 (patch) | |
| tree | 00855ce0b3a53f5a25480a14e80cb5c9cf905b88 /java/platform_bootclasspath.go | |
| parent | f794e8269d7f2843155aba60149b987f7a41dcf0 (diff) | |
| parent | f23bc472b091dd809245e9e92d42a58f849182a3 (diff) | |
Merge "Move configuration checks from getBootImageJar"
Diffstat (limited to 'java/platform_bootclasspath.go')
| -rw-r--r-- | java/platform_bootclasspath.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/java/platform_bootclasspath.go b/java/platform_bootclasspath.go index 9f1629428..f88823fd0 100644 --- a/java/platform_bootclasspath.go +++ b/java/platform_bootclasspath.go @@ -184,6 +184,11 @@ func (b *platformBootclasspathModule) GenerateAndroidBuildActions(ctx android.Mo // Gather all the fragments dependencies. b.fragments = gatherApexModulePairDepsWithTag(ctx, bootclasspathFragmentDepTag) + // Check the configuration of the boot modules. + // ART modules are checked by the art-bootclasspath-fragment. + b.checkNonUpdatableModules(ctx, nonUpdatableModules) + b.checkUpdatableModules(ctx, updatableModules) + b.generateHiddenAPIBuildActions(ctx, b.configuredModules, b.fragments) // Nothing to do if skipping the dexpreopt of boot image jars. @@ -194,6 +199,42 @@ func (b *platformBootclasspathModule) GenerateAndroidBuildActions(ctx android.Mo b.generateBootImageBuildActions(ctx, updatableModules) } +// checkNonUpdatableModules ensures that the non-updatable modules supplied are not part of an +// updatable module. +func (b *platformBootclasspathModule) checkNonUpdatableModules(ctx android.ModuleContext, modules []android.Module) { + for _, m := range modules { + apexInfo := ctx.OtherModuleProvider(m, android.ApexInfoProvider).(android.ApexInfo) + fromUpdatableApex := apexInfo.Updatable + if fromUpdatableApex { + // error: this jar is part of an updatable apex + ctx.ModuleErrorf("module %q from updatable apexes %q is not allowed in the framework boot image", ctx.OtherModuleName(m), apexInfo.InApexes) + } else { + // ok: this jar is part of the platform or a non-updatable apex + } + } +} + +// checkUpdatableModules ensures that the updatable modules supplied are not from the platform. +func (b *platformBootclasspathModule) checkUpdatableModules(ctx android.ModuleContext, modules []android.Module) { + for _, m := range modules { + apexInfo := ctx.OtherModuleProvider(m, android.ApexInfoProvider).(android.ApexInfo) + fromUpdatableApex := apexInfo.Updatable + if fromUpdatableApex { + // ok: this jar is part of an updatable apex + } else { + name := ctx.OtherModuleName(m) + if apexInfo.IsForPlatform() { + // error: this jar is part of the platform + ctx.ModuleErrorf("module %q from platform is not allowed in the updatable boot jars list", name) + } else { + // TODO(b/177892522): Treat this as an error. + // Cannot do that at the moment because framework-wifi and framework-tethering are in the + // PRODUCT_UPDATABLE_BOOT_JARS but not marked as updatable in AOSP. + } + } + } +} + func (b *platformBootclasspathModule) getImageConfig(ctx android.EarlyModuleContext) *bootImageConfig { return defaultBootImageConfig(ctx) } |