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.
|
// mergeApexVariations.
|
||||||
ApexVariationName string
|
ApexVariationName string
|
||||||
|
|
||||||
// Serialized ApiLevel that this module has to support at minimum. Should be accessed via
|
// ApiLevel that this module has to support at minimum.
|
||||||
// MinSdkVersion() method. Cannot be stored in its struct form because this is cloned into
|
MinSdkVersion ApiLevel
|
||||||
// properties structs, and ApiLevel has private members.
|
|
||||||
MinSdkVersionStr string
|
|
||||||
|
|
||||||
// True if this module comes from an updatable apexBundle.
|
// True if this module comes from an updatable apexBundle.
|
||||||
Updatable bool
|
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
|
// 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.
|
// are configured to have the same alias variation named apex29.
|
||||||
func (i ApexInfo) mergedName(ctx PathContext) string {
|
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 {
|
for _, sdk := range i.RequiredSdks {
|
||||||
name += "_" + sdk.Name + "_" + sdk.Version
|
name += "_" + sdk.Name + "_" + sdk.Version
|
||||||
}
|
}
|
||||||
return name
|
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
|
// 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.
|
// means that this apex variant of the module is built for an APEX.
|
||||||
func (i ApexInfo) IsForPlatform() bool {
|
func (i ApexInfo) IsForPlatform() bool {
|
||||||
|
|
|
@ -33,10 +33,10 @@ func Test_mergeApexVariations(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "single",
|
name: "single",
|
||||||
in: []ApexInfo{
|
in: []ApexInfo{
|
||||||
{"foo", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
|
{"foo", FutureApiLevel, false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
|
||||||
},
|
},
|
||||||
wantMerged: []ApexInfo{
|
wantMerged: []ApexInfo{
|
||||||
{"apex10000", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
|
{"apex10000", FutureApiLevel, false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
|
||||||
},
|
},
|
||||||
wantAliases: [][2]string{
|
wantAliases: [][2]string{
|
||||||
{"foo", "apex10000"},
|
{"foo", "apex10000"},
|
||||||
|
@ -45,11 +45,11 @@ func Test_mergeApexVariations(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "merge",
|
name: "merge",
|
||||||
in: []ApexInfo{
|
in: []ApexInfo{
|
||||||
{"foo", "current", false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
|
{"foo", FutureApiLevel, false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
|
||||||
{"bar", "current", false, SdkRefs{{"baz", "1"}}, []string{"bar"}, nil, NotForPrebuiltApex},
|
{"bar", FutureApiLevel, false, SdkRefs{{"baz", "1"}}, []string{"bar"}, nil, NotForPrebuiltApex},
|
||||||
},
|
},
|
||||||
wantMerged: []ApexInfo{
|
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{
|
wantAliases: [][2]string{
|
||||||
{"bar", "apex10000_baz_1"},
|
{"bar", "apex10000_baz_1"},
|
||||||
{"foo", "apex10000_baz_1"},
|
{"foo", "apex10000_baz_1"},
|
||||||
|
@ -58,12 +58,12 @@ func Test_mergeApexVariations(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "don't merge version",
|
name: "don't merge version",
|
||||||
in: []ApexInfo{
|
in: []ApexInfo{
|
||||||
{"foo", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
|
{"foo", FutureApiLevel, false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
|
||||||
{"bar", "30", false, nil, []string{"bar"}, nil, NotForPrebuiltApex},
|
{"bar", uncheckedFinalApiLevel(30), false, nil, []string{"bar"}, nil, NotForPrebuiltApex},
|
||||||
},
|
},
|
||||||
wantMerged: []ApexInfo{
|
wantMerged: []ApexInfo{
|
||||||
{"apex30", "30", false, nil, []string{"bar"}, nil, NotForPrebuiltApex},
|
{"apex30", uncheckedFinalApiLevel(30), false, nil, []string{"bar"}, nil, NotForPrebuiltApex},
|
||||||
{"apex10000", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
|
{"apex10000", FutureApiLevel, false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
|
||||||
},
|
},
|
||||||
wantAliases: [][2]string{
|
wantAliases: [][2]string{
|
||||||
{"bar", "apex30"},
|
{"bar", "apex30"},
|
||||||
|
@ -73,11 +73,11 @@ func Test_mergeApexVariations(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "merge updatable",
|
name: "merge updatable",
|
||||||
in: []ApexInfo{
|
in: []ApexInfo{
|
||||||
{"foo", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
|
{"foo", FutureApiLevel, false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
|
||||||
{"bar", "current", true, nil, []string{"bar"}, nil, NotForPrebuiltApex},
|
{"bar", FutureApiLevel, true, nil, []string{"bar"}, nil, NotForPrebuiltApex},
|
||||||
},
|
},
|
||||||
wantMerged: []ApexInfo{
|
wantMerged: []ApexInfo{
|
||||||
{"apex10000", "current", true, nil, []string{"bar", "foo"}, nil, NotForPrebuiltApex},
|
{"apex10000", FutureApiLevel, true, nil, []string{"bar", "foo"}, nil, NotForPrebuiltApex},
|
||||||
},
|
},
|
||||||
wantAliases: [][2]string{
|
wantAliases: [][2]string{
|
||||||
{"bar", "apex10000"},
|
{"bar", "apex10000"},
|
||||||
|
@ -87,12 +87,12 @@ func Test_mergeApexVariations(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "don't merge sdks",
|
name: "don't merge sdks",
|
||||||
in: []ApexInfo{
|
in: []ApexInfo{
|
||||||
{"foo", "current", false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
|
{"foo", FutureApiLevel, false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
|
||||||
{"bar", "current", false, SdkRefs{{"baz", "2"}}, []string{"bar"}, nil, NotForPrebuiltApex},
|
{"bar", FutureApiLevel, false, SdkRefs{{"baz", "2"}}, []string{"bar"}, nil, NotForPrebuiltApex},
|
||||||
},
|
},
|
||||||
wantMerged: []ApexInfo{
|
wantMerged: []ApexInfo{
|
||||||
{"apex10000_baz_2", "current", false, SdkRefs{{"baz", "2"}}, []string{"bar"}, nil, NotForPrebuiltApex},
|
{"apex10000_baz_2", FutureApiLevel, false, SdkRefs{{"baz", "2"}}, []string{"bar"}, nil, NotForPrebuiltApex},
|
||||||
{"apex10000_baz_1", "current", false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
|
{"apex10000_baz_1", FutureApiLevel, false, SdkRefs{{"baz", "1"}}, []string{"foo"}, nil, NotForPrebuiltApex},
|
||||||
},
|
},
|
||||||
wantAliases: [][2]string{
|
wantAliases: [][2]string{
|
||||||
{"bar", "apex10000_baz_2"},
|
{"bar", "apex10000_baz_2"},
|
||||||
|
@ -102,15 +102,15 @@ func Test_mergeApexVariations(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "don't merge when for prebuilt_apex",
|
name: "don't merge when for prebuilt_apex",
|
||||||
in: []ApexInfo{
|
in: []ApexInfo{
|
||||||
{"foo", "current", false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
|
{"foo", FutureApiLevel, false, nil, []string{"foo"}, nil, NotForPrebuiltApex},
|
||||||
{"bar", "current", true, nil, []string{"bar"}, nil, NotForPrebuiltApex},
|
{"bar", FutureApiLevel, true, nil, []string{"bar"}, nil, NotForPrebuiltApex},
|
||||||
// This one should not be merged in with the others because it is for
|
// This one should not be merged in with the others because it is for
|
||||||
// a prebuilt_apex.
|
// a prebuilt_apex.
|
||||||
{"baz", "current", true, nil, []string{"baz"}, nil, ForPrebuiltApex},
|
{"baz", FutureApiLevel, true, nil, []string{"baz"}, nil, ForPrebuiltApex},
|
||||||
},
|
},
|
||||||
wantMerged: []ApexInfo{
|
wantMerged: []ApexInfo{
|
||||||
{"apex10000", "current", true, nil, []string{"bar", "foo"}, nil, NotForPrebuiltApex},
|
{"apex10000", FutureApiLevel, true, nil, []string{"bar", "foo"}, nil, NotForPrebuiltApex},
|
||||||
{"baz", "current", true, nil, []string{"baz"}, nil, ForPrebuiltApex},
|
{"baz", FutureApiLevel, true, nil, []string{"baz"}, nil, ForPrebuiltApex},
|
||||||
},
|
},
|
||||||
wantAliases: [][2]string{
|
wantAliases: [][2]string{
|
||||||
{"bar", "apex10000"},
|
{"bar", "apex10000"},
|
||||||
|
|
|
@ -903,7 +903,7 @@ func (a *apexBundle) ApexInfoMutator(mctx android.TopDownMutatorContext) {
|
||||||
// be built for this apexBundle.
|
// be built for this apexBundle.
|
||||||
apexInfo := android.ApexInfo{
|
apexInfo := android.ApexInfo{
|
||||||
ApexVariationName: mctx.ModuleName(),
|
ApexVariationName: mctx.ModuleName(),
|
||||||
MinSdkVersionStr: minSdkVersion.String(),
|
MinSdkVersion: minSdkVersion,
|
||||||
RequiredSdks: a.RequiredSdks(),
|
RequiredSdks: a.RequiredSdks(),
|
||||||
Updatable: a.Updatable(),
|
Updatable: a.Updatable(),
|
||||||
InApexes: []string{mctx.ModuleName()},
|
InApexes: []string{mctx.ModuleName()},
|
||||||
|
|
|
@ -53,14 +53,6 @@ func nativeApiLevelFromUser(ctx android.BaseModuleContext,
|
||||||
return value, nil
|
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,
|
func nativeApiLevelOrPanic(ctx android.BaseModuleContext,
|
||||||
raw string) android.ApiLevel {
|
raw string) android.ApiLevel {
|
||||||
value, err := nativeApiLevelFromUser(ctx, raw)
|
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
|
c.apexSdkVersion = android.FutureApiLevel
|
||||||
apexInfo := ctx.Provider(android.ApexInfoProvider).(android.ApexInfo)
|
apexInfo := ctx.Provider(android.ApexInfoProvider).(android.ApexInfo)
|
||||||
if !apexInfo.IsForPlatform() {
|
if !apexInfo.IsForPlatform() {
|
||||||
c.apexSdkVersion = apexInfo.MinSdkVersion(ctx)
|
c.apexSdkVersion = apexInfo.MinSdkVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
if android.InList("hwaddress", ctx.Config().SanitizeDevice()) {
|
if android.InList("hwaddress", ctx.Config().SanitizeDevice()) {
|
||||||
|
|
|
@ -20,6 +20,7 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/google/blueprint"
|
"github.com/google/blueprint"
|
||||||
|
"github.com/google/blueprint/proptools"
|
||||||
|
|
||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
)
|
)
|
||||||
|
@ -142,8 +143,8 @@ func (this *stubDecorator) initializeProperties(ctx BaseModuleContext) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
this.unversionedUntil, err = nativeApiLevelFromUserWithDefault(ctx,
|
str := proptools.StringDefault(this.properties.Unversioned_until, "minimum")
|
||||||
String(this.properties.Unversioned_until), "minimum")
|
this.unversionedUntil, err = nativeApiLevelFromUser(ctx, str)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.PropertyErrorf("unversioned_until", err.Error())
|
ctx.PropertyErrorf("unversioned_until", err.Error())
|
||||||
return false
|
return false
|
||||||
|
|
Loading…
Reference in a new issue