Loading apex/apex.go +2 −2 Original line number Diff line number Diff line Loading @@ -932,7 +932,7 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) { } } else { // indirect dependencies if am, ok := child.(android.ApexModule); ok && am.CanHaveApexVariants() && am.IsInstallableToApex() { if am, ok := child.(android.ApexModule); ok { // We cannot use a switch statement on `depTag` here as the checked // tags used below are private (e.g. `cc.sharedDepTag`). if cc.IsSharedDepTag(depTag) || cc.IsRuntimeDepTag(depTag) { Loading Loading @@ -972,7 +972,7 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) { filesInfo = append(filesInfo, apexFile{fileToCopy, moduleName, dirInApex, nativeTest, cc, nil}) return true } } else { } else if am.CanHaveApexVariants() && am.IsInstallableToApex() { ctx.ModuleErrorf("unexpected tag %q for indirect dependency %q", depTag, depName) } } Loading apex/apex_test.go +52 −0 Original line number Diff line number Diff line Loading @@ -714,6 +714,58 @@ func TestApexWithRuntimeLibsDependency(t *testing.T) { } func TestApexDependencyToLLNDK(t *testing.T) { ctx, _ := testApex(t, ` apex { name: "myapex", key: "myapex.key", use_vendor: true, native_shared_libs: ["mylib"], } apex_key { name: "myapex.key", public_key: "testkey.avbpubkey", private_key: "testkey.pem", } cc_library { name: "mylib", srcs: ["mylib.cpp"], vendor_available: true, shared_libs: ["libbar"], system_shared_libs: [], stl: "none", } cc_library { name: "libbar", srcs: ["mylib.cpp"], system_shared_libs: [], stl: "none", } llndk_library { name: "libbar", symbol_file: "", } `) apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that LLNDK dep is not included ensureNotContains(t, copyCmds, "image.apex/lib64/libbar.so") injectRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("injectApexDependency") ensureListEmpty(t, names(injectRule.Args["provideNativeLibs"])) // Ensure that LLNDK dep is required ensureListContains(t, names(injectRule.Args["requireNativeLibs"]), "libbar.so") } func TestApexWithSystemLibsStubs(t *testing.T) { ctx, _ := testApex(t, ` apex { Loading Loading
apex/apex.go +2 −2 Original line number Diff line number Diff line Loading @@ -932,7 +932,7 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) { } } else { // indirect dependencies if am, ok := child.(android.ApexModule); ok && am.CanHaveApexVariants() && am.IsInstallableToApex() { if am, ok := child.(android.ApexModule); ok { // We cannot use a switch statement on `depTag` here as the checked // tags used below are private (e.g. `cc.sharedDepTag`). if cc.IsSharedDepTag(depTag) || cc.IsRuntimeDepTag(depTag) { Loading Loading @@ -972,7 +972,7 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) { filesInfo = append(filesInfo, apexFile{fileToCopy, moduleName, dirInApex, nativeTest, cc, nil}) return true } } else { } else if am.CanHaveApexVariants() && am.IsInstallableToApex() { ctx.ModuleErrorf("unexpected tag %q for indirect dependency %q", depTag, depName) } } Loading
apex/apex_test.go +52 −0 Original line number Diff line number Diff line Loading @@ -714,6 +714,58 @@ func TestApexWithRuntimeLibsDependency(t *testing.T) { } func TestApexDependencyToLLNDK(t *testing.T) { ctx, _ := testApex(t, ` apex { name: "myapex", key: "myapex.key", use_vendor: true, native_shared_libs: ["mylib"], } apex_key { name: "myapex.key", public_key: "testkey.avbpubkey", private_key: "testkey.pem", } cc_library { name: "mylib", srcs: ["mylib.cpp"], vendor_available: true, shared_libs: ["libbar"], system_shared_libs: [], stl: "none", } cc_library { name: "libbar", srcs: ["mylib.cpp"], system_shared_libs: [], stl: "none", } llndk_library { name: "libbar", symbol_file: "", } `) apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") copyCmds := apexRule.Args["copy_commands"] // Ensure that LLNDK dep is not included ensureNotContains(t, copyCmds, "image.apex/lib64/libbar.so") injectRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("injectApexDependency") ensureListEmpty(t, names(injectRule.Args["provideNativeLibs"])) // Ensure that LLNDK dep is required ensureListContains(t, names(injectRule.Args["requireNativeLibs"]), "libbar.so") } func TestApexWithSystemLibsStubs(t *testing.T) { ctx, _ := testApex(t, ` apex { Loading