Add hook to be called after defaults have been applied
Previously, the only way for a module type to create modules (other than defining its own mutator) was to register a LoadHook. However, that is called before defaults are applied so any properties used in that hook cannot take advantage of defaults, e.g. java_sdk_library cannot use defaults to set its sdk_version property and have that affect its child modules. This change adds a new SetDefaultableHook() to DefaultableModule to register a hook that is called after any defaults have been applied. Also adds some tests to ensure that errors in the visibility property introduced in a DefaultableHook are reported in the gather phase of visibility processing. A follow up change will switch java_sdk_library to use that instead of the AddLoadHook() mechanism. Bug: 155295806 Test: m checkapi Change-Id: I13df3115f9e225f7324b6725eaeb16a78cc2538a
This commit is contained in:
@@ -39,6 +39,12 @@ type LoadHookContext interface {
|
||||
moduleFactories() map[string]blueprint.ModuleFactory
|
||||
}
|
||||
|
||||
// Add a hook that will be called once the module has been loaded, i.e. its
|
||||
// properties have been initialized from the Android.bp file.
|
||||
//
|
||||
// Consider using SetDefaultableHook to register a hook for any module that implements
|
||||
// DefaultableModule as the hook is called after any defaults have been applied to the
|
||||
// module which could reduce duplication and make it easier to use.
|
||||
func AddLoadHook(m blueprint.Module, hook func(LoadHookContext)) {
|
||||
blueprint.AddLoadHook(m, func(ctx blueprint.LoadHookContext) {
|
||||
actx := &loadHookContext{
|
||||
|
Reference in New Issue
Block a user