diff options
author | 2024-09-24 00:34:49 +0000 | |
---|---|---|
committer | 2024-09-27 22:32:18 +0000 | |
commit | a6d0aa86f985f6083d0519911b64fae77c710f86 (patch) | |
tree | 28e017cfe69b74a2b4a2d39690aef24c296fbad4 | |
parent | 05ff7f07209883f3bf34e9a3552db97f4847d792 (diff) |
Do not set JavaInfoProvider in java_sdk_library
Given that modules are not allowed to depend on java_sdk_library as
a compilation dependency anymore, do not set JavaInfoProvider in
java_sdk_library to prevent misusage of java_sdk_library via
`OtherModuleProvier(..., JavaInfoProvier)` in `VisitDirectDeps()`
Test: CI
Bug: 308827369
Change-Id: Id73287774ec1d1a19cfab45e1eaee27784d141f0
-rw-r--r-- | apex/apex_test.go | 2 | ||||
-rw-r--r-- | apex/platform_bootclasspath_test.go | 6 | ||||
-rw-r--r-- | java/platform_bootclasspath.go | 26 | ||||
-rw-r--r-- | java/sdk_library.go | 1 | ||||
-rw-r--r-- | java/sdk_library_internal.go | 6 |
5 files changed, 36 insertions, 5 deletions
diff --git a/apex/apex_test.go b/apex/apex_test.go index 8cb8a9132..ed492661f 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -5429,11 +5429,11 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { apex_available: ["myapex"], shared_library: false, permitted_packages: ["bar"], + prefer: true, } java_sdk_library { name: "libbar", - enabled: false, srcs: ["foo/bar/MyClass.java"], unsafe_ignore_missing_latest_api: true, apex_available: ["myapex"], diff --git a/apex/platform_bootclasspath_test.go b/apex/platform_bootclasspath_test.go index 9c2d89951..f4da31ed2 100644 --- a/apex/platform_bootclasspath_test.go +++ b/apex/platform_bootclasspath_test.go @@ -409,6 +409,9 @@ func TestPlatformBootclasspathDependencies(t *testing.T) { // The fragments. `com.android.art:art-bootclasspath-fragment`, `myapex:my-bootclasspath-fragment`, + + // Impl lib of sdk_library for transitive srcjar generation + `platform:foo.impl`, }) } @@ -565,6 +568,9 @@ func TestPlatformBootclasspath_AlwaysUsePrebuiltSdks(t *testing.T) { // The fragments. "myapex:mybootclasspath-fragment", "myapex:prebuilt_mybootclasspath-fragment", + + // Impl lib of sdk_library for transitive srcjar generation + "platform:foo.impl", }) } diff --git a/java/platform_bootclasspath.go b/java/platform_bootclasspath.go index d794e511b..5bb77542c 100644 --- a/java/platform_bootclasspath.go +++ b/java/platform_bootclasspath.go @@ -33,6 +33,7 @@ var ( platformBootclasspathArtBootJarDepTag = bootclasspathDependencyTag{name: "art-boot-jar"} platformBootclasspathBootJarDepTag = bootclasspathDependencyTag{name: "platform-boot-jar"} platformBootclasspathApexBootJarDepTag = bootclasspathDependencyTag{name: "apex-boot-jar"} + platformBootclasspathImplLibDepTag = dependencyTag{name: "impl-lib-tag"} ) type platformBootclasspathModule struct { @@ -111,12 +112,18 @@ func (b *platformBootclasspathModule) BootclasspathDepsMutator(ctx android.Botto // Add dependencies on all the ART jars. global := dexpreopt.GetGlobalConfig(ctx) addDependenciesOntoSelectedBootImageApexes(ctx, "com.android.art") + + var bootImageModuleNames []string + // TODO: b/308174306 - Remove the mechanism of depending on the java_sdk_library(_import) directly addDependenciesOntoBootImageModules(ctx, global.ArtApexJars, platformBootclasspathArtBootJarDepTag) + bootImageModuleNames = append(bootImageModuleNames, global.ArtApexJars.CopyOfJars()...) // Add dependencies on all the non-updatable jars, which are on the platform or in non-updatable // APEXes. - addDependenciesOntoBootImageModules(ctx, b.platformJars(ctx), platformBootclasspathBootJarDepTag) + platformJars := b.platformJars(ctx) + addDependenciesOntoBootImageModules(ctx, platformJars, platformBootclasspathBootJarDepTag) + bootImageModuleNames = append(bootImageModuleNames, platformJars.CopyOfJars()...) // Add dependencies on all the updatable jars, except the ART jars. apexJars := dexpreopt.GetGlobalConfig(ctx).ApexBootJars @@ -127,9 +134,17 @@ func (b *platformBootclasspathModule) BootclasspathDepsMutator(ctx android.Botto addDependenciesOntoSelectedBootImageApexes(ctx, android.FirstUniqueStrings(apexes)...) // TODO: b/308174306 - Remove the mechanism of depending on the java_sdk_library(_import) directly addDependenciesOntoBootImageModules(ctx, apexJars, platformBootclasspathApexBootJarDepTag) + bootImageModuleNames = append(bootImageModuleNames, apexJars.CopyOfJars()...) // Add dependencies on all the fragments. b.properties.BootclasspathFragmentsDepsProperties.addDependenciesOntoFragments(ctx) + + for _, bootImageModuleName := range bootImageModuleNames { + implLibName := implLibraryModuleName(bootImageModuleName) + if ctx.OtherModuleExists(implLibName) { + ctx.AddFarVariationDependencies(nil, platformBootclasspathImplLibDepTag, implLibName) + } + } } func addDependenciesOntoBootImageModules(ctx android.BottomUpMutatorContext, modules android.ConfiguredJarList, tag bootclasspathDependencyTag) { @@ -166,8 +181,15 @@ func (b *platformBootclasspathModule) GenerateAndroidBuildActions(ctx android.Mo allModules = append(allModules, apexModules...) b.configuredModules = allModules + // Do not add implLibModule to allModules as the impl lib is only used to collect the + // transitive source files + var implLibModule []android.Module + ctx.VisitDirectDepsWithTag(implLibraryTag, func(m android.Module) { + implLibModule = append(implLibModule, m) + }) + var transitiveSrcFiles android.Paths - for _, module := range allModules { + for _, module := range append(allModules, implLibModule...) { if depInfo, ok := android.OtherModuleProvider(ctx, module, JavaInfoProvider); ok { if depInfo.TransitiveSrcFiles != nil { transitiveSrcFiles = append(transitiveSrcFiles, depInfo.TransitiveSrcFiles.ToList()...) diff --git a/java/sdk_library.go b/java/sdk_library.go index 37e01e8de..c0242a010 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -1437,7 +1437,6 @@ func (module *SdkLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) if dep, ok := android.OtherModuleProvider(ctx, to, JavaInfoProvider); ok { module.implLibraryHeaderJars = append(module.implLibraryHeaderJars, dep.HeaderJars...) module.implLibraryModule = to.(*Library) - android.SetProvider(ctx, JavaInfoProvider, dep) } } }) diff --git a/java/sdk_library_internal.go b/java/sdk_library_internal.go index 6f24902e1..ca088cf68 100644 --- a/java/sdk_library_internal.go +++ b/java/sdk_library_internal.go @@ -33,9 +33,13 @@ const ( implLibSuffix = ".impl" ) +func implLibraryModuleName(sdkLibName string) string { + return sdkLibName + implLibSuffix +} + // Module name of the runtime implementation library func (c *commonToSdkLibraryAndImport) implLibraryModuleName() string { - return c.module.RootLibraryName() + implLibSuffix + return implLibraryModuleName(c.module.RootLibraryName()) } // Module name of the XML file for the lib |