Merge "Allow dependencies from platform variants to APEX modules." am: f8c9713fb8
am: 3311c129d4
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1654679 Change-Id: I0a7909f63188596a5d5435258f4123b1e7ff9ae5
This commit is contained in:
commit
2e9cf54e07
14
apex/apex.go
14
apex/apex.go
|
@ -1049,6 +1049,16 @@ func apexMutator(mctx android.BottomUpMutatorContext) {
|
|||
if a, ok := mctx.Module().(*apexBundle); ok && !a.vndkApex {
|
||||
apexBundleName := mctx.ModuleName()
|
||||
mctx.CreateVariations(apexBundleName)
|
||||
if strings.HasPrefix(apexBundleName, "com.android.art") {
|
||||
// Create an alias from the platform variant. This is done to make
|
||||
// test_for dependencies work for modules that are split by the APEX
|
||||
// mutator, since test_for dependencies always go to the platform variant.
|
||||
// This doesn't happen for normal APEXes that are disjunct, so only do
|
||||
// this for the overlapping ART APEXes.
|
||||
// TODO(b/183882457): Remove this if the test_for functionality is
|
||||
// refactored to depend on the proper APEX variants instead of platform.
|
||||
mctx.CreateAliasVariation("", apexBundleName)
|
||||
}
|
||||
} else if o, ok := mctx.Module().(*OverrideApex); ok {
|
||||
apexBundleName := o.GetOverriddenModuleName()
|
||||
if apexBundleName == "" {
|
||||
|
@ -1056,6 +1066,10 @@ func apexMutator(mctx android.BottomUpMutatorContext) {
|
|||
return
|
||||
}
|
||||
mctx.CreateVariations(apexBundleName)
|
||||
if strings.HasPrefix(apexBundleName, "com.android.art") {
|
||||
// TODO(b/183882457): See note for CreateAliasVariation above.
|
||||
mctx.CreateAliasVariation("", apexBundleName)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6894,6 +6894,56 @@ func TestIndirectTestFor(t *testing.T) {
|
|||
ensureLinkedLibIs("myprivlib", "android_arm64_armv8-a_shared", "out/soong/.intermediates/mylib/", "android_arm64_armv8-a_shared/mylib.so")
|
||||
}
|
||||
|
||||
func TestTestForForLibInOtherApex(t *testing.T) {
|
||||
// This case is only allowed for known overlapping APEXes, i.e. the ART APEXes.
|
||||
_ = testApex(t, `
|
||||
apex {
|
||||
name: "com.android.art",
|
||||
key: "myapex.key",
|
||||
native_shared_libs: ["mylib"],
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
apex {
|
||||
name: "com.android.art.debug",
|
||||
key: "myapex.key",
|
||||
native_shared_libs: ["mylib", "mytestlib"],
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "mylib",
|
||||
srcs: ["mylib.cpp"],
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
stubs: {
|
||||
versions: ["1"],
|
||||
},
|
||||
apex_available: ["com.android.art", "com.android.art.debug"],
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "mytestlib",
|
||||
srcs: ["mylib.cpp"],
|
||||
system_shared_libs: [],
|
||||
shared_libs: ["mylib"],
|
||||
stl: "none",
|
||||
apex_available: ["com.android.art.debug"],
|
||||
test_for: ["com.android.art"],
|
||||
}
|
||||
`,
|
||||
android.MockFS{
|
||||
"system/sepolicy/apex/com.android.art-file_contexts": nil,
|
||||
"system/sepolicy/apex/com.android.art.debug-file_contexts": nil,
|
||||
}.AddToFixture())
|
||||
}
|
||||
|
||||
// TODO(jungjw): Move this to proptools
|
||||
func intPtr(i int) *int {
|
||||
return &i
|
||||
|
|
Loading…
Reference in New Issue