diff mbox series

[18/20] kernel-uboot.bbclass: merge it into kernel-uimage.bbclass

Message ID 20250504130507.717954-18-adrian.freihofer@siemens.com
State New
Headers show
Series [01/20] oe-selftest: add new ext dtb recipe | expand

Commit Message

Freihofer, Adrian May 4, 2025, 1:05 p.m. UTC
From: Adrian Freihofer <adrian.freihofer@siemens.com>

After the kernel-fitimage.bbclass has been removed, the
kernel-uimage.bbclass is the only user of the kernel-uboot.bbclass.
Simplify the implementation by merging these two classes into one.

Until "uImage" is in KERNEL_IMAGETYPES the kernel-uimage.bbclass does
nothing else than exporting the artifiacts which are required for
creating the fitImage.

It should also be remembered that the kernel.bbclass inherits the
kernel-uimage.bbclass by default:
  KERNEL_CLASSES ?= " kernel-uimage "

Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com>
---
 meta/classes-recipe/kernel-uboot.bbclass  | 69 ----------------------
 meta/classes-recipe/kernel-uimage.bbclass | 71 +++++++++++++++++++++--
 2 files changed, 67 insertions(+), 73 deletions(-)
 delete mode 100644 meta/classes-recipe/kernel-uboot.bbclass
diff mbox series

Patch

diff --git a/meta/classes-recipe/kernel-uboot.bbclass b/meta/classes-recipe/kernel-uboot.bbclass
deleted file mode 100644
index 7aafd4757c2..00000000000
--- a/meta/classes-recipe/kernel-uboot.bbclass
+++ /dev/null
@@ -1,69 +0,0 @@ 
-#
-# Copyright OpenEmbedded Contributors
-#
-# SPDX-License-Identifier: MIT
-#
-
-# fitImage kernel compression algorithm
-FIT_KERNEL_COMP_ALG ?= "gzip"
-FIT_KERNEL_COMP_ALG_EXTENSION ?= ".gz"
-
-# Kernel image type passed to mkimage (i.e. kernel kernel_noload...)
-UBOOT_MKIMAGE_KERNEL_TYPE ?= "kernel"
-
-uboot_prep_kimage() {
-	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"
-		vmlinux_path=""
-		linux_suffix=""
-		linux_comp="none"
-	else
-		vmlinux_path="vmlinux"
-		# 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
-			vmlinux_path="vmlinux.initramfs"
-		fi
-		linux_suffix="${FIT_KERNEL_COMP_ALG_EXTENSION}"
-		linux_comp="${FIT_KERNEL_COMP_ALG}"
-	fi
-
-	[ -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"
-		fi
-		mv -f "$linux_bin$linux_suffix" "$linux_bin"
-	fi
-
-	printf "$linux_comp" > "$output_dir/linux_comp"
-}
-
-do_install:append() {
-	# Provide the kernel artifacts to post processing recipes e.g. for creating a FIT image
-	install -d ${D}/sysroot-only
-	uboot_prep_kimage ${D}/sysroot-only
-	# For x86 a setup.bin needs to be included in a fitImage as well
-	if [ -e ${KERNEL_OUTPUT_DIR}/setup.bin ]; then
-		install -D ${B}/${KERNEL_OUTPUT_DIR}/setup.bin ${D}/sysroot-only/setup.bin
-	fi
-}
diff --git a/meta/classes-recipe/kernel-uimage.bbclass b/meta/classes-recipe/kernel-uimage.bbclass
index e353232a0e9..f04a2c6d691 100644
--- a/meta/classes-recipe/kernel-uimage.bbclass
+++ b/meta/classes-recipe/kernel-uimage.bbclass
@@ -4,7 +4,13 @@ 
 # SPDX-License-Identifier: MIT
 #
 
-inherit kernel-uboot
+# fitImage kernel compression algorithm
+FIT_KERNEL_COMP_ALG ?= "gzip"
+FIT_KERNEL_COMP_ALG_EXTENSION ?= ".gz"
+
+# Kernel image type passed to mkimage (i.e. kernel kernel_noload...)
+UBOOT_MKIMAGE_KERNEL_TYPE ?= "kernel"
+
 
 python __anonymous () {
     if "uImage" in d.getVar('KERNEL_IMAGETYPES'):
@@ -26,10 +32,67 @@  python __anonymous () {
             bb.build.addtask('do_uboot_mkimage', 'do_install', 'do_kernel_link_images', d)
 }
 
+uboot_prep_kimage() {
+	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"
+		vmlinux_path=""
+		linux_suffix=""
+		linux_comp="none"
+	else
+		vmlinux_path="vmlinux"
+		# 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
+			vmlinux_path="vmlinux.initramfs"
+		fi
+		linux_suffix="${FIT_KERNEL_COMP_ALG_EXTENSION}"
+		linux_comp="${FIT_KERNEL_COMP_ALG}"
+	fi
+
+	[ -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"
+		fi
+		mv -f "$linux_bin$linux_suffix" "$linux_bin"
+	fi
+
+	printf "$linux_comp" > "$output_dir/linux_comp"
+}
+
+do_install:append() {
+	# Provide the kernel artifacts to post processing recipes e.g. for creating a FIT image
+	install -d ${D}/sysroot-only
+	uboot_prep_kimage ${D}/sysroot-only
+	# For x86 a setup.bin needs to be included in a fitImage as well
+	if [ -e ${KERNEL_OUTPUT_DIR}/setup.bin ]; then
+		install -D ${B}/${KERNEL_OUTPUT_DIR}/setup.bin ${D}/sysroot-only/setup.bin
+	fi
+}
+
 do_uboot_mkimage[dirs] += "${B}"
 do_uboot_mkimage() {
-	uboot_prep_kimage
-	linux_comp="$(cat linux_comp)"
+	linux_bin=${D}/sysroot-only/setup.bin
+	linux_comp=$(cat "${D}/sysroot-only/linux_comp")
 
 	ENTRYPOINT=${UBOOT_ENTRYPOINT}
 	if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then
@@ -37,6 +100,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
 }