Merge changes I33846cdb,I1eb1f4bf into main

* changes:
  Move scopeOrderedSourceFileNames as outside var
  Sort api files by api scope in java_api_library
This commit is contained in:
Treehugger Robot
2023-08-12 04:42:48 +00:00
committed by Gerrit Code Review
2 changed files with 43 additions and 19 deletions

View File

@@ -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)
@@ -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)

View File

@@ -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, `
@@ -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 {
@@ -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, `
@@ -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 {
@@ -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, `
@@ -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 := `
@@ -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 := `
@@ -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 := `