Issue
I am trying to build a container image running a tensorflow-lite application. This app also includes examples which I included as a packages
The build fails at do_rootfs
because of a missing dependency. Here is the error I get, thrown by dnf
:
ERROR: container-tensorflow-lite-label-image-1.0-r0 do_rootfs: Could not invoke dnf. Command '/data/yocto/build/tmp/fullmetalupdate-containers/work/imx8mqevk-fullmetalupdatecontainers-linux/container-tensorflow-lite-label-image/1.0-r0/recipe-sysroot-native/usr/bin/dnf -v --rpmverbosity=info -y -c /data/yocto/build/tmp/fullmetalupdate-containers/work/imx8mqevk-fullmetalupdatecontainers-linux/container-tensorflow-lite-label-image/1.0-r0/rootfs/etc/dnf/dnf.conf --setopt=reposdir=/data/yocto/build/tmp/fullmetalupdate-containers/work/imx8mqevk-fullmetalupdatecontainers-linux/container-tensorflow-lite-label-image/1.0-r0/rootfs/etc/yum.repos.d --installroot=/data/yocto/build/tmp/fullmetalupdate-containers/work/imx8mqevk-fullmetalupdatecontainers-linux/container-tensorflow-lite-label-image/1.0-r0/rootfs --setopt=logdir=/data/yocto/build/tmp/fullmetalupdate-containers/work/imx8mqevk-fullmetalupdatecontainers-linux/container-tensorflow-lite-label-image/1.0-r0/temp --repofrompath=oe-repo,/data/yocto/build/tmp/fullmetalupdate-containers/work/imx8mqevk-fullmetalupdatecontainers-linux/container-tensorflow-lite-label-image/1.0-r0/oe-rootfs-repo -x busybox-syslog,busybox-udhcpc --nogpgcheck install tensorflow-lite-examples tensorflow-lite tensorflow-lite-staticdev' returned 1:
DNF version: 4.1.0
...
Error:
Problem: package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6()(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(CXXABI_1.3)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(GLIBCXX_3.4)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(GLIBCXX_3.4.11)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(GLIBCXX_3.4.14)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(GLIBCXX_3.4.15)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(GLIBCXX_3.4.20)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(GLIBCXX_3.4.21)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(GLIBCXX_3.4.9)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(CXXABI_1.3.5)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(GLIBCXX_3.4.18)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(CXXABI_1.3.8)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(GLIBCXX_3.4.19)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++.so.6(GLIBCXX_3.4.22)(64bit), but none of the providers can be installed
- package tensorflow-lite-examples-1.14-r0.aarch64 requires libstdc++6 >= 8.3.0, but none of the providers can be installed
- conflicting requests
- nothing provides /bin/sh needed by libstdc++6-8.3.0-r0.aarch64
I'm new to Yocto and don't know where to go from there. How can I solve this kind of issue ?
Here are the line related to package dependencies in my tensorflow recipe :
RDEPENDS_${PN}-dev = "${PN}-staticdev"
PACKAGES += "${PN}-examples"
ALLOW_EMPTY_${PN} = "1"
FILES_${PN} = ""
FILES_${PN}-dev = " \
${includedir} \
"
FILES_${PN}-staticdev = " \
${libdir} \
"
FILES_${PN}-examples = " \
${bindir}/${PN} \
${bindir}/${PN}-${PV}/examples/label_image \
${bindir}/${PN}-${PV}/examples/grace_hopper.bmp \
${bindir}/${PN}-${PV}/examples/minimal \
${bindir}/${PN}-${PV}/examples/benchmark_model \
${bindir}/${PN}-${PV}/examples/mobilenet_v1_0.25_224.tflite \
${bindir}/${PN}-${PV}/examples/mobilenet_v1_0.25_224_quant.tflite \
${bindir}/${PN}-${PV}/examples/mobilenet_v1_1.0_224.tflite \
${bindir}/${PN}-${PV}/examples/mobilenet_v1_1.0_224_quant.tflite \
${bindir}/${PN}-${PV}/examples/mobilenet_quant_v1_224.tflite \
${bindir}/${PN}-${PV}/examples/labels.txt \
"
Thanks in advance and please ask if you need more info.
Solution
nothing provides /bin/sh needed by libstdc++6-8.3.0-r0.aarch64
You probably just need to add bash to your image(in local.conf):
IMAGE_INSTALL_append = " bash"
Answered By - Ilya S