Loading java/systemserver_classpath_fragment.go +34 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package java import ( "android/soong/android" "android/soong/dexpreopt" "github.com/google/blueprint" ) func init() { Loading Loading @@ -70,16 +71,30 @@ type systemServerClasspathModule struct { android.ModuleBase ClasspathFragmentBase properties systemServerClasspathFragmentProperties } type systemServerClasspathFragmentProperties struct { // The contents of this systemserverclasspath_fragment, could be either java_library, or java_sdk_library. // // The order of this list matters as it is the order that is used in the SYSTEMSERVERCLASSPATH. Contents []string } func systemServerClasspathFactory() android.Module { m := &systemServerClasspathModule{} m.AddProperties(&m.properties) initClasspathFragment(m, SYSTEMSERVERCLASSPATH) android.InitAndroidArchModule(m, android.DeviceSupported, android.MultilibCommon) return m } func (s *systemServerClasspathModule) GenerateAndroidBuildActions(ctx android.ModuleContext) { if len(s.properties.Contents) == 0 { ctx.PropertyErrorf("contents", "empty contents are not allowed") } s.classpathFragmentBase().generateClasspathProtoBuildActions(ctx, configuredJarListToClasspathJars(ctx, s.ClasspathFragmentToConfiguredJarList(ctx))) } Loading @@ -87,3 +102,22 @@ func (s *systemServerClasspathModule) ClasspathFragmentToConfiguredJarList(ctx a // TODO(satayev): populate with actual content return android.EmptyConfiguredJarList() } type systemServerClasspathFragmentContentDependencyTag struct { blueprint.BaseDependencyTag } // The tag used for the dependency between the systemserverclasspath_fragment module and its contents. var systemServerClasspathFragmentContentDepTag = systemServerClasspathFragmentContentDependencyTag{} func IsSystemServerClasspathFragmentContentDepTag(tag blueprint.DependencyTag) bool { return tag == systemServerClasspathFragmentContentDepTag } func (s *systemServerClasspathModule) ComponentDepsMutator(ctx android.BottomUpMutatorContext) { module := ctx.Module() for _, name := range s.properties.Contents { ctx.AddDependency(module, systemServerClasspathFragmentContentDepTag, name) } } java/systemserver_classpath_fragment_test.go +18 −7 Original line number Diff line number Diff line Loading @@ -20,13 +20,13 @@ import ( "android/soong/android" ) var prepareForTestWithSystemserverClasspath = android.GroupFixturePreparers( var prepareForTestWithSystemServerClasspath = android.GroupFixturePreparers( PrepareForTestWithJavaDefaultModules, ) func TestSystemserverClasspathVariant(t *testing.T) { func TestPlatformSystemserverClasspathVariant(t *testing.T) { result := android.GroupFixturePreparers( prepareForTestWithSystemserverClasspath, prepareForTestWithSystemServerClasspath, android.FixtureWithRootAndroidBp(` platform_systemserverclasspath { name: "platform-systemserverclasspath", Loading @@ -38,9 +38,9 @@ func TestSystemserverClasspathVariant(t *testing.T) { android.AssertIntEquals(t, "expect 1 variant", 1, len(variants)) } func TestSystemserverClasspath_ClasspathFragmentPaths(t *testing.T) { func TestPlatformSystemserverClasspath_ClasspathFragmentPaths(t *testing.T) { result := android.GroupFixturePreparers( prepareForTestWithSystemserverClasspath, prepareForTestWithSystemServerClasspath, android.FixtureWithRootAndroidBp(` platform_systemserverclasspath { name: "platform-systemserverclasspath", Loading @@ -53,9 +53,9 @@ func TestSystemserverClasspath_ClasspathFragmentPaths(t *testing.T) { android.AssertPathRelativeToTopEquals(t, "install filepath", "out/soong/target/product/test_device/system/etc/classpaths", p.ClasspathFragmentBase.installDirPath) } func TestSystemserverClasspathModule_AndroidMkEntries(t *testing.T) { func TestPlatformSystemserverClasspathModule_AndroidMkEntries(t *testing.T) { preparer := android.GroupFixturePreparers( prepareForTestWithSystemserverClasspath, prepareForTestWithSystemServerClasspath, android.FixtureWithRootAndroidBp(` platform_systemserverclasspath { name: "platform-systemserverclasspath", Loading Loading @@ -95,3 +95,14 @@ func TestSystemserverClasspathModule_AndroidMkEntries(t *testing.T) { } }) } func TestSystemserverclasspathFragmentWithoutContents(t *testing.T) { prepareForTestWithSystemServerClasspath. ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern( `\Qempty contents are not allowed\E`)). RunTestWithBp(t, ` systemserverclasspath_fragment { name: "systemserverclasspath-fragment", } `) } Loading
java/systemserver_classpath_fragment.go +34 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package java import ( "android/soong/android" "android/soong/dexpreopt" "github.com/google/blueprint" ) func init() { Loading Loading @@ -70,16 +71,30 @@ type systemServerClasspathModule struct { android.ModuleBase ClasspathFragmentBase properties systemServerClasspathFragmentProperties } type systemServerClasspathFragmentProperties struct { // The contents of this systemserverclasspath_fragment, could be either java_library, or java_sdk_library. // // The order of this list matters as it is the order that is used in the SYSTEMSERVERCLASSPATH. Contents []string } func systemServerClasspathFactory() android.Module { m := &systemServerClasspathModule{} m.AddProperties(&m.properties) initClasspathFragment(m, SYSTEMSERVERCLASSPATH) android.InitAndroidArchModule(m, android.DeviceSupported, android.MultilibCommon) return m } func (s *systemServerClasspathModule) GenerateAndroidBuildActions(ctx android.ModuleContext) { if len(s.properties.Contents) == 0 { ctx.PropertyErrorf("contents", "empty contents are not allowed") } s.classpathFragmentBase().generateClasspathProtoBuildActions(ctx, configuredJarListToClasspathJars(ctx, s.ClasspathFragmentToConfiguredJarList(ctx))) } Loading @@ -87,3 +102,22 @@ func (s *systemServerClasspathModule) ClasspathFragmentToConfiguredJarList(ctx a // TODO(satayev): populate with actual content return android.EmptyConfiguredJarList() } type systemServerClasspathFragmentContentDependencyTag struct { blueprint.BaseDependencyTag } // The tag used for the dependency between the systemserverclasspath_fragment module and its contents. var systemServerClasspathFragmentContentDepTag = systemServerClasspathFragmentContentDependencyTag{} func IsSystemServerClasspathFragmentContentDepTag(tag blueprint.DependencyTag) bool { return tag == systemServerClasspathFragmentContentDepTag } func (s *systemServerClasspathModule) ComponentDepsMutator(ctx android.BottomUpMutatorContext) { module := ctx.Module() for _, name := range s.properties.Contents { ctx.AddDependency(module, systemServerClasspathFragmentContentDepTag, name) } }
java/systemserver_classpath_fragment_test.go +18 −7 Original line number Diff line number Diff line Loading @@ -20,13 +20,13 @@ import ( "android/soong/android" ) var prepareForTestWithSystemserverClasspath = android.GroupFixturePreparers( var prepareForTestWithSystemServerClasspath = android.GroupFixturePreparers( PrepareForTestWithJavaDefaultModules, ) func TestSystemserverClasspathVariant(t *testing.T) { func TestPlatformSystemserverClasspathVariant(t *testing.T) { result := android.GroupFixturePreparers( prepareForTestWithSystemserverClasspath, prepareForTestWithSystemServerClasspath, android.FixtureWithRootAndroidBp(` platform_systemserverclasspath { name: "platform-systemserverclasspath", Loading @@ -38,9 +38,9 @@ func TestSystemserverClasspathVariant(t *testing.T) { android.AssertIntEquals(t, "expect 1 variant", 1, len(variants)) } func TestSystemserverClasspath_ClasspathFragmentPaths(t *testing.T) { func TestPlatformSystemserverClasspath_ClasspathFragmentPaths(t *testing.T) { result := android.GroupFixturePreparers( prepareForTestWithSystemserverClasspath, prepareForTestWithSystemServerClasspath, android.FixtureWithRootAndroidBp(` platform_systemserverclasspath { name: "platform-systemserverclasspath", Loading @@ -53,9 +53,9 @@ func TestSystemserverClasspath_ClasspathFragmentPaths(t *testing.T) { android.AssertPathRelativeToTopEquals(t, "install filepath", "out/soong/target/product/test_device/system/etc/classpaths", p.ClasspathFragmentBase.installDirPath) } func TestSystemserverClasspathModule_AndroidMkEntries(t *testing.T) { func TestPlatformSystemserverClasspathModule_AndroidMkEntries(t *testing.T) { preparer := android.GroupFixturePreparers( prepareForTestWithSystemserverClasspath, prepareForTestWithSystemServerClasspath, android.FixtureWithRootAndroidBp(` platform_systemserverclasspath { name: "platform-systemserverclasspath", Loading Loading @@ -95,3 +95,14 @@ func TestSystemserverClasspathModule_AndroidMkEntries(t *testing.T) { } }) } func TestSystemserverclasspathFragmentWithoutContents(t *testing.T) { prepareForTestWithSystemServerClasspath. ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern( `\Qempty contents are not allowed\E`)). RunTestWithBp(t, ` systemserverclasspath_fragment { name: "systemserverclasspath-fragment", } `) }