Merge "Support mechanism to select a specific version of module sdk prebuilt" into main
This commit is contained in:
commit
c36d579c2b
2 changed files with 74 additions and 0 deletions
|
@ -2643,6 +2643,70 @@ func TestMultiplePrebuilts(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestMultiplePlatformCompatConfigPrebuilts(t *testing.T) {
|
||||
bp := `
|
||||
// multiple variations of platform_compat_config
|
||||
// source
|
||||
platform_compat_config {
|
||||
name: "myconfig",
|
||||
}
|
||||
// prebuilt "v1"
|
||||
prebuilt_platform_compat_config {
|
||||
name: "myconfig",
|
||||
metadata: "myconfig.xml",
|
||||
}
|
||||
// prebuilt "v2"
|
||||
prebuilt_platform_compat_config {
|
||||
name: "myconfig.v2",
|
||||
source_module_name: "myconfig", // without source_module_name, the singleton will merge two .xml files
|
||||
metadata: "myconfig.v2.xml",
|
||||
}
|
||||
|
||||
// selectors
|
||||
apex_contributions {
|
||||
name: "myapex_contributions",
|
||||
contents: ["%v"],
|
||||
}
|
||||
`
|
||||
testCases := []struct {
|
||||
desc string
|
||||
selectedDependencyName string
|
||||
expectedPlatformCompatConfigXml string
|
||||
}{
|
||||
{
|
||||
desc: "Source platform_compat_config is selected using apex_contributions",
|
||||
selectedDependencyName: "myconfig",
|
||||
expectedPlatformCompatConfigXml: "out/soong/.intermediates/myconfig/android_common/myconfig_meta.xml",
|
||||
},
|
||||
{
|
||||
desc: "Prebuilt platform_compat_config v1 is selected using apex_contributions",
|
||||
selectedDependencyName: "prebuilt_myconfig",
|
||||
expectedPlatformCompatConfigXml: "myconfig.xml",
|
||||
},
|
||||
{
|
||||
desc: "Prebuilt platform_compat_config v2 is selected using apex_contributions",
|
||||
selectedDependencyName: "prebuilt_myconfig.v2",
|
||||
expectedPlatformCompatConfigXml: "myconfig.v2.xml",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
ctx := android.GroupFixturePreparers(
|
||||
prepareForJavaTest,
|
||||
PrepareForTestWithPlatformCompatConfig,
|
||||
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||
variables.BuildFlags = map[string]string{
|
||||
"RELEASE_APEX_CONTRIBUTIONS_ADSERVICES": "myapex_contributions",
|
||||
}
|
||||
}),
|
||||
).RunTestWithBp(t, fmt.Sprintf(bp, tc.selectedDependencyName))
|
||||
|
||||
mergedGlobalConfig := ctx.SingletonForTests("platform_compat_config_singleton").Output("compat_config/merged_compat_config.xml")
|
||||
android.AssertIntEquals(t, "The merged compat config file should only have a single dependency", 1, len(mergedGlobalConfig.Implicits))
|
||||
android.AssertStringEquals(t, "The merged compat config file is missing the appropriate platform compat config", mergedGlobalConfig.Implicits[0].String(), tc.expectedPlatformCompatConfigXml)
|
||||
}
|
||||
}
|
||||
|
||||
func TestApiLibraryAconfigDeclarations(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(
|
||||
prepareForJavaTest,
|
||||
|
|
|
@ -20,6 +20,7 @@ import (
|
|||
|
||||
"android/soong/android"
|
||||
"github.com/google/blueprint"
|
||||
"github.com/google/blueprint/proptools"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -184,6 +185,11 @@ type prebuiltCompatConfigModule struct {
|
|||
|
||||
type prebuiltCompatConfigProperties struct {
|
||||
Metadata *string `android:"path"`
|
||||
|
||||
// Name of the source soong module that gets shadowed by this prebuilt
|
||||
// If unspecified, follows the naming convention that the source module of
|
||||
// the prebuilt is Name() without "prebuilt_" prefix
|
||||
Source_module_name *string
|
||||
}
|
||||
|
||||
func (module *prebuiltCompatConfigModule) Prebuilt() *android.Prebuilt {
|
||||
|
@ -198,6 +204,10 @@ func (module *prebuiltCompatConfigModule) compatConfigMetadata() android.Path {
|
|||
return module.metadataFile
|
||||
}
|
||||
|
||||
func (module *prebuiltCompatConfigModule) BaseModuleName() string {
|
||||
return proptools.StringDefault(module.properties.Source_module_name, module.ModuleBase.Name())
|
||||
}
|
||||
|
||||
var _ platformCompatConfigMetadataProvider = (*prebuiltCompatConfigModule)(nil)
|
||||
|
||||
func (module *prebuiltCompatConfigModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
|
|
Loading…
Reference in a new issue