[oe] RFC: Kernel image packaging

Richard Purdie rpurdie at rpsys.net
Wed Mar 14 10:44:08 UTC 2007


Hi,

The kernel packaging has given various people concern for a while. The
problem is some devices don't want a kernel binary installed into the
root filesystem. We can do this at the moment but the kernel doesn't end
up packaged and we would like those packages to be available even if
they're not installed by default on a given device.

I'm proposing the patch below. This basically adds a
kernel-${KERNEL_VERSION} package to the mix. This package is in the
Dependencies of all kernel modules instead of
kernel-image-${KERNEL_VERSION}. As standard, kernel-${KERNEL_VERSION}
also RDEPENDS on the kernel-image.

For a device that doesn't want the kernel in the rootfs, it would simply
set:

RDEPENDS_kernel-base = ""

in the appropriate kernel file. Perhaps the definition below should be
a ?= and the above could then be set in the machine.conf file.

Does anyone see a nicer way to handle this or have an alternative?

If nobody objects, this will probably get committed at the weekend.

Cheers,

Richard

# 
# old_revision [50c9ee81517d5a1c32a7a7afe7a00793aabceb33]
# 
# patch "classes/kernel.bbclass"
#  from [237ec9e436415eab3772495898c0921de38b3c07]
#    to [17662f6347d7aa822bbb7a5455926a96c9149132]
# 
============================================================
--- classes/kernel.bbclass	237ec9e436415eab3772495898c0921de38b3c07
+++ classes/kernel.bbclass	17662f6347d7aa822bbb7a5455926a96c9149132
@@ -169,13 +169,18 @@ EXPORT_FUNCTIONS do_compile do_install d
 
 EXPORT_FUNCTIONS do_compile do_install do_stage do_configure
 
-PACKAGES = "kernel kernel-image kernel-dev"
+# kernel-base becomes kernel-${KERNEL_VERSION}
+# kernel-image becomes kernel-image-${KERNEL_VERISON}
+PACKAGES = "kernel kernel-base kernel-image kernel-dev"
 FILES = ""
 FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
 FILES_kernel-dev = "/boot/System.map* /boot/config*"
-RDEPENDS_kernel = "kernel-image-${KERNEL_VERSION}"
+RDEPENDS_kernel = "kernel-${KERNEL_VERSION}"
+RDEPENDS_kernel-base = "kernel-image-${KERNEL_VERSION}"
 PKG_kernel-image = "kernel-image-${KERNEL_VERSION}"
+PKG_kernel-base = "kernel-${KERNEL_VERSION}"
 ALLOW_EMPTY_kernel = "1"
+ALLOW_EMPTY_kernel-base = "1"
 ALLOW_EMPTY_kernel-image = "1"
 
 pkg_postinst_kernel-image () {
@@ -362,13 +367,13 @@ python populate_packages_prepend () {
 
 	postinst = bb.data.getVar('pkg_postinst_modules', d, 1)
 	postrm = bb.data.getVar('pkg_postrm_modules', d, 1)
-	do_split_packages(d, root='/lib/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='update-modules kernel-image-%s' % bb.data.getVar("KERNEL_VERSION", d, 1))
+	do_split_packages(d, root='/lib/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='update-modules kernel-%s' % bb.data.getVar("KERNEL_VERSION", d, 1))
 
 	import re, os
 	metapkg = "kernel-modules"
 	bb.data.setVar('ALLOW_EMPTY_' + metapkg, "1", d)
 	bb.data.setVar('FILES_' + metapkg, "", d)
-	blacklist = [ 'kernel-dev', 'kernel-image' ]
+	blacklist = [ 'kernel-dev', 'kernel-image', 'kernel-base' ]
 	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))






More information about the Openembedded-devel mailing list