From 9ffaf28f5f733090c2ab64f448683f83d1fb6ade Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Mon, 12 Aug 2024 13:50:09 -0700 Subject: [PATCH] Rename collectTransitiveHeaderJars and friends to mention R8 collectTransitiveHeaderJarsForR8 visits direct dependencies and collects all transitive libs and static_libs header jars. The semantics of the collected jars are odd (it collects combined jars that contain the static libs, but also the static libs, and it collects transitive libs dependencies of static_libs), so these are only used to expand the --library arguments to R8. Rename the method and all the fields it uses with a "ForR8" suffix to avoid confusion when more transitive header jar collection is added to support transitive classpaths. Bug: 308016794 Test: all soong tests pass Change-Id: I291a86fbbc2e2f088598fb309d1b992080d60941 --- java/aar.go | 18 +++++++++--------- java/base.go | 42 +++++++++++++++++++----------------------- java/dex.go | 10 +++++----- java/java.go | 22 +++++++++++----------- 4 files changed, 44 insertions(+), 48 deletions(-) diff --git a/java/aar.go b/java/aar.go index db2ea66b4..42866f8b6 100644 --- a/java/aar.go +++ b/java/aar.go @@ -993,7 +993,7 @@ type AARImport struct { // Functionality common to Module and Import. embeddableInModuleAndImport - providesTransitiveHeaderJars + providesTransitiveHeaderJarsForR8 properties AARImportProperties @@ -1290,7 +1290,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { android.WriteFileRule(ctx, transitiveAaptResourcePackagesFile, strings.Join(transitiveAaptResourcePackages, "\n")) a.transitiveAaptResourcePackagesFile = transitiveAaptResourcePackagesFile - a.collectTransitiveHeaderJars(ctx) + a.collectTransitiveHeaderJarsForR8(ctx) a.classLoaderContexts = a.usesLibrary.classLoaderContextForUsesLibDeps(ctx) @@ -1358,13 +1358,13 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { ctx.CheckbuildFile(a.implementationJarFile) android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{ - HeaderJars: android.PathsIfNonNil(a.headerJarFile), - ResourceJars: android.PathsIfNonNil(resourceJarFile), - TransitiveLibsHeaderJars: a.transitiveLibsHeaderJars, - TransitiveStaticLibsHeaderJars: a.transitiveStaticLibsHeaderJars, - ImplementationAndResourcesJars: android.PathsIfNonNil(a.implementationAndResourcesJarFile), - ImplementationJars: android.PathsIfNonNil(a.implementationJarFile), - StubsLinkType: Implementation, + HeaderJars: android.PathsIfNonNil(a.headerJarFile), + ResourceJars: android.PathsIfNonNil(resourceJarFile), + TransitiveLibsHeaderJarsForR8: a.transitiveLibsHeaderJarsForR8, + TransitiveStaticLibsHeaderJarsForR8: a.transitiveStaticLibsHeaderJarsForR8, + ImplementationAndResourcesJars: android.PathsIfNonNil(a.implementationAndResourcesJarFile), + ImplementationJars: android.PathsIfNonNil(a.implementationJarFile), + StubsLinkType: Implementation, // TransitiveAconfigFiles: // TODO(b/289117800): LOCAL_ACONFIG_FILES for prebuilts }) diff --git a/java/base.go b/java/base.go index cbe6a43a8..652cc006b 100644 --- a/java/base.go +++ b/java/base.go @@ -1276,8 +1276,8 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{ HeaderJars: android.PathsIfNonNil(j.headerJarFile), - TransitiveLibsHeaderJars: j.transitiveLibsHeaderJars, - TransitiveStaticLibsHeaderJars: j.transitiveStaticLibsHeaderJars, + TransitiveLibsHeaderJarsForR8: j.transitiveLibsHeaderJarsForR8, + TransitiveStaticLibsHeaderJarsForR8: j.transitiveStaticLibsHeaderJarsForR8, AidlIncludeDirs: j.exportAidlIncludeDirs, ExportedPlugins: j.exportedPluginJars, ExportedPluginClasses: j.exportedPluginClasses, @@ -1793,8 +1793,8 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{ HeaderJars: android.PathsIfNonNil(j.headerJarFile), RepackagedHeaderJars: android.PathsIfNonNil(j.repackagedHeaderJarFile), - TransitiveLibsHeaderJars: j.transitiveLibsHeaderJars, - TransitiveStaticLibsHeaderJars: j.transitiveStaticLibsHeaderJars, + TransitiveLibsHeaderJarsForR8: j.transitiveLibsHeaderJarsForR8, + TransitiveStaticLibsHeaderJarsForR8: j.transitiveStaticLibsHeaderJarsForR8, ImplementationAndResourcesJars: android.PathsIfNonNil(j.implementationAndResourcesJar), ImplementationJars: android.PathsIfNonNil(j.implementationJarFile), ResourceJars: android.PathsIfNonNil(j.resourceJar), @@ -1974,22 +1974,18 @@ func (j *Module) instrument(ctx android.ModuleContext, flags javaBuilderFlags, return instrumentedJar } -type providesTransitiveHeaderJars struct { +type providesTransitiveHeaderJarsForR8 struct { // set of header jars for all transitive libs deps - transitiveLibsHeaderJars *android.DepSet[android.Path] + transitiveLibsHeaderJarsForR8 *android.DepSet[android.Path] // set of header jars for all transitive static libs deps - transitiveStaticLibsHeaderJars *android.DepSet[android.Path] + transitiveStaticLibsHeaderJarsForR8 *android.DepSet[android.Path] } -func (j *providesTransitiveHeaderJars) TransitiveLibsHeaderJars() *android.DepSet[android.Path] { - return j.transitiveLibsHeaderJars -} - -func (j *providesTransitiveHeaderJars) TransitiveStaticLibsHeaderJars() *android.DepSet[android.Path] { - return j.transitiveStaticLibsHeaderJars -} - -func (j *providesTransitiveHeaderJars) collectTransitiveHeaderJars(ctx android.ModuleContext) { +// collectTransitiveHeaderJarsForR8 visits direct dependencies and collects all transitive libs and static_libs +// header jars. The semantics of the collected jars are odd (it collects combined jars that contain the static +// libs, but also the static libs, and it collects transitive libs dependencies of static_libs), so these +// are only used to expand the --lib arguments to R8. +func (j *providesTransitiveHeaderJarsForR8) collectTransitiveHeaderJarsForR8(ctx android.ModuleContext) { directLibs := android.Paths{} directStaticLibs := android.Paths{} transitiveLibs := []*android.DepSet[android.Path]{} @@ -2012,16 +2008,16 @@ func (j *providesTransitiveHeaderJars) collectTransitiveHeaderJars(ctx android.M return } - if dep.TransitiveLibsHeaderJars != nil { - transitiveLibs = append(transitiveLibs, dep.TransitiveLibsHeaderJars) + if dep.TransitiveLibsHeaderJarsForR8 != nil { + transitiveLibs = append(transitiveLibs, dep.TransitiveLibsHeaderJarsForR8) } - if dep.TransitiveStaticLibsHeaderJars != nil { - transitiveStaticLibs = append(transitiveStaticLibs, dep.TransitiveStaticLibsHeaderJars) + if dep.TransitiveStaticLibsHeaderJarsForR8 != nil { + transitiveStaticLibs = append(transitiveStaticLibs, dep.TransitiveStaticLibsHeaderJarsForR8) } } }) - j.transitiveLibsHeaderJars = android.NewDepSet(android.POSTORDER, directLibs, transitiveLibs) - j.transitiveStaticLibsHeaderJars = android.NewDepSet(android.POSTORDER, directStaticLibs, transitiveStaticLibs) + j.transitiveLibsHeaderJarsForR8 = android.NewDepSet(android.POSTORDER, directLibs, transitiveLibs) + j.transitiveStaticLibsHeaderJarsForR8 = android.NewDepSet(android.POSTORDER, directStaticLibs, transitiveStaticLibs) } func (j *Module) HeaderJars() android.Paths { @@ -2287,7 +2283,7 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { sdkLinkType, _ := j.getSdkLinkType(ctx, ctx.ModuleName()) - j.collectTransitiveHeaderJars(ctx) + j.collectTransitiveHeaderJarsForR8(ctx) ctx.VisitDirectDeps(func(module android.Module) { otherName := ctx.OtherModuleName(module) tag := ctx.OtherModuleDependencyTag(module) diff --git a/java/dex.go b/java/dex.go index 6c739a27f..7d42efc9c 100644 --- a/java/dex.go +++ b/java/dex.go @@ -108,7 +108,7 @@ type dexer struct { resourcesInput android.OptionalPath resourcesOutput android.OptionalPath - providesTransitiveHeaderJars + providesTransitiveHeaderJarsForR8 } func (d *dexer) effectiveOptimizeEnabled() bool { @@ -307,14 +307,14 @@ func (d *dexer) r8Flags(ctx android.ModuleContext, dexParams *compileDexParams) r8Deps = append(r8Deps, flags.dexClasspath...) transitiveStaticLibsLookupMap := map[android.Path]bool{} - if d.transitiveStaticLibsHeaderJars != nil { - for _, jar := range d.transitiveStaticLibsHeaderJars.ToList() { + if d.transitiveStaticLibsHeaderJarsForR8 != nil { + for _, jar := range d.transitiveStaticLibsHeaderJarsForR8.ToList() { transitiveStaticLibsLookupMap[jar] = true } } transitiveHeaderJars := android.Paths{} - if d.transitiveLibsHeaderJars != nil { - for _, jar := range d.transitiveLibsHeaderJars.ToList() { + if d.transitiveLibsHeaderJarsForR8 != nil { + for _, jar := range d.transitiveLibsHeaderJarsForR8.ToList() { if _, ok := transitiveStaticLibsLookupMap[jar]; ok { // don't include a lib if it is already packaged in the current JAR as a static lib continue diff --git a/java/java.go b/java/java.go index f8e9909bc..8cc108541 100644 --- a/java/java.go +++ b/java/java.go @@ -259,10 +259,10 @@ type JavaInfo struct { RepackagedHeaderJars android.Paths // set of header jars for all transitive libs deps - TransitiveLibsHeaderJars *android.DepSet[android.Path] + TransitiveLibsHeaderJarsForR8 *android.DepSet[android.Path] // set of header jars for all transitive static libs deps - TransitiveStaticLibsHeaderJars *android.DepSet[android.Path] + TransitiveStaticLibsHeaderJarsForR8 *android.DepSet[android.Path] // ImplementationAndResourceJars is a list of jars that contain the implementations of classes // in the module as well as any resources included in the module. @@ -2634,7 +2634,7 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) { var flags javaBuilderFlags - j.collectTransitiveHeaderJars(ctx) + j.collectTransitiveHeaderJarsForR8(ctx) var staticJars android.Paths var staticResourceJars android.Paths var staticHeaderJars android.Paths @@ -2817,14 +2817,14 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) { } android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{ - HeaderJars: android.PathsIfNonNil(j.combinedHeaderFile), - TransitiveLibsHeaderJars: j.transitiveLibsHeaderJars, - TransitiveStaticLibsHeaderJars: j.transitiveStaticLibsHeaderJars, - ImplementationAndResourcesJars: android.PathsIfNonNil(j.combinedImplementationFile), - ImplementationJars: android.PathsIfNonNil(implementationJarFile.WithoutRel()), - ResourceJars: android.PathsIfNonNil(resourceJarFile), - AidlIncludeDirs: j.exportAidlIncludeDirs, - StubsLinkType: j.stubsLinkType, + HeaderJars: android.PathsIfNonNil(j.combinedHeaderFile), + TransitiveLibsHeaderJarsForR8: j.transitiveLibsHeaderJarsForR8, + TransitiveStaticLibsHeaderJarsForR8: j.transitiveStaticLibsHeaderJarsForR8, + ImplementationAndResourcesJars: android.PathsIfNonNil(j.combinedImplementationFile), + ImplementationJars: android.PathsIfNonNil(implementationJarFile.WithoutRel()), + ResourceJars: android.PathsIfNonNil(resourceJarFile), + AidlIncludeDirs: j.exportAidlIncludeDirs, + StubsLinkType: j.stubsLinkType, // TODO(b/289117800): LOCAL_ACONFIG_FILES for prebuilts })