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:
@@ -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
|
||||
|
@@ -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)
|
||||
}
|
||||
|
@@ -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)
|
||||
}
|
||||
|
Reference in New Issue
Block a user