I have a Yocto recipe that compiles dynamically linked shared libraries that should be added to the rootfs. Compiling and adding them to rootfs works fine, but QA packaging warnings are resulted.
S = "${WORKDIR}/git"
do_compile () {
make
}
do_install () {
install -m 0755 -d ${D}${libdir}
oe_libinstall -so libA ${D}${libdir}
oe_libinstall -so libB ${D}${libdir}
oe_libinstall -so libC ${D}${libdir}
}
INSANE_SKIP_${PN} = "ldflags"
# RDEPENDS_${PN} = "libB${SOLIBS}"
# RPROVIDES_${PN} = "libB${SOLIBS}"
# FILES_${PN} = "${libdir}/lib*${SOLIBS}"
# INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
# INHIBIT_PACKAGE_STRIP = "1"
The warning is the following:
WARNING: package do_package_qa: QA Issue: /usr/lib/libC.so.1.0.0 contained in package package requires libB.so, but no providers found in RDEPENDS_package? [file-rdeps]
The commented RDEPENDS_${PN} = "libB${SOLIBS}"
doesn't do anything in any way I tried so far.
How can I solve this problem? I don't want to add INSANE_SKIP_${PN} += "file-rdeps"
, I want to resolve the dependency problem.
Just guessing but isn't your recipe installing lib{A,B,C}.so.1.0.0
and they actually need libX.so
(objdump -x /usr/lib/libC.so.1.0.0
, what's in NEEDED
)? In which case, they probably should depend on libX.so.1.0.0
instead, so fix your Makefile/CMakeLists.
I've never seen nor used oe_libinstall
before, could you just use install relative/path/to/libA.so.1.0.0 ${D}${libdir}
instead? Maybe that's oe_libinstall
doing this weird trick?
Also, you probably don't need your manually crafted do_compile, it's already what the basic do_compile does for you (calling make if there's a Makefile available).