mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
kernel-uboot.bbclass: do not require the kernel build folder
The function must be executed in CWD. Make it more flexible by specifying the kernel build folder as a parameter. This is a refactoring without functional change. But later this change will allow to use this function also with a kernel from the sstate-cache instead of requiring the full kernel build folder structure. Another preparation for using a kernel from sstate-cache is to persist the linux_comp variable in a file next to the linux.bin file rather than using a global shell variable. This change also requires to adapt the kernel-uimage.bbclass accordingly. This change also fixes a minor detail: the kernel-uimage.bbclass used ${ instead of $ for evaluatiing a local shell variable. (From OE-Core rev: 8ea95cd419ee4efac5f54124e2ce98304262e8c1) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
8263346476
commit
ceee257553
|
@ -12,19 +12,27 @@ FIT_KERNEL_COMP_ALG_EXTENSION ?= ".gz"
|
|||
UBOOT_MKIMAGE_KERNEL_TYPE ?= "kernel"
|
||||
|
||||
uboot_prep_kimage() {
|
||||
if [ -e arch/${ARCH}/boot/compressed/vmlinux ]; then
|
||||
output_dir=$1
|
||||
# For backward compatibility with kernel-fitimage.bbclass and kernel-uboot.bbclass
|
||||
# support calling without parameter as well
|
||||
if [ -z "$output_dir" ]; then
|
||||
output_dir='.'
|
||||
fi
|
||||
|
||||
linux_bin=$output_dir/linux.bin
|
||||
if [ -e "arch/${ARCH}/boot/compressed/vmlinux" ]; then
|
||||
vmlinux_path="arch/${ARCH}/boot/compressed/vmlinux"
|
||||
linux_suffix=""
|
||||
linux_comp="none"
|
||||
elif [ -e arch/${ARCH}/boot/vmlinuz.bin ]; then
|
||||
rm -f linux.bin
|
||||
cp -l arch/${ARCH}/boot/vmlinuz.bin linux.bin
|
||||
elif [ -e "arch/${ARCH}/boot/vmlinuz.bin" ]; then
|
||||
rm -f "$linux_bin"
|
||||
cp -l "arch/${ARCH}/boot/vmlinuz.bin" "$linux_bin"
|
||||
vmlinux_path=""
|
||||
linux_suffix=""
|
||||
linux_comp="none"
|
||||
else
|
||||
vmlinux_path="vmlinux"
|
||||
# Use vmlinux.initramfs for linux.bin when INITRAMFS_IMAGE_BUNDLE set
|
||||
# Use vmlinux.initramfs for $linux_bin when INITRAMFS_IMAGE_BUNDLE set
|
||||
# As per the implementation in kernel.bbclass.
|
||||
# See do_bundle_initramfs function
|
||||
if [ "${INITRAMFS_IMAGE_BUNDLE}" = "1" ] && [ -e vmlinux.initramfs ]; then
|
||||
|
@ -34,18 +42,18 @@ uboot_prep_kimage() {
|
|||
linux_comp="${FIT_KERNEL_COMP_ALG}"
|
||||
fi
|
||||
|
||||
[ -n "${vmlinux_path}" ] && ${KERNEL_OBJCOPY} -O binary -R .note -R .comment -S "${vmlinux_path}" linux.bin
|
||||
[ -n "$vmlinux_path" ] && ${KERNEL_OBJCOPY} -O binary -R .note -R .comment -S "$vmlinux_path" "$linux_bin"
|
||||
|
||||
if [ "${linux_comp}" != "none" ] ; then
|
||||
if [ "${linux_comp}" = "gzip" ] ; then
|
||||
gzip -9 linux.bin
|
||||
elif [ "${linux_comp}" = "lzo" ] ; then
|
||||
lzop -9 linux.bin
|
||||
elif [ "${linux_comp}" = "lzma" ] ; then
|
||||
xz --format=lzma -f -6 linux.bin
|
||||
if [ "$linux_comp" != "none" ] ; then
|
||||
if [ "$linux_comp" = "gzip" ] ; then
|
||||
gzip -9 "$linux_bin"
|
||||
elif [ "$linux_comp" = "lzo" ] ; then
|
||||
lzop -9 "$linux_bin"
|
||||
elif [ "$linux_comp" = "lzma" ] ; then
|
||||
xz --format=lzma -f -6 "$linux_bin"
|
||||
fi
|
||||
mv -f "linux.bin${linux_suffix}" linux.bin
|
||||
mv -f "$linux_bin$linux_suffix" "$linux_bin"
|
||||
fi
|
||||
|
||||
echo "${linux_comp}"
|
||||
printf "$linux_comp" > "$output_dir/linux_comp"
|
||||
}
|
|
@ -29,6 +29,7 @@ python __anonymous () {
|
|||
do_uboot_mkimage[dirs] += "${B}"
|
||||
do_uboot_mkimage() {
|
||||
uboot_prep_kimage
|
||||
linux_comp="$(cat linux_comp)"
|
||||
|
||||
ENTRYPOINT=${UBOOT_ENTRYPOINT}
|
||||
if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then
|
||||
|
@ -36,6 +37,6 @@ do_uboot_mkimage() {
|
|||
awk '$3=="${UBOOT_ENTRYSYMBOL}" {print "0x"$1;exit}'`
|
||||
fi
|
||||
|
||||
uboot-mkimage -A ${UBOOT_ARCH} -O linux -T ${UBOOT_MKIMAGE_KERNEL_TYPE} -C "${linux_comp}" -a ${UBOOT_LOADADDRESS} -e $ENTRYPOINT -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${B}/arch/${ARCH}/boot/uImage
|
||||
uboot-mkimage -A ${UBOOT_ARCH} -O linux -T ${UBOOT_MKIMAGE_KERNEL_TYPE} -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user