Merge "Collect transitive source files for java modules" into main
This commit is contained in:
commit
9231132099
3 changed files with 46 additions and 0 deletions
21
java/base.go
21
java/base.go
|
@ -432,6 +432,9 @@ type Module struct {
|
|||
srcJarArgs []string
|
||||
srcJarDeps android.Paths
|
||||
|
||||
// the source files of this module and all its static dependencies
|
||||
transitiveSrcFiles *android.DepSet[android.Path]
|
||||
|
||||
// jar file containing implementation classes and resources including static library
|
||||
// dependencies
|
||||
implementationAndResourcesJar android.Path
|
||||
|
@ -1694,6 +1697,8 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
|||
j.linter.lint(ctx)
|
||||
}
|
||||
|
||||
j.collectTransitiveSrcFiles(ctx, srcFiles)
|
||||
|
||||
ctx.CheckbuildFile(outputFile)
|
||||
|
||||
j.collectTransitiveAconfigFiles(ctx)
|
||||
|
@ -1708,6 +1713,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
|||
AidlIncludeDirs: j.exportAidlIncludeDirs,
|
||||
SrcJarArgs: j.srcJarArgs,
|
||||
SrcJarDeps: j.srcJarDeps,
|
||||
TransitiveSrcFiles: j.transitiveSrcFiles,
|
||||
ExportedPlugins: j.exportedPluginJars,
|
||||
ExportedPluginClasses: j.exportedPluginClasses,
|
||||
ExportedPluginDisableTurbine: j.exportedDisableTurbine,
|
||||
|
@ -2032,6 +2038,21 @@ func (j *Module) JacocoReportClassesFile() android.Path {
|
|||
return j.jacocoReportClassesFile
|
||||
}
|
||||
|
||||
func (j *Module) collectTransitiveSrcFiles(ctx android.ModuleContext, mine android.Paths) {
|
||||
var fromDeps []*android.DepSet[android.Path]
|
||||
ctx.VisitDirectDeps(func(module android.Module) {
|
||||
tag := ctx.OtherModuleDependencyTag(module)
|
||||
if tag == staticLibTag {
|
||||
depInfo := ctx.OtherModuleProvider(module, JavaInfoProvider).(JavaInfo)
|
||||
if depInfo.TransitiveSrcFiles != nil {
|
||||
fromDeps = append(fromDeps, depInfo.TransitiveSrcFiles)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
j.transitiveSrcFiles = android.NewDepSet(android.POSTORDER, mine, fromDeps)
|
||||
}
|
||||
|
||||
func (j *Module) IsInstallable() bool {
|
||||
return Bool(j.properties.Installable)
|
||||
}
|
||||
|
|
|
@ -278,6 +278,9 @@ type JavaInfo struct {
|
|||
// SrcJarDeps is a list of paths to depend on when packaging the sources of this module.
|
||||
SrcJarDeps android.Paths
|
||||
|
||||
// The source files of this module and all its transitive static dependencies.
|
||||
TransitiveSrcFiles *android.DepSet[android.Path]
|
||||
|
||||
// ExportedPlugins is a list of paths that should be used as annotation processors for any
|
||||
// module that depends on this module.
|
||||
ExportedPlugins android.Paths
|
||||
|
|
|
@ -2263,6 +2263,28 @@ func TestJavaApiLibraryFullApiSurfaceStub(t *testing.T) {
|
|||
android.AssertStringDoesContain(t, "Command expected to contain full_api_surface_stub output jar", manifestCommand, "lib1.jar")
|
||||
}
|
||||
|
||||
func TestTransitiveSrcFiles(t *testing.T) {
|
||||
ctx, _ := testJava(t, `
|
||||
java_library {
|
||||
name: "a",
|
||||
srcs: ["a.java"],
|
||||
}
|
||||
java_library {
|
||||
name: "b",
|
||||
srcs: ["b.java"],
|
||||
}
|
||||
java_library {
|
||||
name: "c",
|
||||
srcs: ["c.java"],
|
||||
libs: ["a"],
|
||||
static_libs: ["b"],
|
||||
}
|
||||
`)
|
||||
c := ctx.ModuleForTests("c", "android_common").Module()
|
||||
transitiveSrcFiles := android.Paths(ctx.ModuleProvider(c, JavaInfoProvider).(JavaInfo).TransitiveSrcFiles.ToList())
|
||||
android.AssertArrayString(t, "unexpected jar deps", []string{"b.java", "c.java"}, transitiveSrcFiles.Strings())
|
||||
}
|
||||
|
||||
func TestTradefedOptions(t *testing.T) {
|
||||
result := PrepareForTestWithJavaBuildComponents.RunTestWithBp(t, `
|
||||
java_test_host {
|
||||
|
|
Loading…
Reference in a new issue