Merge "Add platform_compat_config to sdk" am: 7ee6e8fa0f am: 8b149228f4

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1645683

Change-Id: Ie0157ea8741a955e723220155fcc571d0d067d02
This commit is contained in:
Paul Duffin
2021-03-23 12:10:19 +00:00
committed by Automerger Merge Worker
5 changed files with 137 additions and 10 deletions

View File

@@ -15,12 +15,23 @@
package java
import (
"path/filepath"
"android/soong/android"
"github.com/google/blueprint"
"fmt"
)
func init() {
registerPlatformCompatConfigBuildComponents(android.InitRegistrationContext)
android.RegisterSdkMemberType(&compatConfigMemberType{
SdkMemberTypeBase: android.SdkMemberTypeBase{
PropertyName: "compat_configs",
SupportsSdk: true,
},
})
}
func registerPlatformCompatConfigBuildComponents(ctx android.RegistrationContext) {
@@ -42,6 +53,7 @@ type platformCompatConfigProperties struct {
type platformCompatConfig struct {
android.ModuleBase
android.SdkBase
properties platformCompatConfigProperties
installDirPath android.InstallPath
@@ -113,10 +125,54 @@ func (p *platformCompatConfig) AndroidMkEntries() []android.AndroidMkEntries {
func PlatformCompatConfigFactory() android.Module {
module := &platformCompatConfig{}
module.AddProperties(&module.properties)
android.InitSdkAwareModule(module)
android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibCommon)
return module
}
type compatConfigMemberType struct {
android.SdkMemberTypeBase
}
func (b *compatConfigMemberType) AddDependencies(mctx android.BottomUpMutatorContext, dependencyTag blueprint.DependencyTag, names []string) {
mctx.AddVariationDependencies(nil, dependencyTag, names...)
}
func (b *compatConfigMemberType) IsInstance(module android.Module) bool {
_, ok := module.(*platformCompatConfig)
return ok
}
func (b *compatConfigMemberType) AddPrebuiltModule(ctx android.SdkMemberContext, member android.SdkMember) android.BpModule {
return ctx.SnapshotBuilder().AddPrebuiltModule(member, "prebuilt_platform_compat_config")
}
func (b *compatConfigMemberType) CreateVariantPropertiesStruct() android.SdkMemberProperties {
return &compatConfigSdkMemberProperties{}
}
type compatConfigSdkMemberProperties struct {
android.SdkMemberPropertiesBase
Metadata android.Path
}
func (b *compatConfigSdkMemberProperties) PopulateFromVariant(ctx android.SdkMemberContext, variant android.Module) {
module := variant.(*platformCompatConfig)
b.Metadata = module.metadataFile
}
func (b *compatConfigSdkMemberProperties) AddToPropertySet(ctx android.SdkMemberContext, propertySet android.BpPropertySet) {
builder := ctx.SnapshotBuilder()
if b.Metadata != nil {
snapshotRelativePath := filepath.Join("compat_configs", ctx.Name(), b.Metadata.Base())
builder.CopyToSnapshot(b.Metadata, snapshotRelativePath)
propertySet.AddProperty("metadata", snapshotRelativePath)
}
}
var _ android.SdkMemberType = (*compatConfigMemberType)(nil)
// A prebuilt version of the platform compat config module.
type prebuiltCompatConfigModule struct {
android.ModuleBase

View File

@@ -36,18 +36,9 @@ func TestPlatformCompatConfig(t *testing.T) {
`),
).RunTest(t)
checkMergedCompatConfigInputs(t, result, "myconfig",
CheckMergedCompatConfigInputs(t, result, "myconfig",
"out/soong/.intermediates/myconfig1/myconfig1_meta.xml",
"out/soong/.intermediates/myconfig2/myconfig2_meta.xml",
"out/soong/.intermediates/myconfig3/myconfig3_meta.xml",
)
}
// Check that the merged file create by platform_compat_config_singleton has the correct inputs.
func checkMergedCompatConfigInputs(t *testing.T, result *android.TestResult, message string, expectedPaths ...string) {
sourceGlobalCompatConfig := result.SingletonForTests("platform_compat_config_singleton")
allOutputs := sourceGlobalCompatConfig.AllOutputs()
android.AssertIntEquals(t, message+": output len", 1, len(allOutputs))
output := sourceGlobalCompatConfig.Output(allOutputs[0])
android.AssertPathsRelativeToTopEquals(t, message+": inputs", expectedPaths, output.Implicits)
}

View File

@@ -321,3 +321,12 @@ func CheckHiddenAPIRuleInputs(t *testing.T, expected string, hiddenAPIRule andro
t.Errorf("Expected hiddenapi rule inputs:\n%s\nactual inputs:\n%s", expected, actual)
}
}
// Check that the merged file create by platform_compat_config_singleton has the correct inputs.
func CheckMergedCompatConfigInputs(t *testing.T, result *android.TestResult, message string, expectedPaths ...string) {
sourceGlobalCompatConfig := result.SingletonForTests("platform_compat_config_singleton")
allOutputs := sourceGlobalCompatConfig.AllOutputs()
android.AssertIntEquals(t, message+": output len", 1, len(allOutputs))
output := sourceGlobalCompatConfig.Output(allOutputs[0])
android.AssertPathsRelativeToTopEquals(t, message+": inputs", expectedPaths, output.Implicits)
}