Merge changes Ib07d4410,I0b306292 am: 7b4fb51919 am: 24f37728ee am: 08956ce9b5

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1675766

Change-Id: If2a5d89e4e51b6a8813daf082a910f2dea91f604
This commit is contained in:
Jiyong Park 2021-04-16 00:27:39 +00:00 committed by Automerger Merge Worker
commit cc7628c5fa
6 changed files with 29 additions and 44 deletions

View file

@ -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 {

View file

@ -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"},

View file

@ -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()},

View file

@ -53,14 +53,6 @@ func nativeApiLevelFromUser(ctx android.BaseModuleContext,
return value, nil
}
func nativeApiLevelFromUserWithDefault(ctx android.BaseModuleContext,
raw string, defaultValue string) (android.ApiLevel, error) {
if raw == "" {
raw = defaultValue
}
return nativeApiLevelFromUser(ctx, raw)
}
func nativeApiLevelOrPanic(ctx android.BaseModuleContext,
raw string) android.ApiLevel {
value, err := nativeApiLevelFromUser(ctx, raw)

View file

@ -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()) {

View file

@ -20,6 +20,7 @@ import (
"sync"
"github.com/google/blueprint"
"github.com/google/blueprint/proptools"
"android/soong/android"
)
@ -142,8 +143,8 @@ func (this *stubDecorator) initializeProperties(ctx BaseModuleContext) bool {
return false
}
this.unversionedUntil, err = nativeApiLevelFromUserWithDefault(ctx,
String(this.properties.Unversioned_until), "minimum")
str := proptools.StringDefault(this.properties.Unversioned_until, "minimum")
this.unversionedUntil, err = nativeApiLevelFromUser(ctx, str)
if err != nil {
ctx.PropertyErrorf("unversioned_until", err.Error())
return false