diff options
-rw-r--r-- | android/apex.go | 62 | ||||
-rw-r--r-- | apex/apex.go | 4 | ||||
-rw-r--r-- | apex/prebuilt.go | 2 | ||||
-rw-r--r-- | cc/cc.go | 2 | ||||
-rw-r--r-- | java/boot_jars.go | 2 | ||||
-rw-r--r-- | java/hiddenapi_singleton.go | 4 | ||||
-rw-r--r-- | java/platform_bootclasspath.go | 2 | ||||
-rw-r--r-- | java/sdk_library.go | 2 | ||||
-rw-r--r-- | java/testing.go | 2 |
9 files changed, 44 insertions, 38 deletions
diff --git a/android/apex.go b/android/apex.go index b01b700b8..336dafc73 100644 --- a/android/apex.go +++ b/android/apex.go @@ -36,11 +36,16 @@ var ( // Accessible via `ctx.Provider(android.ApexInfoProvider).(android.ApexInfo)` type ApexInfo struct { // Name of the apex variation that this module (i.e. the apex variant of the module) is - // mutated into, or "" for a platform (i.e. non-APEX) variant. Note that a module can be - // included in multiple APEXes, in which case, the module is mutated into one or more - // variants, each of which is for an APEX. The variants then can later be deduped if they - // don't need to be compiled differently. This is an optimization done in - // mergeApexVariations. + // mutated into, or "" for a platform (i.e. non-APEX) variant. Note that this name and the + // Soong module name of the APEX can be different. That happens when there is + // `override_apex` that overrides `apex`. In that case, both Soong modules have the same + // apex variation name which usually is `com.android.foo`. This name is also the `name` + // in the path `/apex/<name>` where this apex is activated on at runtime. + // + // Also note that a module can be included in multiple APEXes, in which case, the module is + // mutated into one or more variants, each of which is for an APEX. The variants then can + // later be deduped if they don't need to be compiled differently. This is an optimization + // done in mergeApexVariations. ApexVariationName string // ApiLevel that this module has to support at minimum. @@ -52,11 +57,11 @@ type ApexInfo struct { // The list of SDK modules that the containing apexBundle depends on. RequiredSdks SdkRefs - // List of apexBundles that this apex variant of the module is associated with. Initially, - // the size of this list is one because one apex variant is associated with one apexBundle. - // When multiple apex variants are merged in mergeApexVariations, ApexInfo struct of the - // merged variant holds the list of apexBundles that are merged together. - InApexes []string + // List of Apex variant names that this module is associated with. This initially is the + // same as the `ApexVariationName` field. Then when multiple apex variants are merged in + // mergeApexVariations, ApexInfo struct of the merged variant holds the list of apexBundles + // that are merged together. + InApexVariants []string // Pointers to the ApexContents struct each of which is for apexBundle modules that this // module is part of. The ApexContents gives information about which modules the apexBundle @@ -93,23 +98,24 @@ func (i ApexInfo) IsForPlatform() bool { return i.ApexVariationName == "" } -// InApex tells whether this apex variant of the module is part of the given apexBundle or not. -func (i ApexInfo) InApex(apex string) bool { - for _, a := range i.InApexes { - if a == apex { +// InApexVariant tells whether this apex variant of the module is part of the given apexVariant or +// not. +func (i ApexInfo) InApexVariant(apexVariant string) bool { + for _, a := range i.InApexVariants { + if a == apexVariant { return true } } return false } -// InApexByBaseName tells whether this apex variant of the module is part of the given APEX or not, -// where the APEX is specified by its canonical base name, i.e. typically beginning with +// InApexByBaseName tells whether this apex variant of the module is part of the given apexVariant +// or not, where the APEX is specified by its canonical base name, i.e. typically beginning with // "com.android.". In particular this function doesn't differentiate between source and prebuilt // APEXes, where the latter may have "prebuilt_" prefixes. -func (i ApexInfo) InApexByBaseName(apex string) bool { - for _, a := range i.InApexes { - if RemoveOptionalPrebuiltPrefix(a) == apex { +func (i ApexInfo) InApexVariantByBaseName(apexVariant string) bool { + for _, a := range i.InApexVariants { + if RemoveOptionalPrebuiltPrefix(a) == apexVariant { return true } } @@ -496,21 +502,21 @@ func mergeApexVariations(ctx PathContext, apexInfos []ApexInfo) (merged []ApexIn // Merge the ApexInfo together. If a compatible ApexInfo exists then merge the information from // this one into it, otherwise create a new merged ApexInfo from this one and save it away so // other ApexInfo instances can be merged into it. - apexName := apexInfo.ApexVariationName + variantName := apexInfo.ApexVariationName mergedName := apexInfo.mergedName(ctx) if index, exists := seen[mergedName]; exists { // Variants having the same mergedName are deduped - merged[index].InApexes = append(merged[index].InApexes, apexName) + merged[index].InApexVariants = append(merged[index].InApexVariants, variantName) merged[index].ApexContents = append(merged[index].ApexContents, apexInfo.ApexContents...) merged[index].Updatable = merged[index].Updatable || apexInfo.Updatable } else { seen[mergedName] = len(merged) apexInfo.ApexVariationName = mergedName - apexInfo.InApexes = CopyOf(apexInfo.InApexes) + apexInfo.InApexVariants = CopyOf(apexInfo.InApexVariants) apexInfo.ApexContents = append([]*ApexContents(nil), apexInfo.ApexContents...) merged = append(merged, apexInfo) } - aliases = append(aliases, [2]string{apexName, mergedName}) + aliases = append(aliases, [2]string{variantName, mergedName}) } return merged, aliases } @@ -583,15 +589,15 @@ func CreateApexVariations(mctx BottomUpMutatorContext, module ApexModule) []Modu // in the same APEX have unique APEX variations so that the module can link against the right // variant. func UpdateUniqueApexVariationsForDeps(mctx BottomUpMutatorContext, am ApexModule) { - // anyInSameApex returns true if the two ApexInfo lists contain any values in an InApexes - // list in common. It is used instead of DepIsInSameApex because it needs to determine if - // the dep is in the same APEX due to being directly included, not only if it is included - // _because_ it is a dependency. + // anyInSameApex returns true if the two ApexInfo lists contain any values in an + // InApexVariants list in common. It is used instead of DepIsInSameApex because it needs to + // determine if the dep is in the same APEX due to being directly included, not only if it + // is included _because_ it is a dependency. anyInSameApex := func(a, b []ApexInfo) bool { collectApexes := func(infos []ApexInfo) []string { var ret []string for _, info := range infos { - ret = append(ret, info.InApexes...) + ret = append(ret, info.InApexVariants...) } return ret } diff --git a/apex/apex.go b/apex/apex.go index 31dfa0ddc..f5d5c1ac1 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -900,7 +900,7 @@ func (a *apexBundle) ApexInfoMutator(mctx android.TopDownMutatorContext) { MinSdkVersion: minSdkVersion, RequiredSdks: a.RequiredSdks(), Updatable: a.Updatable(), - InApexes: []string{mctx.ModuleName()}, + InApexVariants: []string{mctx.ModuleName()}, ApexContents: []*android.ApexContents{apexContents}, } mctx.WalkDeps(func(child, parent android.Module) bool { @@ -1557,7 +1557,7 @@ func (a *apexBundle) WalkPayloadDeps(ctx android.ModuleContext, do android.Paylo } ai := ctx.OtherModuleProvider(child, android.ApexInfoProvider).(android.ApexInfo) - externalDep := !android.InList(ctx.ModuleName(), ai.InApexes) + externalDep := !android.InList(ctx.ModuleName(), ai.InApexVariants) // Visit actually return do(ctx, parent, am, externalDep) diff --git a/apex/prebuilt.go b/apex/prebuilt.go index b0d1cc895..be9d0f0b4 100644 --- a/apex/prebuilt.go +++ b/apex/prebuilt.go @@ -229,7 +229,7 @@ func (p *prebuiltCommon) apexInfoMutator(mctx android.TopDownMutatorContext) { // Create an ApexInfo for the prebuilt_apex. apexInfo := android.ApexInfo{ ApexVariationName: android.RemoveOptionalPrebuiltPrefix(mctx.ModuleName()), - InApexes: []string{mctx.ModuleName()}, + InApexVariants: []string{mctx.ModuleName()}, ApexContents: []*android.ApexContents{apexContents}, ForPrebuiltApex: true, } @@ -2831,7 +2831,7 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { // Add the dependency to the APEX(es) providing the library so that // m <module> can trigger building the APEXes as well. depApexInfo := ctx.OtherModuleProvider(dep, android.ApexInfoProvider).(android.ApexInfo) - for _, an := range depApexInfo.InApexes { + for _, an := range depApexInfo.InApexVariants { c.Properties.ApexesProvidingSharedLibs = append( c.Properties.ApexesProvidingSharedLibs, an) } diff --git a/java/boot_jars.go b/java/boot_jars.go index 1fb3deb0a..1f2dab58f 100644 --- a/java/boot_jars.go +++ b/java/boot_jars.go @@ -89,7 +89,7 @@ func (b *bootJarsSingleton) GenerateBuildActions(ctx android.SingletonContext) { name := android.RemoveOptionalPrebuiltPrefix(ctx.ModuleName(module)) if apex, ok := moduleToApex[name]; ok { apexInfo := ctx.ModuleProvider(module, android.ApexInfoProvider).(android.ApexInfo) - if (apex == "platform" && apexInfo.IsForPlatform()) || apexInfo.InApexByBaseName(apex) { + if (apex == "platform" && apexInfo.IsForPlatform()) || apexInfo.InApexVariantByBaseName(apex) { // The module name/apex variant should be unique in the system but double check // just in case something has gone wrong. if existing, ok := nameToApexVariant[name]; ok { diff --git a/java/hiddenapi_singleton.go b/java/hiddenapi_singleton.go index 848aa59bc..bdf055abc 100644 --- a/java/hiddenapi_singleton.go +++ b/java/hiddenapi_singleton.go @@ -167,11 +167,11 @@ func isModuleInConfiguredList(ctx android.BaseModuleContext, module android.Modu // Now match the apex part of the boot image configuration. requiredApex := configuredBootJars.Apex(index) if requiredApex == "platform" || requiredApex == "system_ext" { - if len(apexInfo.InApexes) != 0 { + if len(apexInfo.InApexVariants) != 0 { // A platform variant is required but this is for an apex so ignore it. return false } - } else if !apexInfo.InApexByBaseName(requiredApex) { + } else if !apexInfo.InApexVariantByBaseName(requiredApex) { // An apex variant for a specific apex is required but this is the wrong apex. return false } diff --git a/java/platform_bootclasspath.go b/java/platform_bootclasspath.go index 6ebeb6b89..10bf179d2 100644 --- a/java/platform_bootclasspath.go +++ b/java/platform_bootclasspath.go @@ -225,7 +225,7 @@ func (b *platformBootclasspathModule) checkNonUpdatableModules(ctx android.Modul 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) + ctx.ModuleErrorf("module %q from updatable apexes %q is not allowed in the framework boot image", ctx.OtherModuleName(m), apexInfo.InApexVariants) } else { // ok: this jar is part of the platform or a non-updatable apex } diff --git a/java/sdk_library.go b/java/sdk_library.go index 99eacf4e7..b5b6232d6 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -1546,7 +1546,7 @@ func PrebuiltJars(ctx android.BaseModuleContext, baseName string, s android.SdkS func withinSameApexesAs(ctx android.BaseModuleContext, other android.Module) bool { apexInfo := ctx.Provider(android.ApexInfoProvider).(android.ApexInfo) otherApexInfo := ctx.OtherModuleProvider(other, android.ApexInfoProvider).(android.ApexInfo) - return len(otherApexInfo.InApexes) > 0 && reflect.DeepEqual(apexInfo.InApexes, otherApexInfo.InApexes) + return len(otherApexInfo.InApexVariants) > 0 && reflect.DeepEqual(apexInfo.InApexVariants, otherApexInfo.InApexVariants) } func (module *SdkLibrary) sdkJars(ctx android.BaseModuleContext, sdkVersion android.SdkSpec, headerJars bool) android.Paths { diff --git a/java/testing.go b/java/testing.go index 51a1c621d..1fef337cc 100644 --- a/java/testing.go +++ b/java/testing.go @@ -378,7 +378,7 @@ func apexNamePairFromModule(ctx *android.TestContext, module android.Module) str if apexInfo.IsForPlatform() { apex = "platform" } else { - apex = apexInfo.InApexes[0] + apex = apexInfo.InApexVariants[0] } return fmt.Sprintf("%s:%s", apex, name) |