[yocto] Makefile library and debian naming
Guy Morand
guy at guy-morand.ch
Tue Nov 21 05:00:50 PST 2017
Hallo Yocto developpers!
I'm trying to build a Makefile based library. The recipe looks like this:
---[recipe mesages.bb]---
# SNIP recipe header
do_compile() {
oe_runmake LDFLAGS="${LDFLAGS}" shared-lib
oe_runmake LDFLAGS="${LDFLAGS}" static-lib
}
do_install() {
oe_runmake install DESTDIR=${D}${prefix}
# Fix pkg-config
sed -i 's,${D},,g' ${D}/usr/lib/pkgconfig/messages.pc
# FIXME: Try to make a debian package libmessages instead
# This avoids errors when installing an app linking with this library!
rm ${D}/${libdir}/lib${PN}.so
}
---[/recipe mesages.bb]---
The resulted image in WORKDIR looks like this:
---[WORKDIR/image]---
image/usr/lib/libmessages.so.0.3.0
image/usr/lib/libmessages.so.0
image/usr/lib/libmessages.a
image/usr/lib/pkgconfig/messages.pc
image/usr/include/messages/<all my headers>
---[/WORKDIR/image]---
The generated ipk packages are:
---[ipks]---
messages-dev_git.ipk
messages_git.ipk
messages-staticdev_git.ipk
messages-dbg_git.ipk
---[/ipks]---
The problem is that an application compiled with this library links
against the static library. If I don't remove the .so file from the
recipe, my application fails installing:
---[bitbake error]---
ERROR: myApp do_package_qa: QA Issue: /usr/bin/myApp contained in
package myApp requires libmessages.so, but no providers found in
RDEPENDS_myApp? [file-rdeps]
---[/bitbake error]---
Probably because the .so gets packed in the messages-dev.ipk ...
The strange thing is that I would expect a generated ipk with debian
naming such as:
libmessages_git.ipk
libmessages-dbg_git.ipk
libmessages-dev_git.ipk
libmessages-staticdev_git.ipk
I have other libraries based on cmake and everything works as expected!
Despite the recipe already inherits "debian", explicitly inheriting this
class doesn't help.
What am I doing wrong?
Guy Morand
More information about the yocto
mailing list