Loading java/java.go +24 −0 Original line number Diff line number Diff line Loading @@ -1812,6 +1812,28 @@ func (al *ApiLibrary) DepsMutator(ctx android.BottomUpMutatorContext) { } } // API signature file names sorted from // the narrowest api scope to the widest api scope var scopeOrderedSourceFileNames = allApiScopes.Strings( func(s *apiScope) string { return s.apiFilePrefix + "current.txt" }) func (al *ApiLibrary) sortApiFilesByApiScope(ctx android.ModuleContext, srcFiles android.Paths) android.Paths { sortedSrcFiles := android.Paths{} for _, scopeSourceFileName := range scopeOrderedSourceFileNames { for _, sourceFileName := range srcFiles { if sourceFileName.Base() == scopeSourceFileName { sortedSrcFiles = append(sortedSrcFiles, sourceFileName) } } } if len(srcFiles) != len(sortedSrcFiles) { ctx.ModuleErrorf("Unrecognizable source file found within %s", srcFiles) } return sortedSrcFiles } func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { rule := android.NewRuleBuilder(pctx, ctx) Loading Loading @@ -1862,6 +1884,8 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { ctx.ModuleErrorf("Error: %s has an empty api file.", ctx.ModuleName()) } srcFiles = al.sortApiFilesByApiScope(ctx, srcFiles) cmd := metalavaStubCmd(ctx, rule, srcFiles, homeDir) al.stubsFlags(ctx, cmd, stubsDir) Loading java/java_test.go +19 −19 Original line number Diff line number Diff line Loading @@ -1864,12 +1864,12 @@ func TestJavaApiLibraryAndProviderLink(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "foo1.txt", api_file: "current.txt", } ` provider_bp_b := `java_api_contribution { name: "foo2", api_file: "foo2.txt", api_file: "current.txt", } ` ctx, _ := testJavaWithFS(t, ` Loading Loading @@ -1897,11 +1897,11 @@ func TestJavaApiLibraryAndProviderLink(t *testing.T) { }{ { moduleName: "bar1", sourceTextFileDirs: []string{"a/foo1.txt"}, sourceTextFileDirs: []string{"a/current.txt"}, }, { moduleName: "bar2", sourceTextFileDirs: []string{"a/foo1.txt", "b/foo2.txt", "api1/current.txt", "api2/current.txt"}, sourceTextFileDirs: []string{"a/current.txt", "b/current.txt", "api1/current.txt", "api2/current.txt"}, }, } for _, c := range testcases { Loading @@ -1918,25 +1918,25 @@ func TestJavaApiLibraryAndDefaultsLink(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "foo1.txt", api_file: "current.txt", } ` provider_bp_b := ` java_api_contribution { name: "foo2", api_file: "foo2.txt", api_file: "current.txt", } ` provider_bp_c := ` java_api_contribution { name: "foo3", api_file: "foo3.txt", api_file: "current.txt", } ` provider_bp_d := ` java_api_contribution { name: "foo4", api_file: "foo4.txt", api_file: "current.txt", } ` ctx, _ := testJavaWithFS(t, ` Loading Loading @@ -1985,15 +1985,15 @@ func TestJavaApiLibraryAndDefaultsLink(t *testing.T) { }{ { moduleName: "bar1", sourceTextFileDirs: []string{"a/foo1.txt"}, sourceTextFileDirs: []string{"a/current.txt"}, }, { moduleName: "bar2", sourceTextFileDirs: []string{"a/foo1.txt", "b/foo2.txt"}, sourceTextFileDirs: []string{"a/current.txt", "b/current.txt"}, }, { moduleName: "bar3", sourceTextFileDirs: []string{"c/foo3.txt", "a/foo1.txt", "b/foo2.txt", "d/foo4.txt", "api1/current.txt", "api2/current.txt"}, sourceTextFileDirs: []string{"c/current.txt", "a/current.txt", "b/current.txt", "d/current.txt", "api1/current.txt", "api2/current.txt"}, }, } for _, c := range testcases { Loading @@ -2010,13 +2010,13 @@ func TestJavaApiLibraryJarGeneration(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "foo1.txt", api_file: "current.txt", } ` provider_bp_b := ` java_api_contribution { name: "foo2", api_file: "foo2.txt", api_file: "current.txt", } ` ctx, _ := testJavaWithFS(t, ` Loading Loading @@ -2063,13 +2063,13 @@ func TestJavaApiLibraryLibsLink(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "foo1.txt", api_file: "current.txt", } ` provider_bp_b := ` java_api_contribution { name: "foo2", api_file: "foo2.txt", api_file: "current.txt", } ` lib_bp_a := ` Loading Loading @@ -2138,13 +2138,13 @@ func TestJavaApiLibraryStaticLibsLink(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "foo1.txt", api_file: "current.txt", } ` provider_bp_b := ` java_api_contribution { name: "foo2", api_file: "foo2.txt", api_file: "current.txt", } ` lib_bp_a := ` Loading Loading @@ -2212,13 +2212,13 @@ func TestJavaApiLibraryFullApiSurfaceStub(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "foo1.txt", api_file: "current.txt", } ` provider_bp_b := ` java_api_contribution { name: "foo2", api_file: "foo2.txt", api_file: "current.txt", } ` lib_bp_a := ` Loading Loading
java/java.go +24 −0 Original line number Diff line number Diff line Loading @@ -1812,6 +1812,28 @@ func (al *ApiLibrary) DepsMutator(ctx android.BottomUpMutatorContext) { } } // API signature file names sorted from // the narrowest api scope to the widest api scope var scopeOrderedSourceFileNames = allApiScopes.Strings( func(s *apiScope) string { return s.apiFilePrefix + "current.txt" }) func (al *ApiLibrary) sortApiFilesByApiScope(ctx android.ModuleContext, srcFiles android.Paths) android.Paths { sortedSrcFiles := android.Paths{} for _, scopeSourceFileName := range scopeOrderedSourceFileNames { for _, sourceFileName := range srcFiles { if sourceFileName.Base() == scopeSourceFileName { sortedSrcFiles = append(sortedSrcFiles, sourceFileName) } } } if len(srcFiles) != len(sortedSrcFiles) { ctx.ModuleErrorf("Unrecognizable source file found within %s", srcFiles) } return sortedSrcFiles } func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { rule := android.NewRuleBuilder(pctx, ctx) Loading Loading @@ -1862,6 +1884,8 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { ctx.ModuleErrorf("Error: %s has an empty api file.", ctx.ModuleName()) } srcFiles = al.sortApiFilesByApiScope(ctx, srcFiles) cmd := metalavaStubCmd(ctx, rule, srcFiles, homeDir) al.stubsFlags(ctx, cmd, stubsDir) Loading
java/java_test.go +19 −19 Original line number Diff line number Diff line Loading @@ -1864,12 +1864,12 @@ func TestJavaApiLibraryAndProviderLink(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "foo1.txt", api_file: "current.txt", } ` provider_bp_b := `java_api_contribution { name: "foo2", api_file: "foo2.txt", api_file: "current.txt", } ` ctx, _ := testJavaWithFS(t, ` Loading Loading @@ -1897,11 +1897,11 @@ func TestJavaApiLibraryAndProviderLink(t *testing.T) { }{ { moduleName: "bar1", sourceTextFileDirs: []string{"a/foo1.txt"}, sourceTextFileDirs: []string{"a/current.txt"}, }, { moduleName: "bar2", sourceTextFileDirs: []string{"a/foo1.txt", "b/foo2.txt", "api1/current.txt", "api2/current.txt"}, sourceTextFileDirs: []string{"a/current.txt", "b/current.txt", "api1/current.txt", "api2/current.txt"}, }, } for _, c := range testcases { Loading @@ -1918,25 +1918,25 @@ func TestJavaApiLibraryAndDefaultsLink(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "foo1.txt", api_file: "current.txt", } ` provider_bp_b := ` java_api_contribution { name: "foo2", api_file: "foo2.txt", api_file: "current.txt", } ` provider_bp_c := ` java_api_contribution { name: "foo3", api_file: "foo3.txt", api_file: "current.txt", } ` provider_bp_d := ` java_api_contribution { name: "foo4", api_file: "foo4.txt", api_file: "current.txt", } ` ctx, _ := testJavaWithFS(t, ` Loading Loading @@ -1985,15 +1985,15 @@ func TestJavaApiLibraryAndDefaultsLink(t *testing.T) { }{ { moduleName: "bar1", sourceTextFileDirs: []string{"a/foo1.txt"}, sourceTextFileDirs: []string{"a/current.txt"}, }, { moduleName: "bar2", sourceTextFileDirs: []string{"a/foo1.txt", "b/foo2.txt"}, sourceTextFileDirs: []string{"a/current.txt", "b/current.txt"}, }, { moduleName: "bar3", sourceTextFileDirs: []string{"c/foo3.txt", "a/foo1.txt", "b/foo2.txt", "d/foo4.txt", "api1/current.txt", "api2/current.txt"}, sourceTextFileDirs: []string{"c/current.txt", "a/current.txt", "b/current.txt", "d/current.txt", "api1/current.txt", "api2/current.txt"}, }, } for _, c := range testcases { Loading @@ -2010,13 +2010,13 @@ func TestJavaApiLibraryJarGeneration(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "foo1.txt", api_file: "current.txt", } ` provider_bp_b := ` java_api_contribution { name: "foo2", api_file: "foo2.txt", api_file: "current.txt", } ` ctx, _ := testJavaWithFS(t, ` Loading Loading @@ -2063,13 +2063,13 @@ func TestJavaApiLibraryLibsLink(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "foo1.txt", api_file: "current.txt", } ` provider_bp_b := ` java_api_contribution { name: "foo2", api_file: "foo2.txt", api_file: "current.txt", } ` lib_bp_a := ` Loading Loading @@ -2138,13 +2138,13 @@ func TestJavaApiLibraryStaticLibsLink(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "foo1.txt", api_file: "current.txt", } ` provider_bp_b := ` java_api_contribution { name: "foo2", api_file: "foo2.txt", api_file: "current.txt", } ` lib_bp_a := ` Loading Loading @@ -2212,13 +2212,13 @@ func TestJavaApiLibraryFullApiSurfaceStub(t *testing.T) { provider_bp_a := ` java_api_contribution { name: "foo1", api_file: "foo1.txt", api_file: "current.txt", } ` provider_bp_b := ` java_api_contribution { name: "foo2", api_file: "foo2.txt", api_file: "current.txt", } ` lib_bp_a := ` Loading