Enforce the legacy core/platform API restriction.
This change silently decides whether modules which depend on either
sdkPrivate or sdkCorePlatform get the legacy or the stable version of
the core/platform API, based on whether the module's name is on a
hard-coded list or not.
Test: m java
Test: make a target from the list when its entry is commented out, which correctly fails
Bug: 157640067
Change-Id: I15e5a6c2f07e73718803501d705de0d7ab9bec90
Merged-In: I15e5a6c2f07e73718803501d705de0d7ab9bec90
Merged-In: Iaa97ddaa015e8079fcb3426585c5101c7ec9e22a
(cherry picked from commit c0f4373106
)
This commit is contained in:
parent
0bcda81dd5
commit
84c3807b99
|
@ -38,6 +38,7 @@ bootstrap_go_package {
|
|||
"java_resources.go",
|
||||
"kotlin.go",
|
||||
"lint.go",
|
||||
"legacy_core_platform_api_usage.go",
|
||||
"platform_compat_config.go",
|
||||
"plugin.go",
|
||||
"prebuilt_apis.go",
|
||||
|
|
|
@ -30,6 +30,8 @@ var (
|
|||
|
||||
LegacyCorePlatformBootclasspathLibraries = []string{"legacy.core.platform.api.stubs", "core-lambda-stubs"}
|
||||
LegacyCorePlatformSystemModules = "legacy-core-platform-api-stubs-system-modules"
|
||||
StableCorePlatformBootclasspathLibraries = []string{"stable.core.platform.api.stubs", "core-lambda-stubs"}
|
||||
StableCorePlatformSystemModules = "stable-core-platform-api-stubs-system-modules"
|
||||
FrameworkLibraries = []string{"ext", "framework"}
|
||||
DefaultLambdaStubsLibrary = "core-lambda-stubs"
|
||||
SdkLambdaStubsPath = "prebuilts/sdk/tools/core-lambda-stubs.jar"
|
||||
|
|
|
@ -0,0 +1,161 @@
|
|||
// Copyright 2020 Google Inc. All rights reserved.
|
||||
//
|
||||
// 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.
|
||||
|
||||
package java
|
||||
|
||||
import (
|
||||
"android/soong/android"
|
||||
"android/soong/java/config"
|
||||
)
|
||||
|
||||
var legacyCorePlatformApiModules = []string{
|
||||
"ahat-test-dump",
|
||||
"android.car",
|
||||
"android.test.mock",
|
||||
"android.test.mock.impl",
|
||||
"AoapTestDeviceApp",
|
||||
"AoapTestHostApp",
|
||||
"api-stubs-docs",
|
||||
"art_cts_jvmti_test_library",
|
||||
"art-gtest-jars-MyClassNatives",
|
||||
"BackupFrameworksServicesRoboTests",
|
||||
"BandwidthEnforcementTest",
|
||||
"BlockedNumberProvider",
|
||||
"BluetoothInstrumentationTests",
|
||||
"BluetoothMidiService",
|
||||
"car-apps-common",
|
||||
"CertInstaller",
|
||||
"ConnectivityManagerTest",
|
||||
"ContactsProvider",
|
||||
"core-tests-support",
|
||||
"CtsContentTestCases",
|
||||
"CtsIkeTestCases",
|
||||
"CtsLibcoreWycheproofBCTestCases",
|
||||
"CtsMediaTestCases",
|
||||
"CtsNetTestCases",
|
||||
"CtsNetTestCasesLatestSdk",
|
||||
"CtsSecurityTestCases",
|
||||
"CtsUsageStatsTestCases",
|
||||
"DisplayCutoutEmulationEmu01Overlay",
|
||||
"DocumentsUIPerfTests",
|
||||
"DocumentsUITests",
|
||||
"DownloadProvider",
|
||||
"DownloadProviderTests",
|
||||
"DownloadProviderUi",
|
||||
"DynamicSystemInstallationService",
|
||||
"EmergencyInfo-lib",
|
||||
"ethernet-service",
|
||||
"EthernetServiceTests",
|
||||
"ExternalStorageProvider",
|
||||
"ExtServices",
|
||||
"ExtServices-core",
|
||||
"framework-all",
|
||||
"framework-minus-apex",
|
||||
"FrameworksCoreTests",
|
||||
"FrameworksIkeTests",
|
||||
"FrameworksNetCommonTests",
|
||||
"FrameworksNetTests",
|
||||
"FrameworksServicesRoboTests",
|
||||
"FrameworksServicesTests",
|
||||
"FrameworksUtilTests",
|
||||
"hid",
|
||||
"hidl_test_java_java",
|
||||
"hwbinder",
|
||||
"ims",
|
||||
"KeyChain",
|
||||
"ksoap2",
|
||||
"LocalTransport",
|
||||
"lockagent",
|
||||
"mediaframeworktest",
|
||||
"MediaProvider",
|
||||
"MmsService",
|
||||
"MtpDocumentsProvider",
|
||||
"MultiDisplayProvider",
|
||||
"NetworkStackIntegrationTestsLib",
|
||||
"NetworkStackNextIntegrationTests",
|
||||
"NetworkStackNextTests",
|
||||
"NetworkStackTests",
|
||||
"NetworkStackTestsLib",
|
||||
"NfcNci",
|
||||
"platform_library-docs",
|
||||
"PrintSpooler",
|
||||
"RollbackTest",
|
||||
"services",
|
||||
"services.accessibility",
|
||||
"services.backup",
|
||||
"services.core.unboosted",
|
||||
"services.devicepolicy",
|
||||
"services.print",
|
||||
"services.usage",
|
||||
"services.usb",
|
||||
"Settings-core",
|
||||
"SettingsLib",
|
||||
"SettingsProvider",
|
||||
"SettingsProviderTest",
|
||||
"Shell",
|
||||
"ShellTests",
|
||||
"sl4a.Common",
|
||||
"StatementService",
|
||||
"SystemUI-core",
|
||||
"SystemUISharedLib",
|
||||
"SystemUI-tests",
|
||||
"Telecom",
|
||||
"TelecomUnitTests",
|
||||
"telephony-common",
|
||||
"TelephonyProvider",
|
||||
"TelephonyProviderTests",
|
||||
"TeleService",
|
||||
"testables",
|
||||
"TetheringTests",
|
||||
"TetheringTestsLib",
|
||||
"time_zone_distro_installer",
|
||||
"time_zone_distro_installer-tests",
|
||||
"time_zone_distro-tests",
|
||||
"time_zone_updater",
|
||||
"TvProvider",
|
||||
"uiautomator-stubs-docs",
|
||||
"UsbHostExternalManagementTestApp",
|
||||
"UserDictionaryProvider",
|
||||
"WallpaperBackup",
|
||||
"wifi-service",
|
||||
}
|
||||
|
||||
var legacyCorePlatformApiLookup = make(map[string]struct{})
|
||||
|
||||
func init() {
|
||||
for _, module := range legacyCorePlatformApiModules {
|
||||
legacyCorePlatformApiLookup[module] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
func useLegacyCorePlatformApi(ctx android.EarlyModuleContext) bool {
|
||||
_, found := legacyCorePlatformApiLookup[ctx.ModuleName()]
|
||||
return found
|
||||
}
|
||||
|
||||
func corePlatformSystemModules(ctx android.EarlyModuleContext) string {
|
||||
if useLegacyCorePlatformApi(ctx) {
|
||||
return config.LegacyCorePlatformSystemModules
|
||||
} else {
|
||||
return config.StableCorePlatformSystemModules
|
||||
}
|
||||
}
|
||||
|
||||
func corePlatformBootclasspathLibraries(ctx android.EarlyModuleContext) []string {
|
||||
if useLegacyCorePlatformApi(ctx) {
|
||||
return config.LegacyCorePlatformBootclasspathLibraries
|
||||
} else {
|
||||
return config.StableCorePlatformBootclasspathLibraries
|
||||
}
|
||||
}
|
|
@ -413,8 +413,8 @@ func decodeSdkDep(ctx android.EarlyModuleContext, sdkContext sdkContext) sdkDep
|
|||
case sdkPrivate:
|
||||
return sdkDep{
|
||||
useModule: true,
|
||||
systemModules: config.LegacyCorePlatformSystemModules,
|
||||
bootclasspath: config.LegacyCorePlatformBootclasspathLibraries,
|
||||
systemModules: corePlatformSystemModules(ctx),
|
||||
bootclasspath: corePlatformBootclasspathLibraries(ctx),
|
||||
classpath: config.FrameworkLibraries,
|
||||
frameworkResModule: "framework-res",
|
||||
}
|
||||
|
@ -438,8 +438,8 @@ func decodeSdkDep(ctx android.EarlyModuleContext, sdkContext sdkContext) sdkDep
|
|||
case sdkCorePlatform:
|
||||
return sdkDep{
|
||||
useModule: true,
|
||||
systemModules: config.LegacyCorePlatformSystemModules,
|
||||
bootclasspath: config.LegacyCorePlatformBootclasspathLibraries,
|
||||
systemModules: corePlatformSystemModules(ctx),
|
||||
bootclasspath: corePlatformBootclasspathLibraries(ctx),
|
||||
noFrameworksLibs: true,
|
||||
}
|
||||
case sdkPublic:
|
||||
|
|
|
@ -49,8 +49,8 @@ func TestClasspath(t *testing.T) {
|
|||
}{
|
||||
{
|
||||
name: "default",
|
||||
bootclasspath: config.LegacyCorePlatformBootclasspathLibraries,
|
||||
system: config.LegacyCorePlatformSystemModules,
|
||||
bootclasspath: config.StableCorePlatformBootclasspathLibraries,
|
||||
system: config.StableCorePlatformSystemModules,
|
||||
java8classpath: config.FrameworkLibraries,
|
||||
java9classpath: config.FrameworkLibraries,
|
||||
aidl: "-Iframework/aidl",
|
||||
|
@ -58,16 +58,16 @@ func TestClasspath(t *testing.T) {
|
|||
{
|
||||
name: `sdk_version:"core_platform"`,
|
||||
properties: `sdk_version:"core_platform"`,
|
||||
bootclasspath: config.LegacyCorePlatformBootclasspathLibraries,
|
||||
system: config.LegacyCorePlatformSystemModules,
|
||||
bootclasspath: config.StableCorePlatformBootclasspathLibraries,
|
||||
system: config.StableCorePlatformSystemModules,
|
||||
java8classpath: []string{},
|
||||
aidl: "",
|
||||
},
|
||||
{
|
||||
name: "blank sdk version",
|
||||
properties: `sdk_version: "",`,
|
||||
bootclasspath: config.LegacyCorePlatformBootclasspathLibraries,
|
||||
system: config.LegacyCorePlatformSystemModules,
|
||||
bootclasspath: config.StableCorePlatformBootclasspathLibraries,
|
||||
system: config.StableCorePlatformSystemModules,
|
||||
java8classpath: config.FrameworkLibraries,
|
||||
java9classpath: config.FrameworkLibraries,
|
||||
aidl: "-Iframework/aidl",
|
||||
|
@ -155,9 +155,9 @@ func TestClasspath(t *testing.T) {
|
|||
{
|
||||
|
||||
name: "nostdlib system_modules",
|
||||
properties: `sdk_version: "none", system_modules: "legacy-core-platform-api-stubs-system-modules"`,
|
||||
system: "legacy-core-platform-api-stubs-system-modules",
|
||||
bootclasspath: []string{"legacy-core-platform-api-stubs-system-modules-lib"},
|
||||
properties: `sdk_version: "none", system_modules: "stable-core-platform-api-stubs-system-modules"`,
|
||||
system: "stable-core-platform-api-stubs-system-modules",
|
||||
bootclasspath: []string{"stable-core-platform-api-stubs-system-modules-lib"},
|
||||
java8classpath: []string{},
|
||||
},
|
||||
{
|
||||
|
|
|
@ -136,7 +136,7 @@ func GatherRequiredDepsForTest() string {
|
|||
name: "%s",
|
||||
srcs: ["a.java"],
|
||||
sdk_version: "none",
|
||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
||||
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||
}
|
||||
`, extra)
|
||||
}
|
||||
|
@ -146,7 +146,7 @@ func GatherRequiredDepsForTest() string {
|
|||
name: "framework",
|
||||
srcs: ["a.java"],
|
||||
sdk_version: "none",
|
||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
||||
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||
aidl: {
|
||||
export_include_dirs: ["framework/aidl"],
|
||||
},
|
||||
|
@ -161,7 +161,7 @@ func GatherRequiredDepsForTest() string {
|
|||
name: "android.hidl.base-V1.0-java",
|
||||
srcs: ["a.java"],
|
||||
sdk_version: "none",
|
||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
||||
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||
installable: true,
|
||||
}
|
||||
|
||||
|
@ -169,7 +169,7 @@ func GatherRequiredDepsForTest() string {
|
|||
name: "android.hidl.manager-V1.0-java",
|
||||
srcs: ["a.java"],
|
||||
sdk_version: "none",
|
||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
||||
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||
installable: true,
|
||||
}
|
||||
|
||||
|
@ -177,7 +177,7 @@ func GatherRequiredDepsForTest() string {
|
|||
name: "org.apache.http.legacy",
|
||||
srcs: ["a.java"],
|
||||
sdk_version: "none",
|
||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
||||
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||
installable: true,
|
||||
}
|
||||
|
||||
|
@ -185,7 +185,7 @@ func GatherRequiredDepsForTest() string {
|
|||
name: "android.test.base",
|
||||
srcs: ["a.java"],
|
||||
sdk_version: "none",
|
||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
||||
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||
installable: true,
|
||||
}
|
||||
|
||||
|
@ -193,7 +193,7 @@ func GatherRequiredDepsForTest() string {
|
|||
name: "android.test.mock",
|
||||
srcs: ["a.java"],
|
||||
sdk_version: "none",
|
||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
||||
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||
installable: true,
|
||||
}
|
||||
`
|
||||
|
|
|
@ -51,10 +51,10 @@ java_system_modules_import {
|
|||
name: "core-current-stubs-system-modules",
|
||||
}
|
||||
java_system_modules_import {
|
||||
name: "legacy-core-platform-api-stubs-system-modules",
|
||||
name: "stable-core-platform-api-stubs-system-modules",
|
||||
}
|
||||
java_import {
|
||||
name: "legacy.core.platform.api.stubs",
|
||||
name: "stable.core.platform.api.stubs",
|
||||
}
|
||||
java_import {
|
||||
name: "android_stubs_current",
|
||||
|
|
Loading…
Reference in New Issue