Loading android/module.go +8 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,10 @@ type Module interface { VintfFragmentModuleNames(ctx ConfigurableEvaluatorContext) []string ConfigurableEvaluator(ctx ConfigurableEvaluatorContext) proptools.ConfigurableEvaluator // The usage of this method is experimental and should not be used outside of fsgen package. // This will be removed once product packaging migration to Soong is complete. DecodeMultilib(ctx ConfigContext) (string, string) } // Qualified id for a module Loading Loading @@ -2282,6 +2286,10 @@ func (m *ModuleBase) IsNativeBridgeSupported() bool { return proptools.Bool(m.commonProperties.Native_bridge_supported) } func (m *ModuleBase) DecodeMultilib(ctx ConfigContext) (string, string) { return decodeMultilib(ctx, m) } type ConfigContext interface { Config() Config } Loading android/module_proxy.go +4 −0 Original line number Diff line number Diff line Loading @@ -201,3 +201,7 @@ func (m ModuleProxy) VintfFragmentModuleNames(ctx ConfigurableEvaluatorContext) func (m ModuleProxy) ConfigurableEvaluator(ctx ConfigurableEvaluatorContext) proptools.ConfigurableEvaluator { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) DecodeMultilib(ctx ConfigContext) (string, string) { panic("method is not implemented on ModuleProxy") } android/neverallow.go +9 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ func init() { AddNeverAllowRules(createProhibitHeaderOnlyRule()) AddNeverAllowRules(createLimitNdkExportRule()...) AddNeverAllowRules(createLimitDirgroupRule()...) AddNeverAllowRules(createFilesystemIsAutoGeneratedRule()) } // Add a NeverAllow rule to the set of rules to apply. Loading Loading @@ -293,6 +294,14 @@ func createLimitDirgroupRule() []Rule { } } func createFilesystemIsAutoGeneratedRule() Rule { return NeverAllow(). NotIn("build/soong/fsgen"). ModuleType("filesystem", "android_system_image"). WithMatcher("is_auto_generated", isSetMatcherInstance). Because("is_auto_generated property is only allowed for filesystem modules in build/soong/fsgen directory") } func neverallowMutator(ctx BottomUpMutatorContext) { m, ok := ctx.Module().(Module) if !ok { Loading android/neverallow_test.go +16 −0 Original line number Diff line number Diff line Loading @@ -359,6 +359,21 @@ var neverallowTests = []struct { `headers_only can only be used for generating framework-minus-apex headers for non-updatable modules`, }, }, // Test for the rule restricting use of is_auto_generated { name: `"is_auto_generated" outside allowed directory`, fs: map[string][]byte{ "a/b/Android.bp": []byte(` filesystem { name: "baaz", is_auto_generated: true, } `), }, expectedErrors: []string{ `is_auto_generated property is only allowed for filesystem modules in build/soong/fsgen directory`, }, }, } var prepareForNeverAllowTest = GroupFixturePreparers( Loading @@ -367,6 +382,7 @@ var prepareForNeverAllowTest = GroupFixturePreparers( ctx.RegisterModuleType("java_library", newMockJavaLibraryModule) ctx.RegisterModuleType("java_library_host", newMockJavaLibraryModule) ctx.RegisterModuleType("java_device_for_host", newMockJavaLibraryModule) ctx.RegisterModuleType("filesystem", newMockFilesystemModule) }), ) Loading android/visibility_test.go +3 −2 Original line number Diff line number Diff line Loading @@ -2100,6 +2100,7 @@ func (p *mockLibraryModule) GenerateAndroidBuildActions(ModuleContext) { type mockFilesystemModuleProperties struct { Partition_type *string Deps []string Is_auto_generated *bool } type mockFilesystemModule struct { Loading Loading
android/module.go +8 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,10 @@ type Module interface { VintfFragmentModuleNames(ctx ConfigurableEvaluatorContext) []string ConfigurableEvaluator(ctx ConfigurableEvaluatorContext) proptools.ConfigurableEvaluator // The usage of this method is experimental and should not be used outside of fsgen package. // This will be removed once product packaging migration to Soong is complete. DecodeMultilib(ctx ConfigContext) (string, string) } // Qualified id for a module Loading Loading @@ -2282,6 +2286,10 @@ func (m *ModuleBase) IsNativeBridgeSupported() bool { return proptools.Bool(m.commonProperties.Native_bridge_supported) } func (m *ModuleBase) DecodeMultilib(ctx ConfigContext) (string, string) { return decodeMultilib(ctx, m) } type ConfigContext interface { Config() Config } Loading
android/module_proxy.go +4 −0 Original line number Diff line number Diff line Loading @@ -201,3 +201,7 @@ func (m ModuleProxy) VintfFragmentModuleNames(ctx ConfigurableEvaluatorContext) func (m ModuleProxy) ConfigurableEvaluator(ctx ConfigurableEvaluatorContext) proptools.ConfigurableEvaluator { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) DecodeMultilib(ctx ConfigContext) (string, string) { panic("method is not implemented on ModuleProxy") }
android/neverallow.go +9 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ func init() { AddNeverAllowRules(createProhibitHeaderOnlyRule()) AddNeverAllowRules(createLimitNdkExportRule()...) AddNeverAllowRules(createLimitDirgroupRule()...) AddNeverAllowRules(createFilesystemIsAutoGeneratedRule()) } // Add a NeverAllow rule to the set of rules to apply. Loading Loading @@ -293,6 +294,14 @@ func createLimitDirgroupRule() []Rule { } } func createFilesystemIsAutoGeneratedRule() Rule { return NeverAllow(). NotIn("build/soong/fsgen"). ModuleType("filesystem", "android_system_image"). WithMatcher("is_auto_generated", isSetMatcherInstance). Because("is_auto_generated property is only allowed for filesystem modules in build/soong/fsgen directory") } func neverallowMutator(ctx BottomUpMutatorContext) { m, ok := ctx.Module().(Module) if !ok { Loading
android/neverallow_test.go +16 −0 Original line number Diff line number Diff line Loading @@ -359,6 +359,21 @@ var neverallowTests = []struct { `headers_only can only be used for generating framework-minus-apex headers for non-updatable modules`, }, }, // Test for the rule restricting use of is_auto_generated { name: `"is_auto_generated" outside allowed directory`, fs: map[string][]byte{ "a/b/Android.bp": []byte(` filesystem { name: "baaz", is_auto_generated: true, } `), }, expectedErrors: []string{ `is_auto_generated property is only allowed for filesystem modules in build/soong/fsgen directory`, }, }, } var prepareForNeverAllowTest = GroupFixturePreparers( Loading @@ -367,6 +382,7 @@ var prepareForNeverAllowTest = GroupFixturePreparers( ctx.RegisterModuleType("java_library", newMockJavaLibraryModule) ctx.RegisterModuleType("java_library_host", newMockJavaLibraryModule) ctx.RegisterModuleType("java_device_for_host", newMockJavaLibraryModule) ctx.RegisterModuleType("filesystem", newMockFilesystemModule) }), ) Loading
android/visibility_test.go +3 −2 Original line number Diff line number Diff line Loading @@ -2100,6 +2100,7 @@ func (p *mockLibraryModule) GenerateAndroidBuildActions(ModuleContext) { type mockFilesystemModuleProperties struct { Partition_type *string Deps []string Is_auto_generated *bool } type mockFilesystemModule struct { Loading