Remove implicit dependency from <x> -> <x>-hiddenapi am: f8f4af8f1a

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1587495

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I5f701167d78771a53ab6e0f082a12c44871d22ec
This commit is contained in:
Paul Duffin
2021-02-24 00:48:45 +00:00
committed by Automerger Merge Worker
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
}

View File

@@ -88,12 +88,6 @@ func TestHiddenAPIIndexSingleton(t *testing.T) {
],
}
java_library {
name: "foo-hiddenapi",
srcs: ["a.java"],
compile_dex: true,
}
java_library {
name: "foo-hiddenapi-annotations",
srcs: ["a.java"],
@@ -118,7 +112,6 @@ func TestHiddenAPIIndexSingleton(t *testing.T) {
indexRule := hiddenAPIIndex.Rule("singleton-merged-hiddenapi-index")
CheckHiddenAPIRuleInputs(t, `
.intermediates/bar/android_common/hiddenapi/index.csv
.intermediates/foo-hiddenapi/android_common/hiddenapi/index.csv
.intermediates/foo/android_common/hiddenapi/index.csv
`,
indexRule)