Fix bp2build's stub/impl selection logic for platform variants
For a dependency edge A --> B (stublib), Soong will link A's platform variant against impl of B's platform variant if either of these are true 1. A and B have same apex_available 2. B has bootstrap: true 3. B is only available to platform (3) was missing from bp2build. This CL adds that. To implement this, we check the `apex_available` property of B. Test: updated bp2build tests Test: Built the internal module b/299191635 that was failing due to this Bug: 299191635 Change-Id: Iafb173a3ab20d69b89f7949ce40c6f4096396f24
This commit is contained in:
@@ -1624,6 +1624,11 @@ func setStubsForDynamicDeps(ctx android.BazelConversionPathContext, axis bazel.C
|
||||
if linkable, ok := ctx.Module().(LinkableInterface); ok && linkable.Bootstrap() {
|
||||
sameApiDomain = true
|
||||
}
|
||||
// If dependency has `apex_available: ["//apex_available:platform]`, then the platform variant of rdep should link against its impl.
|
||||
// https://cs.android.com/android/_/android/platform/build/soong/+/main:cc/cc.go;l=3617;bpv=1;bpt=0;drc=c6a93d853b37ec90786e745b8d282145e6d3b589
|
||||
if depApexAvailable := dep.(*Module).ApexAvailable(); len(depApexAvailable) == 1 && depApexAvailable[0] == android.AvailableToPlatform {
|
||||
sameApiDomain = true
|
||||
}
|
||||
} else {
|
||||
sameApiDomain = android.InList(apiDomain, dep.(*Module).ApexAvailable())
|
||||
}
|
||||
|
Reference in New Issue
Block a user