Revert "Improve error reporting when depending on prebuilt implementation jar"
This reverts commit c61783b20d70789d657dcb82050369480cc443c7.
Bug: 257969510
Reason for revert: b/255275437 - breaks checkbuild target
Change-Id: I01f88053cc24dbc1a4eb5c009f15473bdff3d565
diff --git a/java/java.go b/java/java.go
index 3471abb..b6fc6b8 100644
--- a/java/java.go
+++ b/java/java.go
@@ -86,11 +86,11 @@
var (
// Supports adding java header libraries to module_exports and sdk.
javaHeaderLibsSdkMemberType = &librarySdkMemberType{
- SdkMemberTypeBase: android.SdkMemberTypeBase{
+ android.SdkMemberTypeBase{
PropertyName: "java_header_libs",
SupportsSdk: true,
},
- jarToExportGetter: func(_ android.SdkMemberContext, j *Library) android.Path {
+ func(_ android.SdkMemberContext, j *Library) android.Path {
headerJars := j.HeaderJars()
if len(headerJars) != 1 {
panic(fmt.Errorf("there must be only one header jar from %q", j.Name()))
@@ -98,8 +98,8 @@
return headerJars[0]
},
- snapshotPathGetter: sdkSnapshotFilePathForJar,
- onlyCopyJarToSnapshot: copyEverythingToSnapshot,
+ sdkSnapshotFilePathForJar,
+ copyEverythingToSnapshot,
}
// Export implementation classes jar as part of the sdk.
@@ -113,12 +113,12 @@
// Supports adding java implementation libraries to module_exports but not sdk.
javaLibsSdkMemberType = &librarySdkMemberType{
- SdkMemberTypeBase: android.SdkMemberTypeBase{
+ android.SdkMemberTypeBase{
PropertyName: "java_libs",
},
- jarToExportGetter: exportImplementationClassesJar,
- snapshotPathGetter: sdkSnapshotFilePathForJar,
- onlyCopyJarToSnapshot: copyEverythingToSnapshot,
+ exportImplementationClassesJar,
+ sdkSnapshotFilePathForJar,
+ copyEverythingToSnapshot,
}
snapshotRequiresImplementationJar = func(ctx android.SdkMemberContext) bool {
@@ -143,11 +143,11 @@
// necessary. The java_boot_libs property to allow those modules to be exported as part of the
// sdk/module_exports without exposing any unnecessary information.
javaBootLibsSdkMemberType = &librarySdkMemberType{
- SdkMemberTypeBase: android.SdkMemberTypeBase{
+ android.SdkMemberTypeBase{
PropertyName: "java_boot_libs",
SupportsSdk: true,
},
- jarToExportGetter: func(ctx android.SdkMemberContext, j *Library) android.Path {
+ func(ctx android.SdkMemberContext, j *Library) android.Path {
if snapshotRequiresImplementationJar(ctx) {
return exportImplementationClassesJar(ctx, j)
}
@@ -156,9 +156,9 @@
// jar for use by dexpreopting and boot jars package check. They do not need to provide an
// actual implementation jar but the java_import will need a file that exists so just copy an
// empty file. Any attempt to use that file as a jar will cause a build error.
- return nil
+ return ctx.SnapshotBuilder().EmptyFile()
},
- snapshotPathGetter: func(ctx android.SdkMemberContext, osPrefix, name string) string {
+ func(ctx android.SdkMemberContext, osPrefix, name string) string {
if snapshotRequiresImplementationJar(ctx) {
return sdkSnapshotFilePathForJar(ctx, osPrefix, name)
}
@@ -168,7 +168,7 @@
// TODO(b/175714559): Provide a proper error message in Soong not ninja.
return filepath.Join(osPrefix, "java_boot_libs", "snapshot", "jars", "are", "invalid", name+jarFileSuffix)
},
- onlyCopyJarToSnapshot: onlyCopyJarToSnapshot,
+ onlyCopyJarToSnapshot,
}
// Supports adding java systemserver libraries to module_exports and sdk.
@@ -182,27 +182,27 @@
// necessary. The java_systemserver_libs property to allow those modules to be exported as part of
// the sdk/module_exports without exposing any unnecessary information.
javaSystemserverLibsSdkMemberType = &librarySdkMemberType{
- SdkMemberTypeBase: android.SdkMemberTypeBase{
+ android.SdkMemberTypeBase{
PropertyName: "java_systemserver_libs",
SupportsSdk: true,
// This was only added in Tiramisu.
SupportedBuildReleaseSpecification: "Tiramisu+",
},
- jarToExportGetter: func(ctx android.SdkMemberContext, j *Library) android.Path {
+ func(ctx android.SdkMemberContext, j *Library) android.Path {
// Java systemserver libs are only provided in the SDK to provide access to their dex
// implementation jar for use by dexpreopting. They do not need to provide an actual
// implementation jar but the java_import will need a file that exists so just copy an empty
// file. Any attempt to use that file as a jar will cause a build error.
- return nil
+ return ctx.SnapshotBuilder().EmptyFile()
},
- snapshotPathGetter: func(_ android.SdkMemberContext, osPrefix, name string) string {
+ func(_ android.SdkMemberContext, osPrefix, name string) string {
// Create a special name for the implementation jar to try and provide some useful information
// to a developer that attempts to compile against this.
// TODO(b/175714559): Provide a proper error message in Soong not ninja.
return filepath.Join(osPrefix, "java_systemserver_libs", "snapshot", "jars", "are", "invalid", name+jarFileSuffix)
},
- onlyCopyJarToSnapshot: onlyCopyJarToSnapshot,
+ onlyCopyJarToSnapshot,
}
// Supports adding java test libraries to module_exports but not sdk.
@@ -232,7 +232,7 @@
ImplementationAndResourcesJars android.Paths
// ImplementationJars is a list of jars that contain the implementations of classes in the
- // module.
+ //module.
ImplementationJars android.Paths
// ResourceJars is a list of jars that contain the resources included in the module.
@@ -718,8 +718,7 @@
android.SdkMemberTypeBase
// Function to retrieve the appropriate output jar (implementation or header) from
- // the library, if this returns nil then it is assumed that the snapshot must not provide access
- // to the jar.
+ // the library.
jarToExportGetter func(ctx android.SdkMemberContext, j *Library) android.Path
// Function to compute the snapshot relative path to which the named library's
@@ -756,11 +755,7 @@
type librarySdkMemberProperties struct {
android.SdkMemberPropertiesBase
- JarToExport android.Path `android:"arch_variant"`
-
- // The path to a script to use when the jar is invalid.
- InvalidJarScript android.Path
-
+ JarToExport android.Path `android:"arch_variant"`
AidlIncludeDirs android.Paths
// The list of permitted packages that need to be passed to the prebuilts as they are used to
@@ -771,15 +766,7 @@
func (p *librarySdkMemberProperties) PopulateFromVariant(ctx android.SdkMemberContext, variant android.Module) {
j := variant.(*Library)
- memberType := ctx.MemberType().(*librarySdkMemberType)
- p.JarToExport = memberType.jarToExportGetter(ctx, j)
-
- // If no jar was provided for export then disallow access to it completely.
- if p.JarToExport == nil {
- // Copy the script to prevent access to the jar into the snapshot.
- p.InvalidJarScript = android.PathForSource(ctx.SdkModuleContext(),
- "build/soong/java/invalid_implementation_jar.sh")
- }
+ p.JarToExport = ctx.MemberType().(*librarySdkMemberType).jarToExportGetter(ctx, j)
p.AidlIncludeDirs = j.AidlIncludeDirs()
@@ -802,21 +789,6 @@
propertySet.AddProperty("jars", []string{snapshotRelativeJavaLibPath})
}
- if scriptSrc := p.InvalidJarScript; scriptSrc != nil {
- // Copy the script to prevent access to the jar into the snapshot.
- scriptDest := filepath.Join("scripts", scriptSrc.Base())
- builder.CopyToSnapshot(scriptSrc, scriptDest)
-
- // Generate a genrule module that will invoke the script passing in the module name.
- genrule := builder.AddInternalModule(p, "genrule", "error")
- genRuleName := genrule.Name()
- genrule.AddProperty("out", []string{"this-file-will-never-be-created.jar"})
- genrule.AddProperty("tool_files", []string{scriptDest})
- genrule.AddProperty("cmd", fmt.Sprintf("$(location %s) %s", scriptDest, p.Name()))
-
- propertySet.AddPropertyWithTag("jars", []string{":" + genRuleName}, builder.SdkMemberReferencePropertyTag(true))
- }
-
if len(p.PermittedPackages) > 0 {
propertySet.AddProperty("permitted_packages", p.PermittedPackages)
}
@@ -1678,7 +1650,7 @@
}
func (j *Import) commonBuildActions(ctx android.ModuleContext) {
- // TODO(b/231322772) these should come from Bazel once available
+ //TODO(b/231322772) these should come from Bazel once available
j.sdkVersion = j.SdkVersion(ctx)
j.minSdkVersion = j.MinSdkVersion(ctx)
@@ -2281,7 +2253,7 @@
resources.Append(android.BazelLabelForModuleSrc(ctx, m.properties.Java_resources))
}
- // TODO(b/179889880) handle case where glob includes files outside package
+ //TODO(b/179889880) handle case where glob includes files outside package
resDeps := ResourceDirsToFiles(
ctx,
m.properties.Java_resource_dirs,
@@ -2429,7 +2401,7 @@
}
epEnabled := m.properties.Errorprone.Enabled
- // TODO(b/227504307) add configuration that depends on RUN_ERROR_PRONE environment variable
+ //TODO(b/227504307) add configuration that depends on RUN_ERROR_PRONE environment variable
if Bool(epEnabled) {
javacopts = append(javacopts, m.properties.Errorprone.Javacflags...)
}
@@ -2665,7 +2637,7 @@
HeaderJars: android.PathsIfNonNil(i.combinedClasspathFile),
ImplementationAndResourcesJars: android.PathsIfNonNil(i.combinedClasspathFile),
ImplementationJars: android.PathsIfNonNil(i.combinedClasspathFile),
- // TODO(b/240308299) include AIDL information from Bazel
+ //TODO(b/240308299) include AIDL information from Bazel
})
i.maybeInstall(ctx, jarName, outputFile)