Loading apex/apex.go +7 −4 Original line number Diff line number Diff line Loading @@ -2067,8 +2067,15 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, switch depTag { case sharedLibTag, jniLibTag: isJniLib := depTag == jniLibTag propertyName := "native_shared_libs" if isJniLib { propertyName = "jni_libs" } switch ch := child.(type) { case *cc.Module: if ch.IsStubs() { ctx.PropertyErrorf(propertyName, "%q is a stub. Remove it from the list.", depName) } fi := apexFileForNativeLibrary(ctx, ch, vctx.handleSpecialLibs) fi.isJniLib = isJniLib vctx.filesInfo = append(vctx.filesInfo, fi) Loading @@ -2086,10 +2093,6 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, vctx.filesInfo = append(vctx.filesInfo, fi) return true // track transitive dependencies default: propertyName := "native_shared_libs" if isJniLib { propertyName = "jni_libs" } ctx.PropertyErrorf(propertyName, "%q is not a cc_library or cc_library_shared module", depName) } case executableTag: Loading apex/apex_test.go +27 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import ( "testing" "android/soong/aconfig/codegen" "github.com/google/blueprint" "github.com/google/blueprint/proptools" Loading Loading @@ -960,6 +961,32 @@ func TestApexWithStubs(t *testing.T) { ensureListContains(t, names(apexManifestRule.Args["requireNativeLibs"]), "libfoo.shared_from_rust.so") } func TestApexShouldNotEmbedStubVariant(t *testing.T) { testApexError(t, `module "myapex" .*: native_shared_libs: "libbar" is a stub`, ` apex { name: "myapex", key: "myapex.key", vendor: true, updatable: false, native_shared_libs: ["libbar"], // should not add an LLNDK stub in a vendor apex } apex_key { name: "myapex.key", public_key: "testkey.avbpubkey", private_key: "testkey.pem", } cc_library { name: "libbar", srcs: ["mylib.cpp"], llndk: { symbol_file: "libbar.map.txt", } } `) } func TestApexCanUsePrivateApis(t *testing.T) { ctx := testApex(t, ` apex { Loading Loading
apex/apex.go +7 −4 Original line number Diff line number Diff line Loading @@ -2067,8 +2067,15 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, switch depTag { case sharedLibTag, jniLibTag: isJniLib := depTag == jniLibTag propertyName := "native_shared_libs" if isJniLib { propertyName = "jni_libs" } switch ch := child.(type) { case *cc.Module: if ch.IsStubs() { ctx.PropertyErrorf(propertyName, "%q is a stub. Remove it from the list.", depName) } fi := apexFileForNativeLibrary(ctx, ch, vctx.handleSpecialLibs) fi.isJniLib = isJniLib vctx.filesInfo = append(vctx.filesInfo, fi) Loading @@ -2086,10 +2093,6 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, vctx.filesInfo = append(vctx.filesInfo, fi) return true // track transitive dependencies default: propertyName := "native_shared_libs" if isJniLib { propertyName = "jni_libs" } ctx.PropertyErrorf(propertyName, "%q is not a cc_library or cc_library_shared module", depName) } case executableTag: Loading
apex/apex_test.go +27 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import ( "testing" "android/soong/aconfig/codegen" "github.com/google/blueprint" "github.com/google/blueprint/proptools" Loading Loading @@ -960,6 +961,32 @@ func TestApexWithStubs(t *testing.T) { ensureListContains(t, names(apexManifestRule.Args["requireNativeLibs"]), "libfoo.shared_from_rust.so") } func TestApexShouldNotEmbedStubVariant(t *testing.T) { testApexError(t, `module "myapex" .*: native_shared_libs: "libbar" is a stub`, ` apex { name: "myapex", key: "myapex.key", vendor: true, updatable: false, native_shared_libs: ["libbar"], // should not add an LLNDK stub in a vendor apex } apex_key { name: "myapex.key", public_key: "testkey.avbpubkey", private_key: "testkey.pem", } cc_library { name: "libbar", srcs: ["mylib.cpp"], llndk: { symbol_file: "libbar.map.txt", } } `) } func TestApexCanUsePrivateApis(t *testing.T) { ctx := testApex(t, ` apex { Loading