[OE-core] Sanitized kernel headers

Peter Kjellerstedt peter.kjellerstedt at axis.com
Wed Oct 2 13:45:55 UTC 2013


In a recent commit 
(http://cgit.openembedded.org/openembedded-core/commit/?id=c27ac156bcaf3193d52f456480947b0cfaef3c72), 
Richard added a big warning about not forking the 
linux-libc-headers recipe to get at specific kernel 
headers for user space. As a consequence I thought I 
should remove our fork of linux-libc-headers and instead 
use the suggested method of including the needed files 
from ${STAGING_KERNEL_DIR} in the recipes that need them.

However, I soon realized that what I need are the sanitized 
headers that are generated by running "make headers_install" 
in the kernel sources. So what I then did was to create a 
simple bbclass that generates them for me and makes them 
available for my recipe:

---- %< ------------- kernel-headers.bbclass --------------
DEPENDS += "virtual/kernel"

PACKAGE_ARCH = "${MACHINE_ARCH}"

inherit kernel-arch

KINCLUDES ?= "${WORKDIR}/kernel-includes"

do_compile_prepend() {
	mkdir -p ${KINCLUDES}
	oe_runmake -C ${STAGING_KERNEL_DIR} headers_install INSTALL_HDR_PATH=${KINCLUDES}
}
--------------------------------------------------- >% ----

After that I could simply do 'inherit kernel-headers' and 
'CFLAGS += "-I${KINCLUDES}/includes"' in my recipe to get 
at the sanitized kernel headers.

But, it seems somewhat wasteful for each recipe that need 
those headers to do that. Wouldn't it be an idea to provide 
the sanitized headers in ${STAGING_KERNEL_DIR}/usr/include 
(which would be the default path for make headers_install) 
by default?

//Peter



More information about the Openembedded-core mailing list