[oe] [PATCH/RFC] kernel.bbclass: add kernel-headers package

Tim Harvey tharvey at irobot.com
Fri Mar 27 21:04:45 UTC 2009


Add a kernel-headers package suitable for building kernel modules 
against and add it to the target sdk

diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass
index 4c1dbda..efdaf96 100644
--- a/classes/kernel.bbclass
+++ b/classes/kernel.bbclass
@@ -56,6 +56,9 @@ KERNEL_LD = "${LD}${KERNEL_LDSUFFIX} 
${HOST_LD_KERNEL_ARCH}"
 KERNEL_OUTPUT ?= "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}"
 KERNEL_IMAGEDEST = "boot"
 
+# Where kernel headers get installed
+KERNEL_HEADERS_DEST ?= 
"/usr/src/linux-headers-${KERNEL_VERSION}-${MACHINE}"
+
 #
 # configuration
 #
@@ -163,6 +166,19 @@ kernel_do_install() {
        else
                oenote "no modules to install"
        fi
+       oenote "installing kernel headers"
+       install -d ${D}${KERNEL_HEADERS_DIR}/${KERNEL_HEADERS_DEST}
+       find . -path './include/*' -prune -o -path './.pc/*' -prune \
+               -o -path './scripts/*' -prune -o -type f \
+               \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 
'Kbuild*' -o \
+               -name '*.sh' -o -name '*.pl' -o -name '*.lds' \) \
+               -print | cpio -pd --preserve-modification-time 
${D}${KERNEL_HEADERS_DIR}/${KERNEL_HEADERS_DEST}
+       cp -a drivers/media/dvb/dvb-core/*.h 
${D}${KERNEL_HEADERS_DIR}/${KERNEL_HEADERS_DEST}/drivers/media/dvb/dvb-core
+       cp -a drivers/media/video/*.h 
${D}${KERNEL_HEADERS_DIR}/${KERNEL_HEADERS_DEST}/drivers/media/video
+       cp -a drivers/media/dvb/dvb-core/*.h 
${D}${KERNEL_HEADERS_DIR}/${KERNEL_HEADERS_DEST}/drivers/media/dvb/dvb-core
+       cp -a drivers/media/dvb/frontends/*.h 
${D}${KERNEL_HEADERS_DIR}/${KERNEL_HEADERS_DEST}/drivers/media/dvb/frontends
+       cp -a scripts include 
${D}${KERNEL_HEADERS_DIR}/${KERNEL_HEADERS_DEST}/
+       install -m 0644 Module.symvers 
${D}${KERNEL_HEADERS_DIR}/${KERNEL_HEADERS_DEST}/
        
        install -d ${D}/${KERNEL_IMAGEDEST}
        install -d ${D}/boot
@@ -217,11 +233,12 @@ EXPORT_FUNCTIONS do_compile do_install do_stage 
do_configure
 
 # kernel-base becomes kernel-${KERNEL_VERSION}
 # kernel-image becomes kernel-image-${KERNEL_VERISON}
-PACKAGES = "kernel kernel-base kernel-image kernel-dev kernel-vmlinux"
+PACKAGES = "kernel kernel-base kernel-image kernel-dev kernel-vmlinux 
kernel-headers"
 FILES = ""
 FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
 FILES_kernel-dev = "/boot/System.map* /boot/config*"
 FILES_kernel-vmlinux = "/boot/vmlinux*"
+FILES_kernel-headers = "${KERNEL_HEADERS_DEST}/*"
 RDEPENDS_kernel = "kernel-base"
 RRECOMMENDS_kernel-module-hostap-cs += 
'${@base_version_less_or_equal("KERNEL_VERSION", "2.6.17", "", 
"apm-wifi-suspendfix", d)}'
 RRECOMMENDS_kernel-module-orinoco-cs += 
'${@base_version_less_or_equal("KERNEL_VERSION", "2.6.17", "", 
"apm-wifi-suspendfix", d)}'
@@ -446,7 +463,7 @@ python populate_packages_prepend () {
        metapkg = "kernel-modules"
        bb.data.setVar('ALLOW_EMPTY_' + metapkg, "1", d)
        bb.data.setVar('FILES_' + metapkg, "", d)
-       blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base', 
'kernel-vmlinux' ]
+       blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base', 
'kernel-vmlinux', 'kernel-headers' ]
        for l in module_deps.values():
                for i in l:
                        pkg = module_pattern % 
legitimize_package_name(re.match(module_regex, 
os.path.basename(i)).group(1))
diff --git a/recipes/tasks/task-sdk-bare.bb b/recipes/tasks/task-sdk-bare.bb
index 85d3626..7c837bf 100644
--- a/recipes/tasks/task-sdk-bare.bb
+++ b/recipes/tasks/task-sdk-bare.bb
@@ -30,4 +30,5 @@ RDEPENDS_${PN} = "\
     libgcc \
     libstdc++ \
     libstdc++-dev \
+    kernel-headers \
 "





More information about the Openembedded-devel mailing list