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
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.