Merge "Filter duplicate modules in platform_compat_config_singleton"

This commit is contained in:
Paul Duffin
2021-03-25 18:09:38 +00:00
committed by Gerrit Code Review
2 changed files with 28 additions and 4 deletions

View File

@@ -221,12 +221,40 @@ type platformCompatConfigSingleton struct {
metadata android.Path
}
// isModulePreferredByCompatConfig checks to see whether the module is preferred for use by
// platform compat config.
func isModulePreferredByCompatConfig(module android.Module) bool {
// A versioned prebuilt_platform_compat_config, i.e. foo-platform-compat-config@current should be
// ignored.
if s, ok := module.(android.SdkAware); ok {
if !s.ContainingSdk().Unversioned() {
return false
}
}
// A prebuilt module should only be used when it is preferred.
if pi, ok := module.(android.PrebuiltInterface); ok {
if p := pi.Prebuilt(); p != nil {
return p.UsePrebuilt()
}
}
// Otherwise, a module should only be used if it has not been replaced by a prebuilt.
return !module.IsReplacedByPrebuilt()
}
func (p *platformCompatConfigSingleton) GenerateBuildActions(ctx android.SingletonContext) {
var compatConfigMetadata android.Paths
ctx.VisitAllModules(func(module android.Module) {
if !module.Enabled() {
return
}
if c, ok := module.(platformCompatConfigMetadataProvider); ok {
if !isModulePreferredByCompatConfig(module) {
return
}
metadata := c.compatConfigMetadata()
compatConfigMetadata = append(compatConfigMetadata, metadata)
}

View File

@@ -77,8 +77,6 @@ prebuilt_platform_compat_config {
// Make sure that the snapshot metadata is collated by the platform compat config singleton.
java.CheckMergedCompatConfigInputs(t, result, "snapshot module",
"out/soong/.intermediates/myconfig/android_common/myconfig_meta.xml",
// TODO(b/182402754): Remove this as only the config file from the preferred module should be used.
"snapshot/compat_configs/myconfig/myconfig_meta.xml",
)
}),
@@ -86,8 +84,6 @@ prebuilt_platform_compat_config {
func(t *testing.T, result *android.TestResult) {
// Make sure that the snapshot metadata is collated by the platform compat config singleton.
java.CheckMergedCompatConfigInputs(t, result, "snapshot module",
"out/soong/.intermediates/myconfig/android_common/myconfig_meta.xml",
// TODO(b/182402754): Remove this as only the config file from the preferred module should be used.
"snapshot/compat_configs/myconfig/myconfig_meta.xml",
)
}),