Search for default_team in Android.bp when other .bp files are included.

Test: m all_teams && gqui from  "flatten(out/soong/ownership/all_teams.pb, teams)" proto build/soong/android/team_proto/team.proto:AllTeams 'select teams.path, count(*) where teams.trendy_team_id == "4768044190400512" and teams.path like "%libcore%"  group by teams.path '

  Now we get the libcore entries for JavaLibrary.bp and NativeCode.bp as
  well.  Before we didn't
        ...
	| external/icu/android_icu4j/libcore_bridge/src/native/Android.bp |        1 |
	| libcore/Android.bp                                              |        3 |
	| libcore/Extras.bp                                               |        1 |
	| libcore/JavaLibrary.bp                                          |       82 |
	| libcore/NativeCode.bp                                           |       10 |
	| libcore/benchmarks/Android.bp                                   |        3 |
	...

Note: blueprint does not let include a file from a subdirectory.

Bug: b/355270459
Change-Id: I19b22e341276c724786ea96e237733eac4f19dbf
This commit is contained in:
Ronald Braunstein
2024-08-15 13:34:46 -07:00
parent 8bf4079e5f
commit 4a2f368b46
2 changed files with 84 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
package android
import (
"path"
"path/filepath"
"android/soong/android/team_proto"
@@ -153,6 +154,11 @@ func (t *allTeamsSingleton) lookupTeamForAllModules() *team_proto.AllTeams {
} else {
teamProperties, found = t.lookupDefaultTeam(m.bpFile)
}
// Deal with one blueprint file including another by looking up the default
// in the main Android.bp rather than one listed with "build = [My.bp]"
if !found {
teamProperties, found = t.lookupDefaultTeam(path.Join(path.Dir(m.bpFile), "Android.bp"))
}
trendy_team_id := ""
if found {

View File

@@ -264,6 +264,84 @@ func TestPackageLookup(t *testing.T) {
AssertDeepEquals(t, "compare maps", expectedTeams, actualTeams)
}
func TestPackageLookupForIncludedBlueprintFiles(t *testing.T) {
t.Parallel()
rootBp := `
package { default_team: "team_top"}
team {
name: "team_top",
trendy_team_id: "trendy://team_top",
}
build = ["include.bp"]
`
includeBp := `
fake {
name: "IncludedModule",
} `
ctx := GroupFixturePreparers(
prepareForTestWithTeamAndFakes,
PrepareForTestWithPackageModule,
FixtureRegisterWithContext(func(ctx RegistrationContext) {
ctx.RegisterParallelSingletonType("all_teams", AllTeamsFactory)
}),
FixtureAddTextFile("Android.bp", rootBp),
FixtureAddTextFile("include.bp", includeBp),
).RunTest(t)
var teams *team_proto.AllTeams
teams = getTeamProtoOutput(t, ctx)
// map of module name -> trendy team name.
actualTeams := make(map[string]*string)
for _, teamProto := range teams.Teams {
actualTeams[teamProto.GetTargetName()] = teamProto.TrendyTeamId
}
expectedTeams := map[string]*string{
"IncludedModule": proto.String("trendy://team_top"),
}
AssertDeepEquals(t, "compare maps", expectedTeams, actualTeams)
}
func TestPackageLookupForIncludedBlueprintFilesWithPackageInChildBlueprint(t *testing.T) {
t.Parallel()
rootBp := `
team {
name: "team_top",
trendy_team_id: "trendy://team_top",
}
build = ["include.bp"]
`
includeBp := `
package { default_team: "team_top"}
fake {
name: "IncludedModule",
} `
ctx := GroupFixturePreparers(
prepareForTestWithTeamAndFakes,
PrepareForTestWithPackageModule,
FixtureRegisterWithContext(func(ctx RegistrationContext) {
ctx.RegisterParallelSingletonType("all_teams", AllTeamsFactory)
}),
FixtureAddTextFile("Android.bp", rootBp),
FixtureAddTextFile("include.bp", includeBp),
).RunTest(t)
var teams *team_proto.AllTeams
teams = getTeamProtoOutput(t, ctx)
// map of module name -> trendy team name.
actualTeams := make(map[string]*string)
for _, teamProto := range teams.Teams {
actualTeams[teamProto.GetTargetName()] = teamProto.TrendyTeamId
}
expectedTeams := map[string]*string{
"IncludedModule": proto.String("trendy://team_top"),
}
AssertDeepEquals(t, "compare maps", expectedTeams, actualTeams)
}
type fakeForTests struct {
ModuleBase