[oe-commits] [openembedded-core] 04/04: kernel.bbclass: fix KERNEL_IMAGETYPE(S) for Image.gz

git at git.openembedded.org git at git.openembedded.org
Sun Jun 4 07:53:38 UTC 2017


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 7d7d810346d5a6da861df1915776a8cfc158ebad
Author: Nicolas Dechesne <nicolas.dechesne at linaro.org>
AuthorDate: Fri Jun 2 09:05:31 2017 +0200

    kernel.bbclass: fix KERNEL_IMAGETYPE(S) for Image.gz
    
    KERNEL_IMAGETYPES lists all the kernel images that we want to build. in
    cb17b6c2a7 (kernel.bbclass: support kernel image type of vmlinux.gz), some logic
    was added to support vmlinux.gz which is not a target built by kernel
    makefiles (only vmlinux). It is clear that the goal of this logic is only to
    support vmlinux.gz and not others compressed format (such as Image.gz) which are
    valid target for kernel makefiles.
    
    For Image.gz we should rely on the kernel makefiles and not do the compression
    in kernel class.
    
    This patch updates the logic used to filter out non supported kernel target from
    KERNEL_IMAGETYPES, and make vmlinux.gz a 'special case', instead of *.gz. If
    more special cases are needed in the future, we could add them in a similar way.
    
    This patch should be a no-op for anyone using vmlinux or vmlinux.gz, and on top
    of that it is fixing the build for Image.gz which was not working until now.
    
    Signed-off-by: Nicolas Dechesne <nicolas.dechesne at linaro.org>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/kernel.bbclass | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 7a134d5..7670c71 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -32,7 +32,6 @@ KERNEL_VERSION_PKG_NAME = "${@legitimize_package_name(d.getVar('KERNEL_VERSION')
 KERNEL_VERSION_PKG_NAME[vardepvalue] = "${LINUX_VERSION}"
 
 python __anonymous () {
-    import re
 
     # Merge KERNEL_IMAGETYPE and KERNEL_ALT_IMAGETYPE into KERNEL_IMAGETYPES
     type = d.getVar('KERNEL_IMAGETYPE') or ""
@@ -44,7 +43,10 @@ python __anonymous () {
         types = (alttype + ' ' + types).strip()
     d.setVar('KERNEL_IMAGETYPES', types)
 
-    typeformake = re.sub(r'\.gz', '', types)
+    # some commonly used kernel images aren't generated by the kernel build system, such as vmlinux.gz
+    # typeformake lists only valid kernel make targets, and post processing can be done after the kernel
+    # is built (such as using gzip to compress vmlinux)
+    typeformake = types.replace('vmlinux.gz', 'vmlinux')
     d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake)
 
     for type in types.split():
@@ -268,14 +270,12 @@ kernel_do_compile() {
 	fi
 	for typeformake in ${KERNEL_IMAGETYPE_FOR_MAKE} ; do
 		oe_runmake ${typeformake} CC="${KERNEL_CC}" LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} $use_alternate_initrd
-		for type in ${KERNEL_IMAGETYPES} ; do
-			if test "${typeformake}.gz" = "${type}"; then
-				mkdir -p "${KERNEL_OUTPUT_DIR}"
-				gzip -9c < "${typeformake}" > "${KERNEL_OUTPUT_DIR}/${type}"
-				break;
-			fi
-		done
 	done
+	# vmlinux.gz is not built by kernel
+	if (echo "${KERNEL_IMAGETYPES}" | grep -wq "vmlinux\.gz"); then
+		mkdir -p "${KERNEL_OUTPUT_DIR}"
+		gzip -9c < ${B}/vmlinux > "${KERNEL_OUTPUT_DIR}/vmlinux.gz"
+	fi
 }
 
 do_compile_kernelmodules() {

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list