Skip to content

Commit

Permalink
Move ApexBundleInfoProvider from apex/ to android/
Browse files Browse the repository at this point in the history
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
  • Loading branch information
dasspandan committed Jan 25, 2024
1 parent 1f4475c commit f5e03f1
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 11 deletions.
7 changes: 7 additions & 0 deletions android/apex.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,13 @@ type ApexTestForInfo struct {

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
// 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
Expand Down
14 changes: 4 additions & 10 deletions apex/apex.go
Original file line number Diff line number Diff line change
Expand Up @@ -929,12 +929,6 @@ type DCLAInfo struct {

var DCLAInfoProvider = blueprint.NewMutatorProvider[DCLAInfo]("apex_info")

type ApexBundleInfo struct {
Contents *android.ApexContents
}

var ApexBundleInfoProvider = blueprint.NewMutatorProvider[ApexBundleInfo]("apex_info")

var _ ApexInfoMutator = (*apexBundle)(nil)

func (a *apexBundle) ApexVariationName() string {
Expand Down Expand Up @@ -1035,7 +1029,7 @@ func (a *apexBundle) ApexInfoMutator(mctx android.TopDownMutatorContext) {

// The membership information is saved for later access
apexContents := android.NewApexContents(contents)
android.SetProvider(mctx, ApexBundleInfoProvider, ApexBundleInfo{
android.SetProvider(mctx, android.ApexBundleInfoProvider, android.ApexBundleInfo{
Contents: apexContents,
})

Expand Down Expand Up @@ -1243,7 +1237,7 @@ func apexTestForMutator(mctx android.BottomUpMutatorContext) {
if _, ok := mctx.Module().(android.ApexModule); ok {
var contents []*android.ApexContents
for _, testFor := range mctx.GetDirectDepsWithTag(testForTag) {
abInfo, _ := android.OtherModuleProvider(mctx, testFor, ApexBundleInfoProvider)
abInfo, _ := android.OtherModuleProvider(mctx, testFor, android.ApexBundleInfoProvider)
contents = append(contents, abInfo.Contents)
}
android.SetProvider(mctx, android.ApexTestForInfoProvider, android.ApexTestForInfo{
Expand Down Expand Up @@ -2192,7 +2186,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext,
af := apexFileForNativeLibrary(ctx, ch, vctx.handleSpecialLibs)
af.transitiveDep = true

abInfo, _ := android.ModuleProvider(ctx, ApexBundleInfoProvider)
abInfo, _ := android.ModuleProvider(ctx, android.ApexBundleInfoProvider)
if !abInfo.Contents.DirectlyInApex(depName) && (ch.IsStubs() || ch.HasStubsVariants()) {
// 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.
Expand Down Expand Up @@ -2658,7 +2652,7 @@ func (a *apexBundle) checkStaticLinkingToStubLibraries(ctx android.ModuleContext
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 {
if ccm, ok := to.(*cc.Module); ok {
Expand Down
2 changes: 1 addition & 1 deletion apex/prebuilt.go
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,7 @@ func (p *prebuiltCommon) apexInfoMutator(mctx android.TopDownMutatorContext) {

// Create contents for the prebuilt_apex and store it away for later use.
apexContents := android.NewApexContents(contents)
android.SetProvider(mctx, ApexBundleInfoProvider, ApexBundleInfo{
android.SetProvider(mctx, android.ApexBundleInfoProvider, android.ApexBundleInfo{
Contents: apexContents,
})

Expand Down

0 comments on commit f5e03f1

Please sign in to comment.