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
|
srcJarArgs []string
|
||||||
srcJarDeps android.Paths
|
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
|
// jar file containing implementation classes and resources including static library
|
||||||
// dependencies
|
// dependencies
|
||||||
implementationAndResourcesJar android.Path
|
implementationAndResourcesJar android.Path
|
||||||
|
@ -1694,6 +1697,8 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
||||||
j.linter.lint(ctx)
|
j.linter.lint(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
j.collectTransitiveSrcFiles(ctx, srcFiles)
|
||||||
|
|
||||||
ctx.CheckbuildFile(outputFile)
|
ctx.CheckbuildFile(outputFile)
|
||||||
|
|
||||||
j.collectTransitiveAconfigFiles(ctx)
|
j.collectTransitiveAconfigFiles(ctx)
|
||||||
|
@ -1708,6 +1713,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
||||||
AidlIncludeDirs: j.exportAidlIncludeDirs,
|
AidlIncludeDirs: j.exportAidlIncludeDirs,
|
||||||
SrcJarArgs: j.srcJarArgs,
|
SrcJarArgs: j.srcJarArgs,
|
||||||
SrcJarDeps: j.srcJarDeps,
|
SrcJarDeps: j.srcJarDeps,
|
||||||
|
TransitiveSrcFiles: j.transitiveSrcFiles,
|
||||||
ExportedPlugins: j.exportedPluginJars,
|
ExportedPlugins: j.exportedPluginJars,
|
||||||
ExportedPluginClasses: j.exportedPluginClasses,
|
ExportedPluginClasses: j.exportedPluginClasses,
|
||||||
ExportedPluginDisableTurbine: j.exportedDisableTurbine,
|
ExportedPluginDisableTurbine: j.exportedDisableTurbine,
|
||||||
|
@ -2032,6 +2038,21 @@ func (j *Module) JacocoReportClassesFile() android.Path {
|
||||||
return j.jacocoReportClassesFile
|
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 {
|
func (j *Module) IsInstallable() bool {
|
||||||
return Bool(j.properties.Installable)
|
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 is a list of paths to depend on when packaging the sources of this module.
|
||||||
SrcJarDeps android.Paths
|
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
|
// ExportedPlugins is a list of paths that should be used as annotation processors for any
|
||||||
// module that depends on this module.
|
// module that depends on this module.
|
||||||
ExportedPlugins android.Paths
|
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")
|
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) {
|
func TestTradefedOptions(t *testing.T) {
|
||||||
result := PrepareForTestWithJavaBuildComponents.RunTestWithBp(t, `
|
result := PrepareForTestWithJavaBuildComponents.RunTestWithBp(t, `
|
||||||
java_test_host {
|
java_test_host {
|
||||||
|
|
Loading…
Reference in a new issue