Re: header file missing in populated SDK


Hans Beckérus <hans.beckerus@...>
 

On Tue, Sep 3, 2013 at 4:05 AM, ChenQi <Qi.Chen@...> wrote:
On 09/02/2013 10:56 PM, Hans Beckérus wrote:

Hi. We are having some issues figuring out why one of our header files
fails to be installed properly into the SDK. The header file is
currently installed using a few lines in one of our recipe:

do_install_append() {
install -m 0644 ${S}/foo.h
${STAGING_DIR}/${MACHINE}${includedir}/linux/foo.h
}
Please don't do that.
I think just installing the foo.h into the ${D}${includedir} would do. And
foo.h will end up in the FOO-dev package.
Make sure that the FOO package is in the IMAGE_INSTALL list, and then use
'bitbake <your-image-recipe> -cpopulate_sdk' command to populate the SDK.
Note taken ;) Actually this was a very old recipe so I guess that
could be one of the reason why it was done this way. Changing
do_install_append to:

do_install_append() {
install -d ${D}${includedir}/linux
install -m 644 ${S}/foo.h ${D}${includedir}/linux/foo.h
}

solves the problem!
The staging dir is automatically updated and the SDK is also populated
as it should.
Actually, I did not need to add package FOO to the IMAGE_INSTALL since
it is a kernel module and installed as part of 'kernel-modules'.
I think we once tried to solve the same issue without
do_install_append() instead using FILES,
but to me FILES is still a piece of black magic. I have never really
managed to figure out how FILES_${PN} manages to locate the actual
source file since it only lists destination targets?

Thanks,
Hans




foo.h ends up ok in our build/tmp/sysroots,
sysroots != SDK
The files under build/tmp/sysroots are usually generated by the
do_populate_sysroot task of each recipe.

From my understanding, SDK is composed of two parts, the target part and the
nativesdk part.
The nativesdk part is determined by the TOOLCHAIN_HOST_TASK.
And the target part is determined by the TOOLCHAIN_TARGET_TASK.
The reason that we could only ensure that FOO is in IMAGE_INSTALL is because
in image.bbclass, we have:
TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}"
export PACKAGE_INSTALL ?= "${IMAGE_INSTALL} ${ROOTFS_BOOTSTRAP_INSTALL}
${FEATURE_INSTALL}"

The process of populating SDK is also composed of two parts, installing the
target packages and installing the nativesdk packages. See
populate_sdk_xxx.bbclass for more details.

Best Regards,
Chen Qi

but it does not make it to the SDK.
Is our do_install_append wrong in some way, does it have to be updated
to support SDK builds? Maybe it is wrong to use ${MACHINE} here?

Thanks.
Hans
_______________________________________________
yocto mailing list
yocto@...
https://lists.yoctoproject.org/listinfo/yocto

_______________________________________________
yocto mailing list
yocto@...
https://lists.yoctoproject.org/listinfo/yocto

Join yocto@lists.yoctoproject.org to automatically receive all group messages.