diff options
Diffstat (limited to 'java')
| -rw-r--r-- | java/aar.go | 7 | ||||
| -rw-r--r-- | java/android_resources.go | 5 | ||||
| -rw-r--r-- | java/java_test.go | 26 | ||||
| -rw-r--r-- | java/platform_compat_config.go | 56 | ||||
| -rw-r--r-- | java/platform_compat_config_test.go | 15 | ||||
| -rw-r--r-- | java/testing.go | 11 |
6 files changed, 95 insertions, 25 deletions
diff --git a/java/aar.go b/java/aar.go index 554ea670b..67b9ef019 100644 --- a/java/aar.go +++ b/java/aar.go @@ -40,15 +40,14 @@ type AndroidLibraryDependency interface { func init() { RegisterAARBuildComponents(android.InitRegistrationContext) - - android.PostDepsMutators(func(ctx android.RegisterMutatorsContext) { - ctx.TopDown("propagate_rro_enforcement", propagateRROEnforcementMutator).Parallel() - }) } func RegisterAARBuildComponents(ctx android.RegistrationContext) { ctx.RegisterModuleType("android_library_import", AARImportFactory) ctx.RegisterModuleType("android_library", AndroidLibraryFactory) + ctx.PostDepsMutators(func(ctx android.RegisterMutatorsContext) { + ctx.TopDown("propagate_rro_enforcement", propagateRROEnforcementMutator).Parallel() + }) } // diff --git a/java/android_resources.go b/java/android_resources.go index 4d420cfed..6864ebb90 100644 --- a/java/android_resources.go +++ b/java/android_resources.go @@ -22,8 +22,11 @@ import ( ) func init() { - android.RegisterPreSingletonType("overlay", OverlaySingletonFactory) + registerOverlayBuildComponents(android.InitRegistrationContext) +} +func registerOverlayBuildComponents(ctx android.RegistrationContext) { + ctx.RegisterPreSingletonType("overlay", OverlaySingletonFactory) } var androidResourceIgnoreFilenames = []string{ diff --git a/java/java_test.go b/java/java_test.go index 99a96e121..d27a73d30 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -48,20 +48,34 @@ func tearDown() { os.RemoveAll(buildDir) } -var emptyFixtureFactory = android.NewFixtureFactory(&buildDir) +// Legacy factory to use to create fixtures for tests in this package. +// +// deprecated: See prepareForJavaTest +var javaFixtureFactory = android.NewFixtureFactory( + &buildDir, + prepareForJavaTest, +) -// Factory to use to create fixtures for tests in this package. -var javaFixtureFactory = emptyFixtureFactory.Extend( +// Legacy preparer used for running tests within the java package. +// +// This includes everything that was needed to run any test in the java package prior to the +// introduction of the test fixtures. Tests that are being converted to use fixtures directly +// rather than through the testJava...() methods should avoid using this and instead use the +// various preparers directly, using android.GroupFixturePreparers(...) to group them when +// necessary. +// +// deprecated +var prepareForJavaTest = android.GroupFixturePreparers( genrule.PrepareForTestWithGenRuleBuildComponents, // Get the CC build components but not default modules. cc.PrepareForTestWithCcBuildComponents, // Include all the default java modules. PrepareForTestWithJavaDefaultModules, + PrepareForTestWithOverlayBuildComponents, python.PrepareForTestWithPythonBuildComponents, android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) { ctx.RegisterModuleType("java_plugin", PluginFactory) - ctx.RegisterPreSingletonType("overlay", OverlaySingletonFactory) ctx.RegisterPreSingletonType("sdk_versions", sdkPreSingletonFactory) }), dexpreopt.PrepareForTestWithDexpreopt, @@ -112,10 +126,6 @@ func testContext(config android.Config) *android.TestContext { // Register module types and mutators from cc needed for JNI testing cc.RegisterRequiredBuildComponentsForTest(ctx) - ctx.PostDepsMutators(func(ctx android.RegisterMutatorsContext) { - ctx.TopDown("propagate_rro_enforcement", propagateRROEnforcementMutator).Parallel() - }) - return ctx } diff --git a/java/platform_compat_config.go b/java/platform_compat_config.go index 3c43a8e55..03e82c2a8 100644 --- a/java/platform_compat_config.go +++ b/java/platform_compat_config.go @@ -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 diff --git a/java/platform_compat_config_test.go b/java/platform_compat_config_test.go index 0c5d001ac..80d991c49 100644 --- a/java/platform_compat_config_test.go +++ b/java/platform_compat_config_test.go @@ -21,7 +21,7 @@ import ( ) func TestPlatformCompatConfig(t *testing.T) { - result := emptyFixtureFactory.RunTest(t, + result := android.GroupFixturePreparers( PrepareForTestWithPlatformCompatConfig, android.FixtureWithRootAndroidBp(` platform_compat_config { @@ -34,20 +34,11 @@ func TestPlatformCompatConfig(t *testing.T) { name: "myconfig3", } `), - ) + ).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) -} diff --git a/java/testing.go b/java/testing.go index 4b8b84924..b0290dc3d 100644 --- a/java/testing.go +++ b/java/testing.go @@ -54,6 +54,8 @@ var PrepareForTestWithJavaDefaultModules = android.GroupFixturePreparers( android.FixtureAddTextFile(defaultJavaDir+"/Android.bp", GatherRequiredDepsForTest()), ) +var PrepareForTestWithOverlayBuildComponents = android.FixtureRegisterWithContext(registerOverlayBuildComponents) + // Prepare a fixture to use all java module types, mutators and singletons fully. // // This should only be used by tests that want to run with as much of the build enabled as possible. @@ -319,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) +} |