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

Commit 4eab21d5 authored by Jiyong Park's avatar Jiyong Park
Browse files

ApexInfo doesn't pass MinSdkVersion as string, but as ApiLevel

ApexInfo is not part of the properties struct. It can handle structs
having private fields.

Bug: 1663140
Test: m
Change-Id: Ib07d4410f0ce187c9de347da34b84b814b2eb537
parent ee9b1170
Loading
Loading
Loading
Loading
+3 −11
Original line number Diff line number Diff line
@@ -43,10 +43,8 @@ type ApexInfo struct {
	// mergeApexVariations.
	ApexVariationName string

	// Serialized ApiLevel that this module has to support at minimum. Should be accessed via
	// MinSdkVersion() method. Cannot be stored in its struct form because this is cloned into
	// properties structs, and ApiLevel has private members.
	MinSdkVersionStr string
	// ApiLevel that this module has to support at minimum.
	MinSdkVersion ApiLevel

	// True if this module comes from an updatable apexBundle.
	Updatable bool
@@ -82,19 +80,13 @@ var ApexInfoProvider = blueprint.NewMutatorProvider(ApexInfo{}, "apex")
// have to be built twice, but only once. In that case, the two apex variations apex.a and apex.b
// are configured to have the same alias variation named apex29.
func (i ApexInfo) mergedName(ctx PathContext) string {
	name := "apex" + strconv.Itoa(i.MinSdkVersion(ctx).FinalOrFutureInt())
	name := "apex" + strconv.Itoa(i.MinSdkVersion.FinalOrFutureInt())
	for _, sdk := range i.RequiredSdks {
		name += "_" + sdk.Name + "_" + sdk.Version
	}
	return name
}

// MinSdkVersion gives the api level that this module has to support at minimum. This is from the
// min_sdk_version property of the containing apexBundle.
func (i ApexInfo) MinSdkVersion(ctx PathContext) ApiLevel {
	return ApiLevelOrPanic(ctx, i.MinSdkVersionStr)
}

// IsForPlatform tells whether this module is for the platform or not. If false is returned, it
// means that this apex variant of the module is built for an APEX.
func (i ApexInfo) IsForPlatform() bool {
+21 −21
Original line number Diff line number Diff line
@@ -33,10 +33,10 @@ func Test_mergeApexVariations(t *testing.T) {
		{
			name: "single",
			in: []ApexInfo{
				{"foo", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
				{"foo", FutureApiLevel, false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
			},
			wantMerged: []ApexInfo{
				{"apex10000", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
				{"apex10000", FutureApiLevel, false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
			},
			wantAliases: [][2]string{
				{"foo", "apex10000"},
@@ -45,11 +45,11 @@ func Test_mergeApexVariations(t *testing.T) {
		{
			name: "merge",
			in: []ApexInfo{
				{"foo", "current", false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
				{"bar", "current", false, SdkRefs{{"baz", "1"}}, []string{"bar"}, nil, NotForPrebuiltApex},
				{"foo", FutureApiLevel, false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
				{"bar", FutureApiLevel, false, SdkRefs{{"baz", "1"}}, []string{"bar"}, nil, NotForPrebuiltApex},
			},
			wantMerged: []ApexInfo{
				{"apex10000_baz_1", "current", false, SdkRefs{{"baz", "1"}}, []string{"bar", "foo"}, nil, false}},
				{"apex10000_baz_1", FutureApiLevel, false, SdkRefs{{"baz", "1"}}, []string{"bar", "foo"}, nil, false}},
			wantAliases: [][2]string{
				{"bar", "apex10000_baz_1"},
				{"foo", "apex10000_baz_1"},
@@ -58,12 +58,12 @@ func Test_mergeApexVariations(t *testing.T) {
		{
			name: "don't merge version",
			in: []ApexInfo{
				{"foo", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
				{"bar", "30", false, nil, []string{"bar"}, nil, NotForPrebuiltApex},
				{"foo", FutureApiLevel, false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
				{"bar", uncheckedFinalApiLevel(30), false, nil, []string{"bar"}, nil, NotForPrebuiltApex},
			},
			wantMerged: []ApexInfo{
				{"apex30", "30", false, nil, []string{"bar"}, nil, NotForPrebuiltApex},
				{"apex10000", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
				{"apex30", uncheckedFinalApiLevel(30), false, nil, []string{"bar"}, nil, NotForPrebuiltApex},
				{"apex10000", FutureApiLevel, false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
			},
			wantAliases: [][2]string{
				{"bar", "apex30"},
@@ -73,11 +73,11 @@ func Test_mergeApexVariations(t *testing.T) {
		{
			name: "merge updatable",
			in: []ApexInfo{
				{"foo", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
				{"bar", "current", true, nil, []string{"bar"}, nil, NotForPrebuiltApex},
				{"foo", FutureApiLevel, false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
				{"bar", FutureApiLevel, true, nil, []string{"bar"}, nil, NotForPrebuiltApex},
			},
			wantMerged: []ApexInfo{
				{"apex10000", "current", true, nil, []string{"bar", "foo"}, nil, NotForPrebuiltApex},
				{"apex10000", FutureApiLevel, true, nil, []string{"bar", "foo"}, nil, NotForPrebuiltApex},
			},
			wantAliases: [][2]string{
				{"bar", "apex10000"},
@@ -87,12 +87,12 @@ func Test_mergeApexVariations(t *testing.T) {
		{
			name: "don't merge sdks",
			in: []ApexInfo{
				{"foo", "current", false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
				{"bar", "current", false, SdkRefs{{"baz", "2"}}, []string{"bar"}, nil, NotForPrebuiltApex},
				{"foo", FutureApiLevel, false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
				{"bar", FutureApiLevel, false, SdkRefs{{"baz", "2"}}, []string{"bar"}, nil, NotForPrebuiltApex},
			},
			wantMerged: []ApexInfo{
				{"apex10000_baz_2", "current", false, SdkRefs{{"baz", "2"}}, []string{"bar"}, nil, NotForPrebuiltApex},
				{"apex10000_baz_1", "current", false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
				{"apex10000_baz_2", FutureApiLevel, false, SdkRefs{{"baz", "2"}}, []string{"bar"}, nil, NotForPrebuiltApex},
				{"apex10000_baz_1", FutureApiLevel, false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
			},
			wantAliases: [][2]string{
				{"bar", "apex10000_baz_2"},
@@ -102,15 +102,15 @@ func Test_mergeApexVariations(t *testing.T) {
		{
			name: "don't merge when for prebuilt_apex",
			in: []ApexInfo{
				{"foo", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
				{"bar", "current", true, nil, []string{"bar"}, nil, NotForPrebuiltApex},
				{"foo", FutureApiLevel, false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
				{"bar", FutureApiLevel, true, nil, []string{"bar"}, nil, NotForPrebuiltApex},
				// This one should not be merged in with the others because it is for
				// a prebuilt_apex.
				{"baz", "current", true, nil, []string{"baz"}, nil, ForPrebuiltApex},
				{"baz", FutureApiLevel, true, nil, []string{"baz"}, nil, ForPrebuiltApex},
			},
			wantMerged: []ApexInfo{
				{"apex10000", "current", true, nil, []string{"bar", "foo"}, nil, NotForPrebuiltApex},
				{"baz", "current", true, nil, []string{"baz"}, nil, ForPrebuiltApex},
				{"apex10000", FutureApiLevel, true, nil, []string{"bar", "foo"}, nil, NotForPrebuiltApex},
				{"baz", FutureApiLevel, true, nil, []string{"baz"}, nil, ForPrebuiltApex},
			},
			wantAliases: [][2]string{
				{"bar", "apex10000"},
+1 −1
Original line number Diff line number Diff line
@@ -903,7 +903,7 @@ func (a *apexBundle) ApexInfoMutator(mctx android.TopDownMutatorContext) {
	// be built for this apexBundle.
	apexInfo := android.ApexInfo{
		ApexVariationName: mctx.ModuleName(),
		MinSdkVersionStr:  minSdkVersion.String(),
		MinSdkVersion:     minSdkVersion,
		RequiredSdks:      a.RequiredSdks(),
		Updatable:         a.Updatable(),
		InApexes:          []string{mctx.ModuleName()},
+1 −1
Original line number Diff line number Diff line
@@ -2499,7 +2499,7 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
	c.apexSdkVersion = android.FutureApiLevel
	apexInfo := ctx.Provider(android.ApexInfoProvider).(android.ApexInfo)
	if !apexInfo.IsForPlatform() {
		c.apexSdkVersion = apexInfo.MinSdkVersion(ctx)
		c.apexSdkVersion = apexInfo.MinSdkVersion
	}

	if android.InList("hwaddress", ctx.Config().SanitizeDevice()) {