Move ApexBundleInfoProvider from apex/ to android/
This provider contains information about the contents of an apex and is set during the post deps phase of top-level source and prebuilt apexes. java.dexpreoptDisabled needs to distinguish between platform and apex variants of a library to prevent creating duplicate ninja rules. It does so by looking at ApexInfoProvider. This provider gets set on the ctx of the java_library being dexpreopted. In case of prebuilts, these rules are being moved to the top-level prebuilt apexes. Move ApexInfoBundleProvider from apex to android so that java.dexpreoptDisabled can consume this provider without running into a golang circular dependency. (java.dexpreoptDisabled will use this provider in the next CL of this stack). Test: go build ./android ./apex Change-Id: I665abd9d0591eeb17b273cc822beb20690e6af09
This commit is contained in:
parent
1f4475cee1
commit
f5e03f1c1a
3 changed files with 12 additions and 11 deletions
|
@ -147,6 +147,13 @@ type ApexTestForInfo struct {
|
||||||
|
|
||||||
var ApexTestForInfoProvider = blueprint.NewMutatorProvider[ApexTestForInfo]("apex_test_for")
|
var ApexTestForInfoProvider = blueprint.NewMutatorProvider[ApexTestForInfo]("apex_test_for")
|
||||||
|
|
||||||
|
// ApexBundleInfo contains information about the dependencies of an apex
|
||||||
|
type ApexBundleInfo struct {
|
||||||
|
Contents *ApexContents
|
||||||
|
}
|
||||||
|
|
||||||
|
var ApexBundleInfoProvider = blueprint.NewMutatorProvider[ApexBundleInfo]("apex_info")
|
||||||
|
|
||||||
// DepIsInSameApex defines an interface that should be used to determine whether a given dependency
|
// DepIsInSameApex defines an interface that should be used to determine whether a given dependency
|
||||||
// should be considered as part of the same APEX as the current module or not. Note: this was
|
// should be considered as part of the same APEX as the current module or not. Note: this was
|
||||||
// extracted from ApexModule to make it easier to define custom subsets of the ApexModule interface
|
// extracted from ApexModule to make it easier to define custom subsets of the ApexModule interface
|
||||||
|
|
14
apex/apex.go
14
apex/apex.go
|
@ -929,12 +929,6 @@ type DCLAInfo struct {
|
||||||
|
|
||||||
var DCLAInfoProvider = blueprint.NewMutatorProvider[DCLAInfo]("apex_info")
|
var DCLAInfoProvider = blueprint.NewMutatorProvider[DCLAInfo]("apex_info")
|
||||||
|
|
||||||
type ApexBundleInfo struct {
|
|
||||||
Contents *android.ApexContents
|
|
||||||
}
|
|
||||||
|
|
||||||
var ApexBundleInfoProvider = blueprint.NewMutatorProvider[ApexBundleInfo]("apex_info")
|
|
||||||
|
|
||||||
var _ ApexInfoMutator = (*apexBundle)(nil)
|
var _ ApexInfoMutator = (*apexBundle)(nil)
|
||||||
|
|
||||||
func (a *apexBundle) ApexVariationName() string {
|
func (a *apexBundle) ApexVariationName() string {
|
||||||
|
@ -1035,7 +1029,7 @@ func (a *apexBundle) ApexInfoMutator(mctx android.TopDownMutatorContext) {
|
||||||
|
|
||||||
// The membership information is saved for later access
|
// The membership information is saved for later access
|
||||||
apexContents := android.NewApexContents(contents)
|
apexContents := android.NewApexContents(contents)
|
||||||
android.SetProvider(mctx, ApexBundleInfoProvider, ApexBundleInfo{
|
android.SetProvider(mctx, android.ApexBundleInfoProvider, android.ApexBundleInfo{
|
||||||
Contents: apexContents,
|
Contents: apexContents,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -1243,7 +1237,7 @@ func apexTestForMutator(mctx android.BottomUpMutatorContext) {
|
||||||
if _, ok := mctx.Module().(android.ApexModule); ok {
|
if _, ok := mctx.Module().(android.ApexModule); ok {
|
||||||
var contents []*android.ApexContents
|
var contents []*android.ApexContents
|
||||||
for _, testFor := range mctx.GetDirectDepsWithTag(testForTag) {
|
for _, testFor := range mctx.GetDirectDepsWithTag(testForTag) {
|
||||||
abInfo, _ := android.OtherModuleProvider(mctx, testFor, ApexBundleInfoProvider)
|
abInfo, _ := android.OtherModuleProvider(mctx, testFor, android.ApexBundleInfoProvider)
|
||||||
contents = append(contents, abInfo.Contents)
|
contents = append(contents, abInfo.Contents)
|
||||||
}
|
}
|
||||||
android.SetProvider(mctx, android.ApexTestForInfoProvider, android.ApexTestForInfo{
|
android.SetProvider(mctx, android.ApexTestForInfoProvider, android.ApexTestForInfo{
|
||||||
|
@ -2192,7 +2186,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext,
|
||||||
af := apexFileForNativeLibrary(ctx, ch, vctx.handleSpecialLibs)
|
af := apexFileForNativeLibrary(ctx, ch, vctx.handleSpecialLibs)
|
||||||
af.transitiveDep = true
|
af.transitiveDep = true
|
||||||
|
|
||||||
abInfo, _ := android.ModuleProvider(ctx, ApexBundleInfoProvider)
|
abInfo, _ := android.ModuleProvider(ctx, android.ApexBundleInfoProvider)
|
||||||
if !abInfo.Contents.DirectlyInApex(depName) && (ch.IsStubs() || ch.HasStubsVariants()) {
|
if !abInfo.Contents.DirectlyInApex(depName) && (ch.IsStubs() || ch.HasStubsVariants()) {
|
||||||
// If the dependency is a stubs lib, don't include it in this APEX,
|
// If the dependency is a stubs lib, don't include it in this APEX,
|
||||||
// but make sure that the lib is installed on the device.
|
// but make sure that the lib is installed on the device.
|
||||||
|
@ -2658,7 +2652,7 @@ func (a *apexBundle) checkStaticLinkingToStubLibraries(ctx android.ModuleContext
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
abInfo, _ := android.ModuleProvider(ctx, ApexBundleInfoProvider)
|
abInfo, _ := android.ModuleProvider(ctx, android.ApexBundleInfoProvider)
|
||||||
|
|
||||||
a.WalkPayloadDeps(ctx, func(ctx android.ModuleContext, from blueprint.Module, to android.ApexModule, externalDep bool) bool {
|
a.WalkPayloadDeps(ctx, func(ctx android.ModuleContext, from blueprint.Module, to android.ApexModule, externalDep bool) bool {
|
||||||
if ccm, ok := to.(*cc.Module); ok {
|
if ccm, ok := to.(*cc.Module); ok {
|
||||||
|
|
|
@ -438,7 +438,7 @@ func (p *prebuiltCommon) apexInfoMutator(mctx android.TopDownMutatorContext) {
|
||||||
|
|
||||||
// Create contents for the prebuilt_apex and store it away for later use.
|
// Create contents for the prebuilt_apex and store it away for later use.
|
||||||
apexContents := android.NewApexContents(contents)
|
apexContents := android.NewApexContents(contents)
|
||||||
android.SetProvider(mctx, ApexBundleInfoProvider, ApexBundleInfo{
|
android.SetProvider(mctx, android.ApexBundleInfoProvider, android.ApexBundleInfo{
|
||||||
Contents: apexContents,
|
Contents: apexContents,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue