From bd1beb3545c03b109faf228e5e2c6a019b01ed53 Mon Sep 17 00:00:00 2001 From: Nathan Rossi Date: Fri, 16 Jun 2017 22:38:49 +1000 Subject: kernel-uimage.bbclass: Fix up generation of uImage from vmlinux Fix up the generation of uImage from vmlinux when KEEPUIMAGE != 'yes'. This fixes up the working directory that do_uboot_mkimage is run from, such that it is run from the ${B} directory to access built artefacts. Simplify the logic in the task so that the parse step either adds the task or not if the conditions are met. This reduces the need for the task to run in cases when it is not used. The task is also changed to depend on the kernel_link_images task as arch//boot/* is not available until after kernel_link_images in certain cases (e.g. vmlinux/uImage only KERNEL_IMAGETYPES). Fix up the use of ${S}/vmlinux when pulling the entry symbols address so that it accesses the vmlinux in ${B}. (From OE-Core rev: e0b4f018d1c2a65e66c81e5be1da8894e9a6c132) Signed-off-by: Nathan Rossi Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- meta/classes/kernel-uimage.bbclass | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'meta/classes/kernel-uimage.bbclass') diff --git a/meta/classes/kernel-uimage.bbclass b/meta/classes/kernel-uimage.bbclass index 19c6ade507..7c026abf0b 100644 --- a/meta/classes/kernel-uimage.bbclass +++ b/meta/classes/kernel-uimage.bbclass @@ -15,23 +15,21 @@ python __anonymous () { typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE") or "" if "uImage" in typeformake.split(): d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake.replace('uImage', 'vmlinux')) + + # Enable building of uImage with mkimage + bb.build.addtask('do_uboot_mkimage', 'do_install', 'do_kernel_link_images', d) } +do_uboot_mkimage[dirs] += "${B}" do_uboot_mkimage() { - if echo "${KERNEL_IMAGETYPES}" | grep -wq "uImage"; then - if test "x${KEEPUIMAGE}" != "xyes" ; then - uboot_prep_kimage - - ENTRYPOINT=${UBOOT_ENTRYPOINT} - if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then - ENTRYPOINT=`${HOST_PREFIX}nm ${S}/vmlinux | \ - awk '$3=="${UBOOT_ENTRYSYMBOL}" {print $1}'` - fi + uboot_prep_kimage - uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C "${linux_comp}" -a ${UBOOT_LOADADDRESS} -e $ENTRYPOINT -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${B}/arch/${ARCH}/boot/uImage - rm -f linux.bin - fi + ENTRYPOINT=${UBOOT_ENTRYPOINT} + if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then + ENTRYPOINT=`${HOST_PREFIX}nm ${B}/vmlinux | \ + awk '$3=="${UBOOT_ENTRYSYMBOL}" {print $1}'` fi -} -addtask uboot_mkimage before do_install after do_compile + uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C "${linux_comp}" -a ${UBOOT_LOADADDRESS} -e $ENTRYPOINT -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${B}/arch/${ARCH}/boot/uImage + rm -f linux.bin +} -- cgit v1.2.3-54-g00ecf