mirror of
https://git.yoctoproject.org/poky
synced 2026-02-08 01:36:38 +01:00
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/<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 <nathan@nathanrossi.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
36 lines
1.4 KiB
Plaintext
36 lines
1.4 KiB
Plaintext
inherit kernel-uboot
|
|
|
|
python __anonymous () {
|
|
if "uImage" in (d.getVar('KERNEL_IMAGETYPES') or "").split():
|
|
depends = d.getVar("DEPENDS")
|
|
depends = "%s u-boot-mkimage-native" % depends
|
|
d.setVar("DEPENDS", depends)
|
|
|
|
# Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal
|
|
# to kernel.bbclass . We override the variable here, since we need
|
|
# to build uImage using the kernel build system if and only if
|
|
# KEEPUIMAGE == yes. Otherwise, we pack compressed vmlinux into
|
|
# the uImage .
|
|
if d.getVar("KEEPUIMAGE") != 'yes':
|
|
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() {
|
|
uboot_prep_kimage
|
|
|
|
ENTRYPOINT=${UBOOT_ENTRYPOINT}
|
|
if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then
|
|
ENTRYPOINT=`${HOST_PREFIX}nm ${B}/vmlinux | \
|
|
awk '$3=="${UBOOT_ENTRYSYMBOL}" {print $1}'`
|
|
fi
|
|
|
|
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
|
|
}
|