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:
commit
cc7628c5fa
6 changed files with 29 additions and 44 deletions
|
@ -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 {
|
||||
|
|
|
@ -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"},
|
||||
|
|
|
@ -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()},
|
||||
|
|
|
@ -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)
|
||||
|
|
2
cc/cc.go
2
cc/cc.go
|
@ -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()) {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue