Yocto Error: "non debug package contains .debug directory" with yocto recipe

user1407764 picture user1407764 · Dec 16, 2013 · Viewed 14.5k times · Source

I am trying to build a custom yocto recipe, which involves compiling a small C program. During the build -

$ bitbake -f interface-configuration
...
ERROR: QA Issue: non debug package contains .debug directory: interface-configuration path /work/cortexa9hf-vfp-poky-linux-gnueabi/interface-configuration/0.1-r0/packages-split/interface-configuration/etc/interfaces/bin/.debug/set
ERROR: QA run found fatal errors. Please consider fixing them.
ERROR: Function failed: do_package_qa
ERROR: Logfile of failure stored in: /home/git/poky/build-atmel/tmp/work/cortexa9hf-vfp-poky-linux-gnueabi/interface-configuration/0.1-r0/temp/log.do_package.28986
ERROR: Task 10 (/home/git/poky/meta-atmel/recipes-intelli/interface-configuration/interface-configuration_0.1.bb, do_package) failed with exit code '1'

I was wondering if anyone on here know how to either disable debug info or remove the QA check. Google search for the error has proven fruitless so far.

Cheers

Update with interface-configuration.bb

DESCRIPTION = "Interface configuration files and tools"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58"
SRC_URI = "file://interface-configuration-0.1.tar.gz"

do_compile() {
    install -vd ${D}/
    ${CC} -g0 set.c -o set
    # CC is arm-poky-linux-gnueabi-gcc -march=armv7-a -marm -mthumb-interwork -mfloat-abi=hard -mtune=cortex-a9 --sysroot=/home/git/poky/build-atmel/tmp/sysroots/sama5d3xek
}


do_install() {
    cp -r ${S}/etc ${D}/etc
    install -vd ${D}/etc/interfaces/bin
    install -vm 0755 set ${D}/etc/interfaces/bin/
}

do_install_append() {
    # I added this to try to remove the error - it doesn't work
    rm -rf ${D}/etc/interfaces/bin/.debug
}

FILES_${PN} += "/etc/interfaces/MANIFEST \
    /etc/interfaces/conf/A \
    /etc/interfaces/conf/B \
    /etc/interfaces/conf/C \
    /etc/interfaces/conf/D \
    /etc/interfaces/template/A \
    /etc/interfaces/template/B \
    /etc/interfaces/template/C \
    /etc/interfaces/template/D \
    /set.c"

Answer

silvio picture silvio · Dec 17, 2013

Yocto/OE generate a .debug-directory under the directory where the binary is placed. You use a non default directory for a binary (install -vm 0755 set ${D}/etc/interfaces/bin). You need to declare that .debug goes to the -dbg package.

You have two options now. First use of standard directory like ${D}/usr/bin or second you add .debug to dbg - packages like this:

FILES_${PN}-dbg += "/etc/interfaces/bin/.debug"

You can remove your do_install_append because the .debug is created after do_install.

If you use the second option you have to need to configure your gdb with set debug-file-directory directories option in gdb to debug you binary. Read more here