From 86893e4ea5896199a6f02f8475f4f17aa1124c37 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 21 Oct 2014 21:05:30 +0000 Subject: kernel: Rearrange for 1.8 In 1.8 we want to streamline the kernel build process. Basically we currently have multiple copies of the kernel source floating around and the copying/compression/decompression is painful. Lets assume we have a kernel source per machine since in most cases this is true (and we have a sysroot per machine anyway). Basically, instead of extracting a source into WORKDIR, then copying to a sysroot, we now set S to point straight at STAGING_DIR_KERNEL. Anything using kernel source can then just point at it and use: do_configure[depends] += "virtual/kernel:do_patch" to depend on the kernel source being present. Note this is different behaviour to DEPENDS += "virtual/kernel" which equates to do_configure[depends] += "virtual/kernel:do_populate_sysroot". Once we do this, we no longer need the copy operation in do_populate_sysroot, in fact there is nothing to do there (yay). The remaining part of the challenge is to kill off the horrible do_install. This patch splits it off to a different class, the idea here is to have a separate recipe which depends on the virtual/kernel:do_patch and just installs and packages the source needed to build modules on target into a specific package. Right now this code is proof of concept. It builds kernels and kernel modules. perf blows up in do_package with issues on finding the kernel version which can probably be fixed by adding back the right bit of do_install, and adding a dependency of do_package[depends] += "virtual/kernel:do_install" to perf. The whole thing needs a good write up, the corner cases testing and probably a good dose of cleanup to the remaining code. (From OE-Core rev: 3b3f7e785e27990ba21bc7cd97289c826a9a95d1) Signed-off-by: Richard Purdie --- meta/classes/kernelsrc.bbclass | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 meta/classes/kernelsrc.bbclass (limited to 'meta/classes/kernelsrc.bbclass') diff --git a/meta/classes/kernelsrc.bbclass b/meta/classes/kernelsrc.bbclass new file mode 100644 index 0000000000..11f04e9612 --- /dev/null +++ b/meta/classes/kernelsrc.bbclass @@ -0,0 +1,7 @@ +S = "${STAGING_KERNEL_DIR}" +do_unpack[depends] += "virtual/kernel:do_patch" +do_package[depends] += "virtual/kernel:do_populate_sysroot" +KERNEL_VERSION = "${@get_kernelversion_file("${S}")}" + +inherit linux-kernel-base + -- cgit v1.2.3-54-g00ecf