diff options
| -rw-r--r-- | android/apex.go | 108 | ||||
| -rw-r--r-- | apex/apex.go | 32 | ||||
| -rw-r--r-- | apex/prebuilt.go | 15 | ||||
| -rw-r--r-- | java/bootclasspath_fragment.go | 5 | ||||
| -rw-r--r-- | java/sdk_library.go | 6 | ||||
| -rw-r--r-- | java/systemserver_classpath_fragment.go | 5 |
6 files changed, 2 insertions, 169 deletions
diff --git a/android/apex.go b/android/apex.go index 1bfcf04d4..414d4e140 100644 --- a/android/apex.go +++ b/android/apex.go @@ -70,11 +70,6 @@ type ApexInfo struct { // prebuilt, the name here doesn't have the `prebuilt_` prefix. InApexModules []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 - // has and whether a module became part of the apexBundle via a direct dependency or not. - ApexContents []*ApexContents - // True if this is for a prebuilt_apex. // // If true then this will customize the apex processing to make it suitable for handling @@ -162,7 +157,6 @@ func (i ApexInfo) Equal(other any) bool { // ApexBundleInfo contains information about the dependencies of an apex type ApexBundleInfo struct { - Contents *ApexContents } var ApexBundleInfoProvider = blueprint.NewMutatorProvider[ApexBundleInfo]("apex_info") @@ -220,10 +214,6 @@ type ApexModule interface { // this after apex.apexMutator is run. InAnyApex() bool - // Returns true if this module is directly in any APEX. Call this AFTER apex.apexMutator is - // run. - DirectlyInAnyApex() bool - // NotInPlatform returns true if the module is not available to the platform due to // apex_available being set and not containing "//apex_available:platform". NotInPlatform() bool @@ -285,9 +275,6 @@ type ApexProperties struct { // See ApexModule.InAnyApex() InAnyApex bool `blueprint:"mutated"` - // See ApexModule.DirectlyInAnyApex() - DirectlyInAnyApex bool `blueprint:"mutated"` - // See ApexModule.NotAvailableForPlatform() NotAvailableForPlatform bool `blueprint:"mutated"` @@ -324,16 +311,6 @@ type AlwaysRequireApexVariantTag interface { AlwaysRequireApexVariant() bool } -// Marker interface that identifies dependencies that should inherit the DirectlyInAnyApex state -// from the parent to the child. For example, stubs libraries are marked as DirectlyInAnyApex if -// their implementation is in an apex. -type CopyDirectlyInAnyApexTag interface { - blueprint.DependencyTag - - // Method that differentiates this interface from others. - CopyDirectlyInAnyApex() -} - // Interface that identifies dependencies to skip Apex dependency check type SkipApexAllowedDependenciesCheck interface { // Returns true to skip the Apex dependency check, which limits the allowed dependency in build. @@ -411,11 +388,6 @@ func (m *ApexModuleBase) InAnyApex() bool { } // Implements ApexModule -func (m *ApexModuleBase) DirectlyInAnyApex() bool { - return m.ApexProperties.DirectlyInAnyApex -} - -// Implements ApexModule func (m *ApexModuleBase) NotInPlatform() bool { return !m.AvailableFor(AvailableToPlatform) } @@ -575,7 +547,6 @@ func mergeApexVariations(apexInfos []ApexInfo) (merged []ApexInfo, aliases [][2] // Variants having the same mergedName are deduped merged[index].InApexVariants = append(merged[index].InApexVariants, variantName) merged[index].InApexModules = append(merged[index].InApexModules, apexInfo.InApexModules...) - merged[index].ApexContents = append(merged[index].ApexContents, apexInfo.ApexContents...) merged[index].Updatable = merged[index].Updatable || apexInfo.Updatable // Platform APIs is allowed for this module only when all APEXes containing // the module are with `use_platform_apis: true`. @@ -586,7 +557,6 @@ func mergeApexVariations(apexInfos []ApexInfo) (merged []ApexInfo, aliases [][2] apexInfo.ApexVariationName = mergedName apexInfo.InApexVariants = CopyOf(apexInfo.InApexVariants) apexInfo.InApexModules = CopyOf(apexInfo.InApexModules) - apexInfo.ApexContents = append([]*ApexContents(nil), apexInfo.ApexContents...) apexInfo.TestApexes = CopyOf(apexInfo.TestApexes) merged = append(merged, apexInfo) } @@ -674,14 +644,7 @@ func MutateApexTransition(ctx BaseModuleContext, variation string) { apexInfos, _ = mergeApexVariations(apexInfos) } - var inApex ApexMembership - for _, a := range apexInfos { - for _, apexContents := range a.ApexContents { - inApex = inApex.merge(apexContents.contents[ctx.ModuleName()]) - } - } base.ApexProperties.InAnyApex = true - base.ApexProperties.DirectlyInAnyApex = inApex == directlyInApex if platformVariation && !ctx.Host() && !module.AvailableFor(AvailableToPlatform) && module.NotAvailableForPlatform() { // Do not install the module for platform, but still allow it to output @@ -772,77 +735,6 @@ func UpdateUniqueApexVariationsForDeps(mctx BottomUpMutatorContext, am ApexModul }) } -// UpdateDirectlyInAnyApex uses the final module to store if any variant of this module is directly -// in any APEX, and then copies the final value to all the modules. It also copies the -// DirectlyInAnyApex value to any transitive dependencies with a CopyDirectlyInAnyApexTag -// dependency tag. -func UpdateDirectlyInAnyApex(mctx BottomUpMutatorContext, am ApexModule) { - base := am.apexModuleBase() - // Copy DirectlyInAnyApex and InAnyApex from any transitive dependencies with a - // CopyDirectlyInAnyApexTag dependency tag. - mctx.WalkDeps(func(child, parent Module) bool { - if _, ok := mctx.OtherModuleDependencyTag(child).(CopyDirectlyInAnyApexTag); ok { - depBase := child.(ApexModule).apexModuleBase() - depBase.apexPropertiesLock.Lock() - defer depBase.apexPropertiesLock.Unlock() - depBase.ApexProperties.DirectlyInAnyApex = base.ApexProperties.DirectlyInAnyApex - depBase.ApexProperties.InAnyApex = base.ApexProperties.InAnyApex - return true - } - return false - }) -} - -// ApexMembership tells how a module became part of an APEX. -type ApexMembership int - -const ( - notInApex ApexMembership = 0 - indirectlyInApex = iota - directlyInApex -) - -// ApexContents gives an information about member modules of an apexBundle. Each apexBundle has an -// apexContents, and modules in that apex have a provider containing the apexContents of each -// apexBundle they are part of. -type ApexContents struct { - // map from a module name to its membership in this apexBundle - contents map[string]ApexMembership -} - -// NewApexContents creates and initializes an ApexContents that is suitable -// for use with an apex module. -// - contents is a map from a module name to information about its membership within -// the apex. -func NewApexContents(contents map[string]ApexMembership) *ApexContents { - return &ApexContents{ - contents: contents, - } -} - -// Updates an existing membership by adding a new direct (or indirect) membership -func (i ApexMembership) Add(direct bool) ApexMembership { - if direct || i == directlyInApex { - return directlyInApex - } - return indirectlyInApex -} - -// Merges two membership into one. Merging is needed because a module can be a part of an apexBundle -// in many different paths. For example, it could be dependend on by the apexBundle directly, but at -// the same time, there might be an indirect dependency to the module. In that case, the more -// specific dependency (the direct one) is chosen. -func (i ApexMembership) merge(other ApexMembership) ApexMembership { - if other == directlyInApex || i == directlyInApex { - return directlyInApex - } - - if other == indirectlyInApex || i == indirectlyInApex { - return indirectlyInApex - } - return notInApex -} - //////////////////////////////////////////////////////////////////////////////////////////////////// //Below are routines for extra safety checks. // diff --git a/apex/apex.go b/apex/apex.go index dd9195ca3..ed9e58a63 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -67,7 +67,6 @@ func RegisterPostDepsMutators(ctx android.RegisterMutatorsContext) { // it should create a platform variant. ctx.BottomUp("mark_platform_availability", markPlatformAvailability) ctx.Transition("apex", &apexTransitionMutator{}) - ctx.BottomUp("apex_directly_in_any", apexDirectlyInAnyMutator).MutatesDependencies() } type apexBundleProperties struct { @@ -993,25 +992,7 @@ func (a *apexBundle) ApexInfoMutator(mctx android.TopDownMutatorContext) { return true } - // Records whether a certain module is included in this apexBundle via direct dependency or - // inndirect dependency. - contents := make(map[string]android.ApexMembership) - mctx.WalkDeps(func(child, parent android.Module) bool { - if !continueApexDepsWalk(child, parent) { - return false - } - // If the parent is apexBundle, this child is directly depended. - _, directDep := parent.(*apexBundle) - depName := mctx.OtherModuleName(child) - contents[depName] = contents[depName].Add(directDep) - return true - }) - - // The membership information is saved for later access - apexContents := android.NewApexContents(contents) - android.SetProvider(mctx, android.ApexBundleInfoProvider, android.ApexBundleInfo{ - Contents: apexContents, - }) + android.SetProvider(mctx, android.ApexBundleInfoProvider, android.ApexBundleInfo{}) minSdkVersion := a.minSdkVersion(mctx) // When min_sdk_version is not set, the apex is built against FutureApiLevel. @@ -1040,7 +1021,6 @@ func (a *apexBundle) ApexInfoMutator(mctx android.TopDownMutatorContext) { UsePlatformApis: a.UsePlatformApis(), InApexVariants: []string{apexVariationName}, InApexModules: []string{a.Name()}, // could be com.mycompany.android.foo - ApexContents: []*android.ApexContents{apexContents}, TestApexes: testApexes, BaseApexName: mctx.ModuleName(), ApexAvailableName: proptools.String(a.properties.Apex_available_name), @@ -1242,14 +1222,6 @@ func apexModuleTypeRequiresVariant(module ApexInfoMutator) bool { return true } -// See android.UpdateDirectlyInAnyApex -// TODO(jiyong): move this to android/apex.go? -func apexDirectlyInAnyMutator(mctx android.BottomUpMutatorContext) { - if am, ok := mctx.Module().(android.ApexModule); ok { - android.UpdateDirectlyInAnyApex(mctx, am) - } -} - const ( // File extensions of an APEX for different packaging methods imageApexSuffix = ".apex" @@ -2180,8 +2152,6 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, ctx.PropertyErrorf("systemserverclasspath_fragments", "systemserverclasspath_fragment content %q of type %q is not supported", depName, ctx.OtherModuleType(child)) } - } else if _, ok := depTag.(android.CopyDirectlyInAnyApexTag); ok { - // nothing } else if depTag == android.DarwinUniversalVariantTag { // nothing } else if depTag == android.RequiredDepTag { diff --git a/apex/prebuilt.go b/apex/prebuilt.go index acf3b91fe..2bef0cccf 100644 --- a/apex/prebuilt.go +++ b/apex/prebuilt.go @@ -306,10 +306,6 @@ func (p *prebuiltCommon) DepIsInSameApex(ctx android.BaseModuleContext, dep andr // extra copying of files. Contrast that with source apex modules that has to build each variant // from source. func (p *prebuiltCommon) apexInfoMutator(mctx android.TopDownMutatorContext) { - - // Collect direct dependencies into contents. - contents := make(map[string]android.ApexMembership) - // Collect the list of dependencies. var dependencies []android.ApexModule mctx.WalkDeps(func(child, parent android.Module) bool { @@ -347,21 +343,13 @@ func (p *prebuiltCommon) apexInfoMutator(mctx android.TopDownMutatorContext) { // behavior whether there is a corresponding source module present or not. depName = android.RemoveOptionalPrebuiltPrefix(depName) - // Remember if this module was added as a direct dependency. - direct := parent == mctx.Module() - contents[depName] = contents[depName].Add(direct) - // Add the module to the list of dependencies that need to have an APEX variant. dependencies = append(dependencies, child.(android.ApexModule)) return true }) - // Create contents for the prebuilt_apex and store it away for later use. - apexContents := android.NewApexContents(contents) - android.SetProvider(mctx, android.ApexBundleInfoProvider, android.ApexBundleInfo{ - Contents: apexContents, - }) + android.SetProvider(mctx, android.ApexBundleInfoProvider, android.ApexBundleInfo{}) // Create an ApexInfo for the prebuilt_apex. apexVariationName := p.ApexVariationName() @@ -369,7 +357,6 @@ func (p *prebuiltCommon) apexInfoMutator(mctx android.TopDownMutatorContext) { ApexVariationName: apexVariationName, InApexVariants: []string{apexVariationName}, InApexModules: []string{p.BaseModuleName()}, // BaseModuleName() to avoid the prebuilt_ prefix. - ApexContents: []*android.ApexContents{apexContents}, ForPrebuiltApex: true, } diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index c778f0404..375a1aaf1 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -83,10 +83,6 @@ func (b bootclasspathFragmentContentDependencyTag) ExportMember() bool { return true } -// Contents of bootclasspath fragments in an apex are considered to be directly in the apex, as if -// they were listed in java_libs. -func (b bootclasspathFragmentContentDependencyTag) CopyDirectlyInAnyApex() {} - // Contents of bootclasspath fragments require files from prebuilt apex files. func (b bootclasspathFragmentContentDependencyTag) RequiresFilesFromPrebuiltApex() {} @@ -96,7 +92,6 @@ var bootclasspathFragmentContentDepTag = bootclasspathFragmentContentDependencyT var _ android.ExcludeFromVisibilityEnforcementTag = bootclasspathFragmentContentDepTag var _ android.ReplaceSourceWithPrebuilt = bootclasspathFragmentContentDepTag var _ android.SdkMemberDependencyTag = bootclasspathFragmentContentDepTag -var _ android.CopyDirectlyInAnyApexTag = bootclasspathFragmentContentDepTag var _ android.RequiresFilesFromPrebuiltApexTag = bootclasspathFragmentContentDepTag func IsBootclasspathFragmentContentDepTag(tag blueprint.DependencyTag) bool { diff --git a/java/sdk_library.go b/java/sdk_library.go index f6dfcdd19..78917768b 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -1314,12 +1314,6 @@ var implLibraryTag = sdkLibraryComponentTag{name: "impl-library"} var _ android.InstallNeededDependencyTag = sdkLibraryComponentTag{} -// To satisfy the CopyDirectlyInAnyApexTag interface. Implementation library of the sdk library -// in an apex is considered to be directly in the apex, as if it was listed in java_libs. -func (t sdkLibraryComponentTag) CopyDirectlyInAnyApex() {} - -var _ android.CopyDirectlyInAnyApexTag = implLibraryTag - func (t sdkLibraryComponentTag) InstallDepNeeded() bool { return t.name == "xml-permissions-file" || t.name == "impl-library" } diff --git a/java/systemserver_classpath_fragment.go b/java/systemserver_classpath_fragment.go index 608a61628..3176ad94c 100644 --- a/java/systemserver_classpath_fragment.go +++ b/java/systemserver_classpath_fragment.go @@ -218,16 +218,11 @@ func (b systemServerClasspathFragmentContentDependencyTag) ExportMember() bool { return true } -// Contents of system server fragments in an apex are considered to be directly in the apex, as if -// they were listed in java_libs. -func (systemServerClasspathFragmentContentDependencyTag) CopyDirectlyInAnyApex() {} - // Contents of system server fragments require files from prebuilt apex files. func (systemServerClasspathFragmentContentDependencyTag) RequiresFilesFromPrebuiltApex() {} var _ android.ReplaceSourceWithPrebuilt = systemServerClasspathFragmentContentDepTag var _ android.SdkMemberDependencyTag = systemServerClasspathFragmentContentDepTag -var _ android.CopyDirectlyInAnyApexTag = systemServerClasspathFragmentContentDepTag var _ android.RequiresFilesFromPrebuiltApexTag = systemServerClasspathFragmentContentDepTag // The tag used for the dependency between the systemserverclasspath_fragment module and its contents. |