Remove implicit dependency from <x> -> <x>-hiddenapi

It can be removed as all implicit dependencies have been replaced with
explicit ones so it is no longer needed.

Test: m droid
      Verified that hiddenapi files (both aggregated ones and for the
      individual modules) are not affected by this change.
Change-Id: I3da5fcb3b244a295502f2cacc94a504250d4d616
This commit is contained in:
Paul Duffin
2021-02-12 15:42:20 +00:00
parent 031d8693b3
commit f8f4af8f1a
2 changed files with 13 additions and 37 deletions

View File

@@ -15,8 +15,6 @@
package java
import (
"strings"
"github.com/google/blueprint"
"android/soong/android"
@@ -29,8 +27,8 @@ var hiddenAPIGenerateCSVRule = pctx.AndroidStaticRule("hiddenAPIGenerateCSV", bl
type hiddenAPI struct {
// The name of the module as it would be used in the boot jars configuration, e.g. without any
// prebuilt_ prefix (if it is a prebuilt), without any "-hiddenapi" suffix if it just provides
// annotations and without any ".impl" suffix if it is a java_sdk_library implementation library.
// prebuilt_ prefix (if it is a prebuilt) and without any ".impl" suffix if it is a
// java_sdk_library implementation library.
configurationName string
// True if the module containing this structure contributes to the hiddenapi information or has
@@ -49,11 +47,6 @@ type hiddenAPI struct {
// annotation information.
primary bool
// True if the module only contains additional annotations and so does not require hiddenapi
// information to be encoded in its dex file and should not be used to generate the
// hiddenAPISingletonPathsStruct.stubFlags file.
annotationsOnly bool
// The path to the dex jar that is in the boot class path. If this is nil then the associated
// module is not a boot jar, but could be one of the <x>-hiddenapi modules that provide additional
// annotations for the <x> boot dex jar but which do not actually provide a boot dex jar
@@ -119,16 +112,12 @@ type hiddenAPIIntf interface {
var _ hiddenAPIIntf = (*hiddenAPI)(nil)
// Initialize the hiddenapi structure
func (h *hiddenAPI) initHiddenAPI(ctx android.BaseModuleContext, name string) {
func (h *hiddenAPI) initHiddenAPI(ctx android.BaseModuleContext, configurationName string) {
// If hiddenapi processing is disabled treat this as inactive.
if ctx.Config().IsEnvTrue("UNSAFE_DISABLE_HIDDENAPI_FLAGS") {
return
}
// Modules whose names are of the format <x>-hiddenapi provide hiddenapi information for the boot
// jar module <x>. Otherwise, the module provides information for itself. Either way extract the
// configurationName of the boot jar module.
configurationName := strings.TrimSuffix(name, "-hiddenapi")
h.configurationName = configurationName
// It is important that hiddenapi information is only gathered for/from modules that are actually
@@ -141,10 +130,6 @@ func (h *hiddenAPI) initHiddenAPI(ctx android.BaseModuleContext, name string) {
return
}
// If this module has a suffix of -hiddenapi then it only provides additional annotation
// information for a module on the boot jars list.
h.annotationsOnly = strings.HasSuffix(name, "-hiddenapi")
// Determine whether this module is the primary module or not.
primary := true
@@ -156,11 +141,11 @@ func (h *hiddenAPI) initHiddenAPI(ctx android.BaseModuleContext, name string) {
primary = p.UsePrebuilt()
}
} else {
// The only module that will pass a different name to its module name to this method is the
// implementation library of a java_sdk_library. It has a configuration name of <x> the same
// as its parent java_sdk_library but a module name of <x>.impl. It is not the primary module,
// the java_sdk_library with the name of <x> is.
primary = name == ctx.ModuleName()
// The only module that will pass a different configurationName to its module name to this
// method is the implementation library of a java_sdk_library. It has a configuration name of
// <x> the same as its parent java_sdk_library but a module name of <x>.impl. It is not the
// primary module, the java_sdk_library with the name of <x> is.
primary = configurationName == ctx.ModuleName()
// A source module that has been replaced by a prebuilt can never be the primary module.
primary = primary && !module.IsReplacedByPrebuilt()
@@ -191,15 +176,13 @@ func (h *hiddenAPI) hiddenAPIExtractAndEncode(ctx android.ModuleContext, dexJar
h.hiddenAPIExtractInformation(ctx, dexJar, implementationJar)
if !h.annotationsOnly {
hiddenAPIJar := android.PathForModuleOut(ctx, "hiddenapi", h.configurationName+".jar").OutputPath
hiddenAPIJar := android.PathForModuleOut(ctx, "hiddenapi", h.configurationName+".jar").OutputPath
// Create a copy of the dex jar which has been encoded with hiddenapi flags.
hiddenAPIEncodeDex(ctx, hiddenAPIJar, dexJar, uncompressDex)
// Create a copy of the dex jar which has been encoded with hiddenapi flags.
hiddenAPIEncodeDex(ctx, hiddenAPIJar, dexJar, uncompressDex)
// Use the encoded dex jar from here onwards.
dexJar = hiddenAPIJar
}
// Use the encoded dex jar from here onwards.
dexJar = hiddenAPIJar
return dexJar
}