Merge "Stop exporting systemserverclasspath_fragment when targeting S"
This commit is contained in:
@@ -661,6 +661,10 @@ type SdkMemberType interface {
|
|||||||
// an Android.bp file.
|
// an Android.bp file.
|
||||||
RequiresBpProperty() bool
|
RequiresBpProperty() bool
|
||||||
|
|
||||||
|
// SupportedBuildReleases returns the string representation of a set of target build releases that
|
||||||
|
// support this member type.
|
||||||
|
SupportedBuildReleases() string
|
||||||
|
|
||||||
// UsableWithSdkAndSdkSnapshot returns true if the member type supports the sdk/sdk_snapshot,
|
// UsableWithSdkAndSdkSnapshot returns true if the member type supports the sdk/sdk_snapshot,
|
||||||
// false otherwise.
|
// false otherwise.
|
||||||
UsableWithSdkAndSdkSnapshot() bool
|
UsableWithSdkAndSdkSnapshot() bool
|
||||||
@@ -773,6 +777,11 @@ type SdkMemberTypeBase struct {
|
|||||||
// property to be specifiable in an Android.bp file.
|
// property to be specifiable in an Android.bp file.
|
||||||
BpPropertyNotRequired bool
|
BpPropertyNotRequired bool
|
||||||
|
|
||||||
|
// The name of the first targeted build release.
|
||||||
|
//
|
||||||
|
// If not specified then it is assumed to be available on all targeted build releases.
|
||||||
|
SupportedBuildReleaseSpecification string
|
||||||
|
|
||||||
SupportsSdk bool
|
SupportsSdk bool
|
||||||
HostOsDependent bool
|
HostOsDependent bool
|
||||||
|
|
||||||
@@ -793,6 +802,10 @@ func (b *SdkMemberTypeBase) RequiresBpProperty() bool {
|
|||||||
return !b.BpPropertyNotRequired
|
return !b.BpPropertyNotRequired
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *SdkMemberTypeBase) SupportedBuildReleases() string {
|
||||||
|
return b.SupportedBuildReleaseSpecification
|
||||||
|
}
|
||||||
|
|
||||||
func (b *SdkMemberTypeBase) UsableWithSdkAndSdkSnapshot() bool {
|
func (b *SdkMemberTypeBase) UsableWithSdkAndSdkSnapshot() bool {
|
||||||
return b.SupportsSdk
|
return b.SupportsSdk
|
||||||
}
|
}
|
||||||
|
@@ -164,6 +164,9 @@ var (
|
|||||||
android.SdkMemberTypeBase{
|
android.SdkMemberTypeBase{
|
||||||
PropertyName: "java_systemserver_libs",
|
PropertyName: "java_systemserver_libs",
|
||||||
SupportsSdk: true,
|
SupportsSdk: true,
|
||||||
|
|
||||||
|
// This was only added in Tiramisu.
|
||||||
|
SupportedBuildReleaseSpecification: "Tiramisu+",
|
||||||
},
|
},
|
||||||
func(ctx android.SdkMemberContext, j *Library) android.Path {
|
func(ctx android.SdkMemberContext, j *Library) android.Path {
|
||||||
// Java systemserver libs are only provided in the SDK to provide access to their dex
|
// Java systemserver libs are only provided in the SDK to provide access to their dex
|
||||||
|
@@ -28,6 +28,9 @@ func init() {
|
|||||||
SdkMemberTypeBase: android.SdkMemberTypeBase{
|
SdkMemberTypeBase: android.SdkMemberTypeBase{
|
||||||
PropertyName: "systemserverclasspath_fragments",
|
PropertyName: "systemserverclasspath_fragments",
|
||||||
SupportsSdk: true,
|
SupportsSdk: true,
|
||||||
|
|
||||||
|
// This was only added in Tiramisu.
|
||||||
|
SupportedBuildReleaseSpecification: "Tiramisu+",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@@ -22,13 +22,16 @@ import (
|
|||||||
"android/soong/java"
|
"android/soong/java"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSnapshotWithSystemServerClasspathFragment(t *testing.T) {
|
func testSnapshotWithSystemServerClasspathFragment(t *testing.T, targetBuildRelease string, expectedSdkSnapshot string) {
|
||||||
result := android.GroupFixturePreparers(
|
result := android.GroupFixturePreparers(
|
||||||
prepareForSdkTestWithJava,
|
prepareForSdkTestWithJava,
|
||||||
java.PrepareForTestWithJavaDefaultModules,
|
java.PrepareForTestWithJavaDefaultModules,
|
||||||
java.PrepareForTestWithJavaSdkLibraryFiles,
|
java.PrepareForTestWithJavaSdkLibraryFiles,
|
||||||
java.FixtureWithLastReleaseApis("mysdklibrary"),
|
java.FixtureWithLastReleaseApis("mysdklibrary"),
|
||||||
dexpreopt.FixtureSetApexSystemServerJars("myapex:mylib", "myapex:mysdklibrary"),
|
dexpreopt.FixtureSetApexSystemServerJars("myapex:mylib", "myapex:mysdklibrary"),
|
||||||
|
android.FixtureModifyEnv(func(env map[string]string) {
|
||||||
|
env["SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE"] = targetBuildRelease
|
||||||
|
}),
|
||||||
prepareForSdkTestWithApex,
|
prepareForSdkTestWithApex,
|
||||||
|
|
||||||
android.FixtureWithRootAndroidBp(`
|
android.FixtureWithRootAndroidBp(`
|
||||||
@@ -83,7 +86,34 @@ func TestSnapshotWithSystemServerClasspathFragment(t *testing.T) {
|
|||||||
).RunTest(t)
|
).RunTest(t)
|
||||||
|
|
||||||
CheckSnapshot(t, result, "mysdk", "",
|
CheckSnapshot(t, result, "mysdk", "",
|
||||||
checkAndroidBpContents(`
|
checkAndroidBpContents(expectedSdkSnapshot),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSnapshotWithSystemServerClasspathFragment(t *testing.T) {
|
||||||
|
t.Run("target-s", func(t *testing.T) {
|
||||||
|
testSnapshotWithSystemServerClasspathFragment(t, "S", `
|
||||||
|
// This is auto-generated. DO NOT EDIT.
|
||||||
|
|
||||||
|
java_sdk_library_import {
|
||||||
|
name: "mysdklibrary",
|
||||||
|
prefer: false,
|
||||||
|
visibility: ["//visibility:public"],
|
||||||
|
apex_available: ["myapex"],
|
||||||
|
shared_library: false,
|
||||||
|
public: {
|
||||||
|
jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
|
||||||
|
stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
|
||||||
|
current_api: "sdk_library/public/mysdklibrary.txt",
|
||||||
|
removed_api: "sdk_library/public/mysdklibrary-removed.txt",
|
||||||
|
sdk_version: "current",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("target-t", func(t *testing.T) {
|
||||||
|
testSnapshotWithSystemServerClasspathFragment(t, "Tiramisu", `
|
||||||
// This is auto-generated. DO NOT EDIT.
|
// This is auto-generated. DO NOT EDIT.
|
||||||
|
|
||||||
java_sdk_library_import {
|
java_sdk_library_import {
|
||||||
@@ -120,6 +150,6 @@ prebuilt_systemserverclasspath_fragment {
|
|||||||
"mysdklibrary",
|
"mysdklibrary",
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
`),
|
`)
|
||||||
)
|
})
|
||||||
}
|
}
|
||||||
|
@@ -239,7 +239,7 @@ func (s *sdk) collectMembers(ctx android.ModuleContext) {
|
|||||||
// Finally, the member type slices are concatenated together to form a single slice. The order in
|
// Finally, the member type slices are concatenated together to form a single slice. The order in
|
||||||
// which they are concatenated is the order in which the member types were registered in the
|
// which they are concatenated is the order in which the member types were registered in the
|
||||||
// android.SdkMemberTypesRegistry.
|
// android.SdkMemberTypesRegistry.
|
||||||
func (s *sdk) groupMemberVariantsByMemberThenType(ctx android.ModuleContext, memberVariantDeps []sdkMemberVariantDep) []*sdkMember {
|
func (s *sdk) groupMemberVariantsByMemberThenType(ctx android.ModuleContext, targetBuildRelease *buildRelease, memberVariantDeps []sdkMemberVariantDep) []*sdkMember {
|
||||||
byType := make(map[android.SdkMemberType][]*sdkMember)
|
byType := make(map[android.SdkMemberType][]*sdkMember)
|
||||||
byName := make(map[string]*sdkMember)
|
byName := make(map[string]*sdkMember)
|
||||||
|
|
||||||
@@ -268,13 +268,39 @@ func (s *sdk) groupMemberVariantsByMemberThenType(ctx android.ModuleContext, mem
|
|||||||
}
|
}
|
||||||
var members []*sdkMember
|
var members []*sdkMember
|
||||||
for _, memberListProperty := range s.memberTypeListProperties() {
|
for _, memberListProperty := range s.memberTypeListProperties() {
|
||||||
membersOfType := byType[memberListProperty.memberType]
|
memberType := memberListProperty.memberType
|
||||||
|
|
||||||
|
if !isMemberTypeSupportedByTargetBuildRelease(memberType, targetBuildRelease) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
membersOfType := byType[memberType]
|
||||||
members = append(members, membersOfType...)
|
members = append(members, membersOfType...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return members
|
return members
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// isMemberTypeSupportedByTargetBuildRelease returns true if the member type is supported by the
|
||||||
|
// target build release.
|
||||||
|
func isMemberTypeSupportedByTargetBuildRelease(memberType android.SdkMemberType, targetBuildRelease *buildRelease) bool {
|
||||||
|
supportedByTargetBuildRelease := true
|
||||||
|
supportedBuildReleases := memberType.SupportedBuildReleases()
|
||||||
|
if supportedBuildReleases == "" {
|
||||||
|
supportedBuildReleases = "S+"
|
||||||
|
}
|
||||||
|
|
||||||
|
set, err := parseBuildReleaseSet(supportedBuildReleases)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("member type %s has invalid supported build releases %q: %s",
|
||||||
|
memberType.SdkPropertyName(), supportedBuildReleases, err))
|
||||||
|
}
|
||||||
|
if !set.contains(targetBuildRelease) {
|
||||||
|
supportedByTargetBuildRelease = false
|
||||||
|
}
|
||||||
|
return supportedByTargetBuildRelease
|
||||||
|
}
|
||||||
|
|
||||||
func appendUniqueVariants(variants []android.SdkAware, newVariant android.SdkAware) []android.SdkAware {
|
func appendUniqueVariants(variants []android.SdkAware, newVariant android.SdkAware) []android.SdkAware {
|
||||||
for _, v := range variants {
|
for _, v := range variants {
|
||||||
if v == newVariant {
|
if v == newVariant {
|
||||||
@@ -401,7 +427,7 @@ be unnecessary as every module in the sdk already has its own licenses property.
|
|||||||
|
|
||||||
// Group the variants for each member module together and then group the members of each member
|
// Group the variants for each member module together and then group the members of each member
|
||||||
// type together.
|
// type together.
|
||||||
members := s.groupMemberVariantsByMemberThenType(ctx, memberVariantDeps)
|
members := s.groupMemberVariantsByMemberThenType(ctx, targetBuildRelease, memberVariantDeps)
|
||||||
|
|
||||||
// Create the prebuilt modules for each of the member modules.
|
// Create the prebuilt modules for each of the member modules.
|
||||||
traits := s.gatherTraits()
|
traits := s.gatherTraits()
|
||||||
|
Reference in New Issue
Block a user