[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