bitbakeyocto-recipe

yocto do_package failing with "installed but not shipped in any package"


I am having hell of a time with even the simplest recipe with yocto. I have a closed source set of libs I wish to install. I have created a tar.bz2 file. I have got to the point that bitbake is trying to package my files.

Looking here I need to specify the file / directories to include in the packages. My recipe is

SUMMARY = "zebraScanner Closed-source libraries for SDK"
LICENSE = "CLOSED"

SRC_URI = "file://zebrascanner_4.4.1-44_arm64.tar.bz2"

do_install() {
    echo "WORKDIR ${WORKDIR}"
    echo "UNPACKDIR ${UNPACKDIR}"
    echo "PN ${PN}"
    echo "BP ${BP}"
    echo "S ${S}"
    echo "D ${D}"
    echo "Creating directory ${D}/etc/"
    install -d ${D}/etc
    echo "Creating directory ${D}/usr/lib/zebra-scanner/corescanner"
    install -d ${D}/usr/lib/zebra-scanner/corescanner
    echo "Creating directory ${D}/var"
    install -d ${D}/var

# Copy over files
    cp -a ${UNPACKDIR}/zebrascanner_4.4.1-44_arm64/etc/. ${D}/etc
    cp -a ${UNPACKDIR}/zebrascanner_4.4.1-44_arm64/usr/. ${D}/usr
    cp -a ${UNPACKDIR}/zebrascanner_4.4.1-44_arm64/lib/. ${D}/usr/lib
    cp -a ${UNPACKDIR}/zebrascanner_4.4.1-44_arm64/var/. ${D}/var

# Removing some unwanted files
    rm -r ${D}/usr/share/zebra-scanner/sbin
    rm -r ${D}/usr/share/zebra-scanner/samples

    install -d ${D}/usr/lib/zebra-scanner/corescanner
    cp -a ${UNPACKDIR}/zebrascanner_4.4.1-44_arm64/usr/lib/zebra-scanner/corescanner/. ${D}/usr/lib/zebra-scanner/corescanner
}

INSANE_SKIP:${PN} += "already-stripped"
FILES_${PN} += " /etc/* /usr/lib/* /usr/* /var/* /usr/lib/zebra-scanner /usr/lib/zebra-scanner/* /usr/lib/zebra-scanner/corescanner/*"
FILES_${PN} += " /usr/lib/zebra-scanner/javapos/* /usr/lib/zebra-scanner/javapos/jni/*"
FILES_${PN}-dev += " /usr/share/zebra-scanner/*"
FILES_${PN}-dev += " /usr/share/zebra-scanner/data/*"

if I look in my images directory I can see all the files

$ ls build-raspberrypi-armv8/tmp/work/cortexa53-poky-linux/zebrascanner/1.0/image/usr/lib/zebra-scanner/corescanner/
libcs-client.so        libcs-clientscale.so.4.4.1    libcs-comm.so        libcs-common.so.4.4.1  libcscl-hidkb.so        libcscl-ibmhh.so.4.4.1  libcscl-snapi.so
etc

but when I run the recipe I get the error:

ERROR: zebrascanner-1.0-r0 do_package: QA Issue: zebrascanner: Files/directories were installed but not shipped in any package:
  /usr/lib/zebra-scanner                                                                                                                                                                /usr/lib/zebra-scanner/corescanner                                                                                                                                                    /usr/lib/zebra-scanner/javapos                                                                                                                                                        /usr/lib/zebra-scanner/corescanner/libcs-comm.so                                                                                                                                      /usr/lib/zebra-scanner/corescanner/libcs-clientscanner.so.4.4.1                                                                                                                       /usr/lib/zebra-scanner/corescanner/libcscl-ibmtt.so.4.4.1                                                                                                                             /usr/lib/zebra-scanner/corescanner/libcs-clientscanner.so                                                                                                                             /usr/lib/zebra-scanner/corescanner/libcscl-hidkb.so.4.4.1                                                                                                                             /usr/lib/zebra-scanner/corescanner/libcscl-snapi.so.4.4.1                                                                                                                             /usr/lib/zebra-scanner/corescanner/libcscl-snapi.so                                                                                                                                   /usr/lib/zebra-scanner/corescanner/libcs-client.so                                                                                                                                    /usr/lib/zebra-scanner/corescanner/libcs-comm.so.4.4.1                                                                                                                                /usr/lib/zebra-scanner/corescanner/libcscl-ibmtt.so                                                                                                                                   /usr/lib/zebra-scanner/corescanner/libcscl-ibmhh.so                                                                                                                                   /usr/lib/zebra-scanner/corescanner/libcs-common.so.4.4.1     
...
...

I have tried prepending the paths in FILES_${PN} with ${D} I have tried adding the files individually but no change.

There must be something I am doing that is very basically wrong as everything in the doc looks very easy and simple but yet every-single thing I have tried has been a battle.

EDIT: I have alter my recipe slightly after reading this to try to add more to FILES_{PN} but no joy. Adding:

FILES_${PN} += " /usr/lib/zebra-scanner/corescanner/*${SOLIBS}"
FILES_${PN} += " /usr/lib/zebra-scanner/corescanner/lib*${SOLIBS}"
FILES_${PN} += " /usr/lib/zebra-scanner/corescanner/lib*.so"

and also explicitly some exact libs

FILES_${PN} += " /usr/lib/zebra-scanner/corescanner/libcs-comm.so"
FILES_${PN} += " /usr/lib/zebra-scanner/corescanner/libcs-clientscanner.so.4.4.1"

I can clearly see what FILES_{PN} ends up as but bitbake just doesn't seem to be doing anything with it.

FILES_SOLIBSDEV="/usr/lib/lib*.so /usr/lib/lib*.so"
FILES_zebrascanner="  /usr/lib/zebra-scanner/corescanner/libcs-comm.so  /usr/lib/zebra-scanner/corescanner/libcs-clientscanner.so.4.4.1  /usr/lib/zebra-scanner/corescanner/libcscl-ibmtt.so.4.4.1  /usr/lib/zebra-scanner/corescanner/libcs-clientscanner.so  /usr/lib/zebra-scanner/corescanner/libcscl-hidkb.so.4.4.1  /usr/lib/zebra-scanner/corescanner/libcscl-snapi.so.4.4.1  /usr/lib/zebra-scanner/corescanner/libcscl-snapi.so  /usr/lib/zebra-scanner/corescanner/*.so.*  /usr/lib/zebra-scanner/corescanner/lib*.so.*  /usr/lib/zebra-scanner/corescanner/lib*.so  /etc/* /usr/lib/* /usr/* /var/* /usr/lib/zebra-scanner/* /usr/lib/zebra-scanner/* /usr/lib/zebra-scanner/corescanner/*  /usr/lib/zebra-scanner/javapos/* /usr/lib/zebra-scanner/javapos/jni/*"
FILES_zebrascanner-dev="  /usr/share/zebra-scanner/*  /usr/share/zebra-scanner/data/*"

EDIT: yocto verion

$ cat ../sources/poky/meta-poky/conf/distro/poky.conf |grep DISTRO_VERSION
DISTRO_VERSION = "5.1.2"

bitbake

8$ bitbake --version
BitBake Build Tool Core version 2.9.1

Solution

  • If you're on Yocto Kirkstone or later, it's

    FILES:{PN} += "/etc/* ..."
    

    instead of FILES_{PN}. See changelog.

    Minor note: The += operator automatically adds the space, so " foo bar" can also be "foo bar". This is unlike :append, where the former is necessary.