Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 69ea5b82 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes I33846cdb,I1eb1f4bf into main

* changes:
  Move scopeOrderedSourceFileNames as outside var
  Sort api files by api scope in java_api_library
parents a405301f 478ca5b7
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -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)
+19 −19
Original line number Diff line number Diff line
@@ -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 := `