[yocto] IPK naming oddity for ipkg's containing archived ${PN}-dev files

Khem Raj raj.khem at gmail.com
Tue Sep 24 13:35:34 PDT 2013


On Sep 24, 2013, at 1:17 PM, Glenn Schmottlach <gschmottlach at gmail.com> wrote:

> I've run across what appears to be a naming inconsistency (not sure if it's intentional or a bug) that seems to impact the name given to the ipk file for recipe's "dev" files.
> 
> 
> Let me be more clear. My recipe produces a shared object library called:
> 
> libtts_engine.so

may be this should be something libtts_engine.so.X and libtts_engine.so is then a symlink to it which is commonly the
case with shared libraries

> 
> This shared library is deployed in /usr/lib and the package-split directory structure looks like the following in my recipe workdir:
> 
> package-split/tts-sdk-dev
> package-split/tts-sdk-dev/usr
> package-split/tts-sdk-dev/usr/lib
> package-split/tts-sdk-dev/usr/lib/libtts_engine.so
> package-split/tts-sdk-dev/usr/include
> package-split/tts-sdk-dev/usr/include/tts.h
> 
> So, when Yocto generates my ipk archive I would expect it to be named something like:
> 
> tts-sdk-dev_${PV}_${PACKAGE_ARCH}.ipk
> 
> Instead, Yocto is generating the following name for the "dev" ipk:
> 
> libtts_engine-dev_${PV}_${PACKAGE_ARCH}.ipk

this is because of debian library naming. see http://www.debian.org/doc/debian-policy/ch-sharedlibs.html
and http://www.v7w.com/debian/libpkg-guide.html#naminglibpkg

> 
> This is *not* consistent with how the other ipk are named by Yocto, e.g.
> 
> tts-sdk_${PV}_${PACKAGE_ARCH}.ipk
> tts-sdk-doc_${PV}_${PACKAGE_ARCH}.ipk
> tts-sdk-dbg_${PV}_${PACKAGE_ARCH}.ipk
> 
> In the poky class file (package_ipk.bbclass) I looked at the do_package_ipk() python function and see that there is an explicit query for the following variable to determine the base name of the ipk file:
> 
> pkgname = localdata.getVar('PKG_%s' % pkg, True)
> 
> In most cases, this look-up returns the expected name, e.g. tts-sdk-doc, tts-sdk-dbg, etc.... But for some reason, the "dev" package name is remapped from tts-sdk to libtts_engine. My only counter-measure to correct this is to add the following explicit assignment in my recipe:
> 
> PKG_${PN}-dev = "${PN}-dev"
> 
> This seems to "correct" the name. Can anyone explain to me the behavior I am observing? Is there some reason the "dev" package (and only the "dev" package) is named differently when the ipk is created. Am I breaking an expected behavior by forcing it to use the more consistent tts-sdk-dev_${PV}_${PACKAGE_ARCH}.ipk name? I can't find any documentation that answers this question.
> 
> Thanks . . .
> _______________________________________________
> yocto mailing list
> yocto at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto




More information about the yocto mailing list