From b0f3d42df26ca171d85190c002b01f08de39d5a7 Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Wed, 29 Mar 2023 20:59:47 +0000 Subject: [PATCH 1/3] Create a defaults module for stripping out annotations This reduces code duplication in preparation for checking in a java_system_modules created using stubs from .txt files Test: No diff in the 4 java_system_modules Change-Id: I0a13a0e7bf402cbe8f0dd3942b1f737cc6ac0de7 --- java/core-libraries/Android.bp | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/java/core-libraries/Android.bp b/java/core-libraries/Android.bp index b9332dda5..372502d41 100644 --- a/java/core-libraries/Android.bp +++ b/java/core-libraries/Android.bp @@ -79,16 +79,25 @@ java_library { ], } +// Defaults module to strip out android annotations +java_defaults { + name: "system-modules-no-annotations", + sdk_version: "none", + system_modules: "none", + jarjar_rules: "jarjar-strip-annotations-rules.txt", +} + // Same as core-current-stubs-for-system-modules, but android annotations are // stripped. java_library { name: "core-current-stubs-for-system-modules-no-annotations", visibility: ["//development/sdk"], + defaults: [ + "system-modules-no-annotations", + ], static_libs: [ "core-current-stubs-for-system-modules", ], - sdk_version: "none", - system_modules: "none", dists: [ { // Legacy dist location for the public file. @@ -100,7 +109,6 @@ java_library { targets: dist_targets, }, ], - jarjar_rules: "jarjar-strip-annotations-rules.txt", } // Used when compiling higher-level code against core.current.stubs. @@ -158,16 +166,16 @@ java_library { java_library { name: "core-module-lib-stubs-for-system-modules-no-annotations", visibility: ["//visibility:private"], + defaults: [ + "system-modules-no-annotations", + ], static_libs: [ "core-module-lib-stubs-for-system-modules", ], - sdk_version: "none", - system_modules: "none", dist: { dest: "system-modules/module-lib/core-for-system-modules-no-annotations.jar", targets: dist_targets, }, - jarjar_rules: "jarjar-strip-annotations-rules.txt", } // Used when compiling higher-level code with sdk_version "module_current" @@ -212,16 +220,16 @@ java_library { java_library { name: "legacy.core.platform.api.no.annotations.stubs", visibility: core_platform_visibility, + defaults: [ + "system-modules-no-annotations", + ], hostdex: true, compile_dex: true, - sdk_version: "none", - system_modules: "none", static_libs: [ "legacy.core.platform.api.stubs", ], patch_module: "java.base", - jarjar_rules: "jarjar-strip-annotations-rules.txt", } java_library { @@ -247,16 +255,16 @@ java_library { java_library { name: "stable.core.platform.api.no.annotations.stubs", visibility: core_platform_visibility, + defaults: [ + "system-modules-no-annotations", + ], hostdex: true, compile_dex: true, - sdk_version: "none", - system_modules: "none", static_libs: [ "stable.core.platform.api.stubs", ], patch_module: "java.base", - jarjar_rules: "jarjar-strip-annotations-rules.txt", } // Used when compiling higher-level code against *.core.platform.api.stubs. From 4f771f144cd14c9ddea08e154cb07b79874adb98 Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Wed, 29 Mar 2023 22:25:59 +0000 Subject: [PATCH 2/3] Create system modules using .txt stubs Create a parallel set of java_system_modules provided by the SDK. This parallel set will build using stubs of core libraries generated from .txt files. Since stub generation from .txt is not available at ToT yet, these modules have been marked "enabled: false". decodeSdkDep will be updated to use these systemModules behind a flag. (Will create java_system_modules for core_platform in a future CL) Test: None (will test when the enabled flag is turned on) Change-Id: Idd89d656fcbc87e8698fe05d65a685ade4488546 --- java/core-libraries/Android.bp | 4 ++ java/core-libraries/TxtStubLibraries.bp | 84 +++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 java/core-libraries/TxtStubLibraries.bp diff --git a/java/core-libraries/Android.bp b/java/core-libraries/Android.bp index 372502d41..128829ec0 100644 --- a/java/core-libraries/Android.bp +++ b/java/core-libraries/Android.bp @@ -357,3 +357,7 @@ java_system_modules { "art-module-intra-core-api-stubs-system-modules-lib", ], } + +build = [ + "TxtStubLibraries.bp", +] diff --git a/java/core-libraries/TxtStubLibraries.bp b/java/core-libraries/TxtStubLibraries.bp new file mode 100644 index 000000000..0046d682e --- /dev/null +++ b/java/core-libraries/TxtStubLibraries.bp @@ -0,0 +1,84 @@ +// Copyright (C) 2023 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file contains java_system_modules provided by the SDK. +// These system modules transitively depend on core stub libraries generated from .txt files. + +// Same as core-public-stubs-system-modules, but the stubs are generated from .txt files +java_system_modules { + name: "core-public-stubs-system-modules.from-text", + visibility: ["//visibility:public"], + libs: [ + "core-current-stubs-for-system-modules-no-annotations.from-text", + ], + // TODO: Enable after stub generation from .txt file is available + enabled: false, +} + +java_library { + name: "core-current-stubs-for-system-modules-no-annotations.from-text", + visibility: ["//visibility:private"], + defaults: [ + "system-modules-no-annotations", + ], + static_libs: [ + "core.current.stubs.from-txt", + "core-lambda-stubs-for-system-modules", + ], + // TODO: Enable after stub generation from .txt file is available + enabled: false, +} + +// Same as core-module-lib-stubs-system-modules, but the stubs are generated from .txt files +java_system_modules { + name: "core-module-lib-stubs-system-modules.from-text", + visibility: ["//visibility:public"], + libs: [ + "core-module-lib-stubs-for-system-modules-no-annotations.from-text", + ], + // TODO: Enable after stub generation from .txt file is available + enabled: false, +} + +java_library { + name: "core-module-lib-stubs-for-system-modules-no-annotations.from-text", + visibility: ["//visibility:private"], + defaults: [ + "system-modules-no-annotations", + ], + static_libs: [ + "core.module_lib.stubs.txt", + "core-lambda-stubs-for-system-modules", + ], + // TODO: Enable after stub generation from .txt file is available + enabled: false, +} + +java_library { + name: "core.module_lib.stubs.from-text", + static_libs: [ + "art.module.public.api.stubs.module_lib.from-text", + + // Replace the following with the module-lib correspondence when Conscrypt or i18N module + // provides @SystemApi(MODULE_LIBRARIES). Currently, assume that only ART module provides + // @SystemApi(MODULE_LIBRARIES). + "conscrypt.module.public.api.stubs.from-text", + "i18n.module.public.api.stubs.from-text", + ], + sdk_version: "none", + system_modules: "none", + visibility: ["//visibility:private"], + // TODO: Enable after stub generation from .txt file is available + enabled: false, +} From a032c3532090553f1798d4bf56fb9ef045d44f66 Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Wed, 29 Mar 2023 23:44:06 +0000 Subject: [PATCH 3/3] Create core_platform system modules from .txt files Create a parallel set of java_system_modules that build using stubs from .txt files. decodeSdkDep will be updated to use these system modules behind a flag. Since stub generation from .txt is not available at ToT yet, these modules have been marked "enabled: false" Test: None (will test when the enabled flag is turned on) Change-Id: Ie9d465f5542a5430f03ba2e0861325011ac8e8c5 --- java/core-libraries/TxtStubLibraries.bp | 58 +++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/java/core-libraries/TxtStubLibraries.bp b/java/core-libraries/TxtStubLibraries.bp index 0046d682e..b63ce4204 100644 --- a/java/core-libraries/TxtStubLibraries.bp +++ b/java/core-libraries/TxtStubLibraries.bp @@ -82,3 +82,61 @@ java_library { // TODO: Enable after stub generation from .txt file is available enabled: false, } + +// Same as legacy-core-platform-api-stubs-system-modules, but the stubs are generated from .txt files +java_system_modules { + name: "legacy-core-platform-api-stubs-system-modules.from-text", + visibility: core_platform_visibility, + libs: [ + "legacy.core.platform.api.no.annotations.stubs.from-text", + "core-lambda-stubs-for-system-modules", + ], + // TODO: Enable after stub generation from .txt file is available + enabled: false, +} + +java_library { + name: "legacy.core.platform.api.no.annotations.stubs.from-text", + visibility: core_platform_visibility, + defaults: [ + "system-modules-no-annotations", + ], + hostdex: true, + compile_dex: true, + + static_libs: [ + "legacy.core.platform.api.stubs.from-text", + ], + patch_module: "java.base", + // TODO: Enable after stub generation from .txt file is available + enabled: false, +} + +// Same as stable-core-platform-api-stubs-system-modules, but the stubs are generated from .txt files +java_system_modules { + name: "stable-core-platform-api-stubs-system-modules.from-text", + visibility: core_platform_visibility, + libs: [ + "stable.core.platform.api.no.annotations.stubs.from-text", + "core-lambda-stubs-for-system-modules", + ], + // TODO: Enable after stub generation from .txt file is available + enabled: false, +} + +java_library { + name: "stable.core.platform.api.no.annotations.stubs.from-text", + visibility: core_platform_visibility, + defaults: [ + "system-modules-no-annotations", + ], + hostdex: true, + compile_dex: true, + + static_libs: [ + "stable.core.platform.api.stubs.from-text", + ], + patch_module: "java.base", + // TODO: Enable after stub generation from .txt file is available + enabled: false, +}