From b077bcc6bc5839de98ecb94a3416c69bc54f97c2 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Thu, 28 Oct 2021 13:27:37 +0100 Subject: [PATCH] Create prebuilt system modules for all API scopes Previously, system modules were only created for the public API scope. This change creates them for any API scope as long as its directory has a core-for-system-modules.jar. It does that by hooking into the existing logic for creating a java_import for all jars in the API directories and creating a java_system_modules for every core-for-system-modules.jar file. That avoids the need for extra path globs. Test: m droid m sdk_public_current_system_modules - works as expected. m sdk_module-lib_current_system_modules - fails with missing target as expected. touch prebuilts/sdk/current/module-lib/core-for-system-modules.jar m sdk_module-lib_current_system_modules - fails with invalid jar file as expected. Bug: 204189791 Change-Id: I27a264941009e03439d5d847dab14a7b4f6f119f --- java/prebuilt_apis.go | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/java/prebuilt_apis.go b/java/prebuilt_apis.go index c33e6c229..c67e2bd59 100644 --- a/java/prebuilt_apis.go +++ b/java/prebuilt_apis.go @@ -167,30 +167,24 @@ func prebuiltSdkStubs(mctx android.LoadHookContext, p *prebuiltApis) { localPath := strings.TrimPrefix(f, mydir) module, apiver, scope := parseJarPath(localPath) createImport(mctx, module, scope, apiver, localPath, sdkVersion, compileDex) + + if module == "core-for-system-modules" { + createSystemModules(mctx, apiver, scope) + } } } -func createSystemModules(mctx android.LoadHookContext, apiver string) { +func createSystemModules(mctx android.LoadHookContext, apiver string, scope string) { props := struct { Name *string Libs []string }{} - props.Name = proptools.StringPtr(prebuiltApiModuleName(mctx, "system_modules", "public", apiver)) - props.Libs = append(props.Libs, prebuiltApiModuleName(mctx, "core-for-system-modules", "public", apiver)) + props.Name = proptools.StringPtr(prebuiltApiModuleName(mctx, "system_modules", scope, apiver)) + props.Libs = append(props.Libs, prebuiltApiModuleName(mctx, "core-for-system-modules", scope, apiver)) mctx.CreateModule(systemModulesImportFactory, &props) } -func prebuiltSdkSystemModules(mctx android.LoadHookContext, p *prebuiltApis) { - for _, apiver := range p.properties.Api_dirs { - jar := android.ExistentPathForSource(mctx, - mctx.ModuleDir(), apiver, "public", "core-for-system-modules.jar") - if jar.Valid() { - createSystemModules(mctx, apiver) - } - } -} - func prebuiltApiFiles(mctx android.LoadHookContext, p *prebuiltApis) { mydir := mctx.ModuleDir() + "/" // //api/.txt @@ -273,7 +267,6 @@ func createPrebuiltApiModules(mctx android.LoadHookContext) { if p, ok := mctx.Module().(*prebuiltApis); ok { prebuiltApiFiles(mctx, p) prebuiltSdkStubs(mctx, p) - prebuiltSdkSystemModules(mctx, p) } }