diff options
author | Spandan Das <spandandas@google.com> | 2024-02-13 13:52:46 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2024-02-13 13:52:46 +0000 |
commit | d4ea469555b485c7fde33edafe232fa156bf0db2 (patch) | |
tree | e78f89383a4acfffdc342c177a74858920e4f232 /api | |
parent | e30d2a6184f53361801a28ad2eee80329ecb7328 (diff) | |
parent | 4671ab97f1185d7a8b78bfbdaeeb95ca3935de40 (diff) | |
download | base-d4ea469555b485c7fde33edafe232fa156bf0db2.tar.gz |
Merge "Enforce bcp/sscp stubs do not compile against apps" into main am: 4671ab97f1
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2957852
Change-Id: I566953cbecf3d4140708d7603d55f7f7941c09e9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'api')
-rw-r--r-- | api/api.go | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/api/api.go b/api/api.go index c733f5b5bffd..e8858230ba4e 100644 --- a/api/api.go +++ b/api/api.go @@ -79,7 +79,45 @@ func registerBuildComponents(ctx android.RegistrationContext) { var PrepareForCombinedApisTest = android.FixtureRegisterWithContext(registerBuildComponents) +func (a *CombinedApis) apiFingerprintStubDeps() []string { + ret := []string{} + ret = append( + ret, + transformArray(a.properties.Bootclasspath, "", ".stubs")..., + ) + ret = append( + ret, + transformArray(a.properties.Bootclasspath, "", ".stubs.system")..., + ) + ret = append( + ret, + transformArray(a.properties.Bootclasspath, "", ".stubs.module_lib")..., + ) + ret = append( + ret, + transformArray(a.properties.System_server_classpath, "", ".stubs.system_server")..., + ) + return ret +} + +func (a *CombinedApis) DepsMutator(ctx android.BottomUpMutatorContext) { + ctx.AddDependency(ctx.Module(), nil, a.apiFingerprintStubDeps()...) +} + func (a *CombinedApis) GenerateAndroidBuildActions(ctx android.ModuleContext) { + ctx.WalkDeps(func(child, parent android.Module) bool { + if _, ok := child.(java.AndroidLibraryDependency); ok && child.Name() != "framework-res" { + // Stubs of BCP and SSCP libraries should not have any dependencies on apps + // This check ensures that we do not run into circular dependencies when UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT=true + ctx.ModuleErrorf( + "Module %s is not a valid dependency of the stub library %s\n."+ + "If this dependency has been added via `libs` of java_sdk_library, please move it to `impl_only_libs`\n", + child.Name(), parent.Name()) + return false // error detected + } + return true + }) + } type genruleProps struct { |