Stop java_sdk_library_import from depending on source modules
Previously, java_sdk_library_import added the dependencies on its child components in the deps mutator after prebuilts without a matching source module are renamed to the source module name. That meant that the java_sdk_library_import has to use the source module name and ended up depending on the source module unless it was preferred. This change adds a new component deps mutator that runs before the PrebuiltRenameMutator so that the java_sdk_library_import can add dependencies onto the prebuilt modules. It also updates an affected test. Bug: 159902351 Test: m nothing Change-Id: I3576c4873302743e51aff547ea1497bef6d748ac
This commit is contained in:
parent
ecc495fd09
commit
44f1d8404b
|
@ -228,6 +228,16 @@ type Module interface {
|
|||
// For more information, see Module.GenerateBuildActions within Blueprint's module_ctx.go
|
||||
GenerateAndroidBuildActions(ModuleContext)
|
||||
|
||||
// Add dependencies to the components of a module, i.e. modules that are created
|
||||
// by the module and which are considered to be part of the creating module.
|
||||
//
|
||||
// This is called before prebuilts are renamed so as to allow a dependency to be
|
||||
// added directly to a prebuilt child module instead of depending on a source module
|
||||
// and relying on prebuilt processing to switch to the prebuilt module if preferred.
|
||||
//
|
||||
// A dependency on a prebuilt must include the "prebuilt_" prefix.
|
||||
ComponentDepsMutator(ctx BottomUpMutatorContext)
|
||||
|
||||
DepsMutator(BottomUpMutatorContext)
|
||||
|
||||
base() *ModuleBase
|
||||
|
@ -769,6 +779,8 @@ type ModuleBase struct {
|
|||
prefer32 func(ctx BaseModuleContext, base *ModuleBase, class OsClass) bool
|
||||
}
|
||||
|
||||
func (m *ModuleBase) ComponentDepsMutator(BottomUpMutatorContext) {}
|
||||
|
||||
func (m *ModuleBase) DepsMutator(BottomUpMutatorContext) {}
|
||||
|
||||
func (m *ModuleBase) AddProperties(props ...interface{}) {
|
||||
|
|
|
@ -115,6 +115,18 @@ var preArch = []RegisterMutatorFunc{
|
|||
// a DefaultableHook.
|
||||
RegisterDefaultsPreArchMutators,
|
||||
|
||||
// Add dependencies on any components so that any component references can be
|
||||
// resolved within the deps mutator.
|
||||
//
|
||||
// Must be run after defaults so it can be used to create dependencies on the
|
||||
// component modules that are creating in a DefaultableHook.
|
||||
//
|
||||
// Must be run before RegisterPrebuiltsPreArchMutators, i.e. before prebuilts are
|
||||
// renamed. That is so that if a module creates components using a prebuilt module
|
||||
// type that any dependencies (which must use prebuilt_ prefixes) are resolved to
|
||||
// the prebuilt module and not the source module.
|
||||
RegisterComponentsMutator,
|
||||
|
||||
// Create an association between prebuilt modules and their corresponding source
|
||||
// modules (if any).
|
||||
//
|
||||
|
@ -252,8 +264,21 @@ func (mutator *mutator) Parallel() MutatorHandle {
|
|||
return mutator
|
||||
}
|
||||
|
||||
func RegisterComponentsMutator(ctx RegisterMutatorsContext) {
|
||||
ctx.BottomUp("component-deps", componentDepsMutator).Parallel()
|
||||
}
|
||||
|
||||
// A special mutator that runs just prior to the deps mutator to allow the dependencies
|
||||
// on component modules to be added so that they can depend directly on a prebuilt
|
||||
// module.
|
||||
func componentDepsMutator(ctx BottomUpMutatorContext) {
|
||||
if m := ctx.Module(); m.Enabled() {
|
||||
m.ComponentDepsMutator(ctx)
|
||||
}
|
||||
}
|
||||
|
||||
func depsMutator(ctx BottomUpMutatorContext) {
|
||||
if m, ok := ctx.Module().(Module); ok && m.Enabled() {
|
||||
if m := ctx.Module(); m.Enabled() {
|
||||
m.DepsMutator(ctx)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -233,6 +233,7 @@ func testApexContext(_ *testing.T, bp string, handlers ...testCustomizer) (*andr
|
|||
ctx.RegisterModuleType("apex_set", apexSetFactory)
|
||||
|
||||
ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
|
||||
ctx.PreArchMutators(android.RegisterComponentsMutator)
|
||||
ctx.PostDepsMutators(android.RegisterOverridePostDepsMutators)
|
||||
|
||||
cc.RegisterRequiredBuildComponentsForTest(ctx)
|
||||
|
|
|
@ -86,6 +86,7 @@ func testContext() *android.TestContext {
|
|||
RegisterStubsBuildComponents(ctx)
|
||||
RegisterSdkLibraryBuildComponents(ctx)
|
||||
ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
|
||||
ctx.PreArchMutators(android.RegisterComponentsMutator)
|
||||
|
||||
RegisterPrebuiltApisBuildComponents(ctx)
|
||||
|
||||
|
@ -684,11 +685,11 @@ func TestJavaSdkLibraryImport_WithSource(t *testing.T) {
|
|||
})
|
||||
|
||||
checkModuleDependencies(t, ctx, "prebuilt_sdklib", "android_common", []string{
|
||||
`prebuilt_sdklib.stubs`,
|
||||
`sdklib.impl`,
|
||||
// This should be prebuilt_sdklib.stubs but is set to sdklib.stubs because the
|
||||
// dependency is added after prebuilts may have been renamed and so has to use
|
||||
// the renamed name.
|
||||
`sdklib.stubs`,
|
||||
`sdklib.xml`,
|
||||
})
|
||||
}
|
||||
|
|
|
@ -973,7 +973,8 @@ func IsXmlPermissionsFileDepTag(depTag blueprint.DependencyTag) bool {
|
|||
|
||||
var implLibraryTag = sdkLibraryComponentTag{name: "impl-library"}
|
||||
|
||||
func (module *SdkLibrary) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
// Add the dependencies on the child modules in the component deps mutator.
|
||||
func (module *SdkLibrary) ComponentDepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
for _, apiScope := range module.getGeneratedApiScopes(ctx) {
|
||||
// Add dependencies to the stubs library
|
||||
ctx.AddVariationDependencies(nil, apiScope.stubsTag, module.stubsLibraryModuleName(apiScope))
|
||||
|
@ -998,7 +999,12 @@ func (module *SdkLibrary) DepsMutator(ctx android.BottomUpMutatorContext) {
|
|||
// Add dependency to the rule for generating the xml permissions file
|
||||
ctx.AddDependency(module, xmlPermissionsFileTag, module.xmlPermissionsModuleName())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add other dependencies as normal.
|
||||
func (module *SdkLibrary) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
if module.requiresRuntimeImplementationLibrary() {
|
||||
// Only add the deps for the library if it is actually going to be built.
|
||||
module.Library.deps(ctx)
|
||||
}
|
||||
|
@ -1874,20 +1880,26 @@ func (module *SdkLibraryImport) createPrebuiltStubsSources(mctx android.Defaulta
|
|||
props.Prefer = proptools.BoolPtr(module.prebuilt.Prefer())
|
||||
}
|
||||
|
||||
func (module *SdkLibraryImport) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
// Add the dependencies on the child module in the component deps mutator so that it
|
||||
// creates references to the prebuilt and not the source modules.
|
||||
func (module *SdkLibraryImport) ComponentDepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
for apiScope, scopeProperties := range module.scopeProperties {
|
||||
if len(scopeProperties.Jars) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
// Add dependencies to the prebuilt stubs library
|
||||
ctx.AddVariationDependencies(nil, apiScope.stubsTag, module.stubsLibraryModuleName(apiScope))
|
||||
ctx.AddVariationDependencies(nil, apiScope.stubsTag, "prebuilt_"+module.stubsLibraryModuleName(apiScope))
|
||||
|
||||
if len(scopeProperties.Stub_srcs) > 0 {
|
||||
// Add dependencies to the prebuilt stubs source library
|
||||
ctx.AddVariationDependencies(nil, apiScope.stubsSourceTag, module.stubsSourceModuleName(apiScope))
|
||||
ctx.AddVariationDependencies(nil, apiScope.stubsSourceTag, "prebuilt_"+module.stubsSourceModuleName(apiScope))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add other dependencies as normal.
|
||||
func (module *SdkLibraryImport) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
|
||||
implName := module.implLibraryModuleName()
|
||||
if ctx.OtherModuleExists(implName) {
|
||||
|
|
|
@ -84,6 +84,7 @@ func testSdkContext(bp string, fs map[string][]byte) (*android.TestContext, andr
|
|||
android.RegisterPackageBuildComponents(ctx)
|
||||
ctx.PreArchMutators(android.RegisterVisibilityRuleChecker)
|
||||
ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
|
||||
ctx.PreArchMutators(android.RegisterComponentsMutator)
|
||||
ctx.PreArchMutators(android.RegisterVisibilityRuleGatherer)
|
||||
ctx.PostDepsMutators(android.RegisterVisibilityRuleEnforcer)
|
||||
|
||||
|
|
Loading…
Reference in New Issue