From f022920bde04b32bdb7479998c65f3405808996f Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Wed, 29 Apr 2020 16:47:28 +0100 Subject: [PATCH] Switch java_sdk_library to use SetDefaultableHook() Previously, java_sdk_library used AddLoadHook() to register a hook that when called would create its child modules. That meant the java_sdk_library properties that were used to create the child modules, e.g. sdk_version could not be defaulted because the modules are created before the defaults are applied. This change switches java_sdk_library to use the new SetDefaultableHook() mechanism to register the hook instead of the AddLoadHook() mechanism. It also prevents the child modules from being created if the module has been disabled. Bug: 155295806 Test: m checkapi Change-Id: Ic6f90eb4449338e549878f64e8119e286b9aa549 --- java/sdk_library.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/java/sdk_library.go b/java/sdk_library.go index d70f6320d..f4acedb2f 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -382,7 +382,7 @@ func (module *SdkLibrary) apiDistPath(apiScope *apiScope) string { } // Get the sdk version for use when compiling the stubs library. -func (module *SdkLibrary) sdkVersionForStubsLibrary(mctx android.LoadHookContext, apiScope *apiScope) string { +func (module *SdkLibrary) sdkVersionForStubsLibrary(mctx android.DefaultableHookContext, apiScope *apiScope) string { sdkDep := decodeSdkDep(mctx, sdkContext(&module.Library)) if sdkDep.hasStandardLibs() { // If building against a standard sdk then use the sdk version appropriate for the scope. @@ -402,7 +402,7 @@ func (module *SdkLibrary) latestRemovedApiFilegroupName(apiScope *apiScope) stri } // Creates a static java library that has API stubs -func (module *SdkLibrary) createStubsLibrary(mctx android.LoadHookContext, apiScope *apiScope) { +func (module *SdkLibrary) createStubsLibrary(mctx android.DefaultableHookContext, apiScope *apiScope) { props := struct { Name *string Srcs []string @@ -473,7 +473,7 @@ func (module *SdkLibrary) createStubsLibrary(mctx android.LoadHookContext, apiSc // Creates a droidstubs module that creates stubs source files from the given full source // files -func (module *SdkLibrary) createStubsSources(mctx android.LoadHookContext, apiScope *apiScope) { +func (module *SdkLibrary) createStubsSources(mctx android.DefaultableHookContext, apiScope *apiScope) { props := struct { Name *string Srcs []string @@ -592,7 +592,7 @@ func (module *SdkLibrary) DepIsInSameApex(mctx android.BaseModuleContext, dep an } // Creates the xml file that publicizes the runtime library -func (module *SdkLibrary) createXmlFile(mctx android.LoadHookContext) { +func (module *SdkLibrary) createXmlFile(mctx android.DefaultableHookContext) { props := struct { Name *string Lib_name *string @@ -713,7 +713,12 @@ func (module *SdkLibrary) getApiDir() string { // For a java_sdk_library module, create internal modules for stubs, docs, // runtime libs and xml file. If requested, the stubs and docs are created twice // once for public API level and once for system API level -func (module *SdkLibrary) CreateInternalModules(mctx android.LoadHookContext) { +func (module *SdkLibrary) CreateInternalModules(mctx android.DefaultableHookContext) { + // If the module has been disabled then don't create any child modules. + if !module.Enabled() { + return + } + if len(module.Library.Module.properties.Srcs) == 0 { mctx.PropertyErrorf("srcs", "java_sdk_library must specify srcs") return @@ -799,7 +804,7 @@ func SdkLibraryFactory() android.Module { module.InitSdkLibraryProperties() android.InitApexModule(module) InitJavaModule(module, android.HostAndDeviceSupported) - android.AddLoadHook(module, func(ctx android.LoadHookContext) { module.CreateInternalModules(ctx) }) + module.SetDefaultableHook(func(ctx android.DefaultableHookContext) { module.CreateInternalModules(ctx) }) return module }