From: Adrian Freihofer <[email protected]>

This is a step to avoid unecessary kernel rebuilds when the initramfs
changes but not the kernel itself. In case of an unbundled fitImage the
kernel should be staged in the sstate instead of re-compiled.

The uboot_prep_kimage function generates the kernel binary which gets
included into the fitImage. It also defines the variable linux_comp
which is used by the fitimage_assemble function later on.
To make the fitimage_assemble function working with kernel binaries from
sstate it must be decoupled from calling uboot_prep_kimage in ${B} by:
- refactoring uboot_prep_kimage to write the result into files
  (linux.bin, linux.comp).
- calling the uboot_prep_kimage before the artifacts are used or cached.
- refactoring the fitimage_assemble function to use files rather than
  calling the uboot_prep_kimage function which depends on ${B}.

Signed-off-by: Adrian Freihofer <[email protected]>
---
 meta/classes-recipe/kernel-fitimage.bbclass | 5 ++---
 meta/classes-recipe/kernel-uboot.bbclass    | 1 +
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/meta/classes-recipe/kernel-fitimage.bbclass 
b/meta/classes-recipe/kernel-fitimage.bbclass
index 67c98adb232..02b5fd8e3f5 100644
--- a/meta/classes-recipe/kernel-fitimage.bbclass
+++ b/meta/classes-recipe/kernel-fitimage.bbclass
@@ -579,9 +579,7 @@ fitimage_assemble() {
        # Step 1: Prepare a kernel image section.
        #
        fitimage_emit_section_maint $1 imagestart
-
-       uboot_prep_kimage
-       fitimage_emit_section_kernel $1 $kernelcount linux.bin "$linux_comp"
+       fitimage_emit_section_kernel $1 $kernelcount linux.bin "$(cat 
linux.comp)"
 
        #
        # Step 2: Prepare a DTB image section
@@ -764,6 +762,7 @@ fitimage_assemble() {
 do_assemble_fitimage() {
        if echo ${KERNEL_IMAGETYPES} | grep -wq "fitImage"; then
                cd ${B}
+               uboot_prep_kimage
                fitimage_assemble fit-image.its fitImage-none ""
                if [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then
                        ln -sf fitImage-none ${B}/${KERNEL_OUTPUT_DIR}/fitImage
diff --git a/meta/classes-recipe/kernel-uboot.bbclass 
b/meta/classes-recipe/kernel-uboot.bbclass
index 30a85ccc287..50be7962d46 100644
--- a/meta/classes-recipe/kernel-uboot.bbclass
+++ b/meta/classes-recipe/kernel-uboot.bbclass
@@ -45,5 +45,6 @@ uboot_prep_kimage() {
                mv -f "linux.bin${linux_suffix}" linux.bin
        fi
 
+       [ -n "${vmlinux_path}" ] && echo "${linux_comp}" > linux.comp
        echo "${linux_comp}"
 }
-- 
2.45.2

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#201929): 
https://lists.openembedded.org/g/openembedded-core/message/201929
Mute This Topic: https://lists.openembedded.org/mt/107231739/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to