Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f6978173 authored by Colin Cross's avatar Colin Cross
Browse files

Remove InApexModules

The only use of InApexModules was a container check that verified that
apexes didn't depend on non-stubs modules from outside the apex.  Switch
it to InApexVariants for now, although that will also need to be removed.

Bug: 372543712
Test: builds
Change-Id: I822e982e3e8767dc251c8341de9f40373982c6ed
parent bb674a19
Loading
Loading
Loading
Loading
+5 −40
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@ package android

import (
	"fmt"
	"reflect"
	"slices"
	"sort"
	"strconv"
@@ -62,14 +61,6 @@ type ApexInfo struct {
	// that are merged together.
	InApexVariants []string

	// List of APEX Soong module names that this module is part of. Note that the list includes
	// different variations of the same APEX. For example, if module `foo` is included in the
	// apex `com.android.foo`, and also if there is an override_apex module
	// `com.mycompany.android.foo` overriding `com.android.foo`, then this list contains both
	// `com.android.foo` and `com.mycompany.android.foo`.  If the APEX Soong module is a
	// prebuilt, the name here doesn't have the `prebuilt_` prefix.
	InApexModules []string

	// True if this is for a prebuilt_apex.
	//
	// If true then this will customize the apex processing to make it suitable for handling
@@ -100,7 +91,6 @@ func (i ApexInfo) AddJSONData(d *map[string]interface{}) {
	(*d)["Apex"] = map[string]interface{}{
		"ApexVariationName": i.ApexVariationName,
		"MinSdkVersion":     i.MinSdkVersion,
		"InApexModules":     i.InApexModules,
		"InApexVariants":    i.InApexVariants,
		"ForPrebuiltApex":   i.ForPrebuiltApex,
	}
@@ -135,15 +125,6 @@ func (i ApexInfo) InApexVariant(apexVariant string) bool {
	return false
}

func (i ApexInfo) InApexModule(apexModuleName string) bool {
	for _, a := range i.InApexModules {
		if a == apexModuleName {
			return true
		}
	}
	return false
}

// To satisfy the comparable interface
func (i ApexInfo) Equal(other any) bool {
	otherApexInfo, ok := other.(ApexInfo)
@@ -151,8 +132,7 @@ func (i ApexInfo) Equal(other any) bool {
		i.MinSdkVersion == otherApexInfo.MinSdkVersion &&
		i.Updatable == otherApexInfo.Updatable &&
		i.UsePlatformApis == otherApexInfo.UsePlatformApis &&
		reflect.DeepEqual(i.InApexVariants, otherApexInfo.InApexVariants) &&
		reflect.DeepEqual(i.InApexModules, otherApexInfo.InApexModules)
		slices.Equal(i.InApexVariants, otherApexInfo.InApexVariants)
}

// ApexBundleInfo contains information about the dependencies of an apex
@@ -361,24 +341,11 @@ func (m *ApexModuleBase) ApexAvailable() []string {
func (m *ApexModuleBase) BuildForApex(apex ApexInfo) {
	m.apexInfosLock.Lock()
	defer m.apexInfosLock.Unlock()
	for i, v := range m.apexInfos {
		if v.ApexVariationName == apex.ApexVariationName {
			if len(apex.InApexModules) != 1 {
				panic(fmt.Errorf("Newly created apexInfo must be for a single APEX"))
			}
			// Even when the ApexVariantNames are the same, the given ApexInfo might
			// actually be for different APEX. This can happen when an APEX is
			// overridden via override_apex. For example, there can be two apexes
			// `com.android.foo` (from the `apex` module type) and
			// `com.mycompany.android.foo` (from the `override_apex` module type), both
			// of which has the same ApexVariantName `com.android.foo`. Add the apex
			// name to the list so that it's not lost.
			if !InList(apex.InApexModules[0], v.InApexModules) {
				m.apexInfos[i].InApexModules = append(m.apexInfos[i].InApexModules, apex.InApexModules[0])
			}
	if slices.ContainsFunc(m.apexInfos, func(existing ApexInfo) bool {
		return existing.ApexVariationName == apex.ApexVariationName
	}) {
		return
	}
	}
	m.apexInfos = append(m.apexInfos, apex)
}

@@ -546,7 +513,6 @@ func mergeApexVariations(apexInfos []ApexInfo) (merged []ApexInfo, aliases [][2]
		if index, exists := seen[mergedName]; exists {
			// 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].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`.
@@ -556,7 +522,6 @@ func mergeApexVariations(apexInfos []ApexInfo) (merged []ApexInfo, aliases [][2]
			seen[mergedName] = len(merged)
			apexInfo.ApexVariationName = mergedName
			apexInfo.InApexVariants = CopyOf(apexInfo.InApexVariants)
			apexInfo.InApexModules = CopyOf(apexInfo.InApexModules)
			apexInfo.TestApexes = CopyOf(apexInfo.TestApexes)
			merged = append(merged, apexInfo)
		}
+0 −23
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ func Test_mergeApexVariations(t *testing.T) {
					ApexVariationName: "foo",
					MinSdkVersion:     FutureApiLevel,
					InApexVariants:    []string{"foo"},
					InApexModules:     []string{"foo"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
			},
@@ -46,7 +45,6 @@ func Test_mergeApexVariations(t *testing.T) {
					ApexVariationName: "apex10000",
					MinSdkVersion:     FutureApiLevel,
					InApexVariants:    []string{"foo"},
					InApexModules:     []string{"foo"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
			},
@@ -61,14 +59,12 @@ func Test_mergeApexVariations(t *testing.T) {
					ApexVariationName: "foo",
					MinSdkVersion:     FutureApiLevel,
					InApexVariants:    []string{"foo"},
					InApexModules:     []string{"foo"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
				{
					ApexVariationName: "bar",
					MinSdkVersion:     FutureApiLevel,
					InApexVariants:    []string{"bar"},
					InApexModules:     []string{"bar"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
			},
@@ -77,7 +73,6 @@ func Test_mergeApexVariations(t *testing.T) {
					ApexVariationName: "apex10000",
					MinSdkVersion:     FutureApiLevel,
					InApexVariants:    []string{"foo", "bar"},
					InApexModules:     []string{"foo", "bar"},
				}},
			wantAliases: [][2]string{
				{"foo", "apex10000"},
@@ -91,14 +86,12 @@ func Test_mergeApexVariations(t *testing.T) {
					ApexVariationName: "foo",
					MinSdkVersion:     FutureApiLevel,
					InApexVariants:    []string{"foo"},
					InApexModules:     []string{"foo"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
				{
					ApexVariationName: "bar",
					MinSdkVersion:     uncheckedFinalApiLevel(30),
					InApexVariants:    []string{"bar"},
					InApexModules:     []string{"bar"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
			},
@@ -107,14 +100,12 @@ func Test_mergeApexVariations(t *testing.T) {
					ApexVariationName: "apex10000",
					MinSdkVersion:     FutureApiLevel,
					InApexVariants:    []string{"foo"},
					InApexModules:     []string{"foo"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
				{
					ApexVariationName: "apex30",
					MinSdkVersion:     uncheckedFinalApiLevel(30),
					InApexVariants:    []string{"bar"},
					InApexModules:     []string{"bar"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
			},
@@ -130,7 +121,6 @@ func Test_mergeApexVariations(t *testing.T) {
					ApexVariationName: "foo",
					MinSdkVersion:     FutureApiLevel,
					InApexVariants:    []string{"foo"},
					InApexModules:     []string{"foo"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
				{
@@ -138,7 +128,6 @@ func Test_mergeApexVariations(t *testing.T) {
					MinSdkVersion:     FutureApiLevel,
					Updatable:         true,
					InApexVariants:    []string{"bar"},
					InApexModules:     []string{"bar"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
			},
@@ -148,7 +137,6 @@ func Test_mergeApexVariations(t *testing.T) {
					MinSdkVersion:     FutureApiLevel,
					Updatable:         true,
					InApexVariants:    []string{"foo", "bar"},
					InApexModules:     []string{"foo", "bar"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
			},
@@ -164,7 +152,6 @@ func Test_mergeApexVariations(t *testing.T) {
					ApexVariationName: "foo",
					MinSdkVersion:     FutureApiLevel,
					InApexVariants:    []string{"foo"},
					InApexModules:     []string{"foo"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
				{
@@ -172,7 +159,6 @@ func Test_mergeApexVariations(t *testing.T) {
					MinSdkVersion:     FutureApiLevel,
					Updatable:         true,
					InApexVariants:    []string{"bar"},
					InApexModules:     []string{"bar"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
				// This one should not be merged in with the others because it is for
@@ -182,7 +168,6 @@ func Test_mergeApexVariations(t *testing.T) {
					MinSdkVersion:     FutureApiLevel,
					Updatable:         true,
					InApexVariants:    []string{"baz"},
					InApexModules:     []string{"baz"},
					ForPrebuiltApex:   ForPrebuiltApex,
				},
			},
@@ -192,7 +177,6 @@ func Test_mergeApexVariations(t *testing.T) {
					MinSdkVersion:     FutureApiLevel,
					Updatable:         true,
					InApexVariants:    []string{"foo", "bar"},
					InApexModules:     []string{"foo", "bar"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
				{
@@ -200,7 +184,6 @@ func Test_mergeApexVariations(t *testing.T) {
					MinSdkVersion:     FutureApiLevel,
					Updatable:         true,
					InApexVariants:    []string{"baz"},
					InApexModules:     []string{"baz"},
					ForPrebuiltApex:   ForPrebuiltApex,
				},
			},
@@ -216,7 +199,6 @@ func Test_mergeApexVariations(t *testing.T) {
					ApexVariationName: "foo",
					MinSdkVersion:     FutureApiLevel,
					InApexVariants:    []string{"foo"},
					InApexModules:     []string{"foo"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
				{
@@ -224,7 +206,6 @@ func Test_mergeApexVariations(t *testing.T) {
					MinSdkVersion:     FutureApiLevel,
					UsePlatformApis:   true,
					InApexVariants:    []string{"bar"},
					InApexModules:     []string{"bar"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
			},
@@ -233,7 +214,6 @@ func Test_mergeApexVariations(t *testing.T) {
					ApexVariationName: "apex10000",
					MinSdkVersion:     FutureApiLevel,
					InApexVariants:    []string{"foo", "bar"},
					InApexModules:     []string{"foo", "bar"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
			},
@@ -250,7 +230,6 @@ func Test_mergeApexVariations(t *testing.T) {
					MinSdkVersion:     FutureApiLevel,
					UsePlatformApis:   true,
					InApexVariants:    []string{"foo"},
					InApexModules:     []string{"foo"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
				{
@@ -258,7 +237,6 @@ func Test_mergeApexVariations(t *testing.T) {
					MinSdkVersion:     FutureApiLevel,
					UsePlatformApis:   true,
					InApexVariants:    []string{"bar"},
					InApexModules:     []string{"bar"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
			},
@@ -268,7 +246,6 @@ func Test_mergeApexVariations(t *testing.T) {
					MinSdkVersion:     FutureApiLevel,
					UsePlatformApis:   true,
					InApexVariants:    []string{"foo", "bar"},
					InApexModules:     []string{"foo", "bar"},
					ForPrebuiltApex:   NotForPrebuiltApex,
				},
			},
+1 −1
Original line number Diff line number Diff line
@@ -382,7 +382,7 @@ func (c *ContainersInfo) BelongingContainers() []*container {

func (c *ContainersInfo) ApexNames() (ret []string) {
	for _, apex := range c.belongingApexes {
		ret = append(ret, apex.InApexModules...)
		ret = append(ret, apex.InApexVariants...)
	}
	slices.Sort(ret)
	return ret
+0 −1
Original line number Diff line number Diff line
@@ -1020,7 +1020,6 @@ func (a *apexBundle) ApexInfoMutator(mctx android.TopDownMutatorContext) {
		Updatable:         a.Updatable(),
		UsePlatformApis:   a.UsePlatformApis(),
		InApexVariants:    []string{apexVariationName},
		InApexModules:     []string{a.Name()}, // could be com.mycompany.android.foo
		TestApexes:        testApexes,
		BaseApexName:      mctx.ModuleName(),
		ApexAvailableName: proptools.String(a.properties.Apex_available_name),
+0 −1
Original line number Diff line number Diff line
@@ -356,7 +356,6 @@ func (p *prebuiltCommon) apexInfoMutator(mctx android.TopDownMutatorContext) {
	apexInfo := android.ApexInfo{
		ApexVariationName: apexVariationName,
		InApexVariants:    []string{apexVariationName},
		InApexModules:     []string{p.BaseModuleName()}, // BaseModuleName() to avoid the prebuilt_ prefix.
		ForPrebuiltApex:   true,
	}