From: Adrian Freihofer <[email protected]>

With INITRAMFS_IMAGE_BUNDLE = "1" the kernel Makefile is used to bundle
the kernel binary and the initramfs. This works only when the build
folder of the kernel is available. Building with sstate but with an
empty TMPDIR requires to rebuild the kernel from scratch whenever
something in the initramfs changes.

With INITRAMFS_IMAGE_BUNDLE = "" the fitImage generation is basically
independent from the kernel Makefile and could therefore work with
kernel binaries and tools provided by the sstate. But the dependency on
the do_bundle_initramfs tasks does not allow this. However, if the
INTIRAMFS_IMAGE is set but the INITRAMFS_IMAGE_BUNDLE is set to 0 the
do_bundle_initramfs does nothing. There is no real argument for running
this tasks.
As a first step towards getting the kernel from sstate when building an
unbundled fitImage, the task dependencies need to be simplified.
The do_bundle_initramfs task is now scheduled only when needed.

Signed-off-by: Adrian Freihofer <[email protected]>
---
 meta/classes-recipe/kernel-fitimage.bbclass |  7 +++++--
 meta/classes-recipe/kernel.bbclass          | 14 ++++++++------
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/meta/classes-recipe/kernel-fitimage.bbclass 
b/meta/classes-recipe/kernel-fitimage.bbclass
index 664ebc65d7c..fbeb20596ea 100644
--- a/meta/classes-recipe/kernel-fitimage.bbclass
+++ b/meta/classes-recipe/kernel-fitimage.bbclass
@@ -36,6 +36,11 @@ python __anonymous () {
         if 'fitImage' in typeformake.split():
             d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', 
typeformake.replace('fitImage', d.getVar('KERNEL_IMAGETYPE_REPLACEMENT')))
 
+        if bb.utils.to_boolean(d.getVar('INITRAMFS_IMAGE_BUNDLE')):
+            bb.build.addtask('assemble_fitimage_initramfs', 'do_deploy', 
'do_bundle_initramfs', d)
+        else:
+            bb.build.addtask('assemble_fitimage_initramfs', 'do_deploy', 
'do_install', d)
+
         image = d.getVar('INITRAMFS_IMAGE')
         if image:
             d.appendVarFlag('do_assemble_fitimage_initramfs', 'depends', ' 
${INITRAMFS_IMAGE}:do_image_complete')
@@ -794,8 +799,6 @@ do_assemble_fitimage_initramfs() {
        fi
 }
 
-addtask assemble_fitimage_initramfs before do_deploy after do_bundle_initramfs
-
 do_kernel_generate_rsa_keys() {
        if [ "${UBOOT_SIGN_ENABLE}" = "0" ] && [ "${FIT_GENERATE_KEYS}" = "1" 
]; then
                bbwarn "FIT_GENERATE_KEYS is set to 1 even though 
UBOOT_SIGN_ENABLE is set to 0. The keys will not be generated as they won't be 
used."
diff --git a/meta/classes-recipe/kernel.bbclass 
b/meta/classes-recipe/kernel.bbclass
index 89badd90f18..6d242114852 100644
--- a/meta/classes-recipe/kernel.bbclass
+++ b/meta/classes-recipe/kernel.bbclass
@@ -139,15 +139,17 @@ set -e
 
     image = d.getVar('INITRAMFS_IMAGE')
     # If the INTIRAMFS_IMAGE is set but the INITRAMFS_IMAGE_BUNDLE is set to 0,
-    # the do_bundle_initramfs does nothing, but the INITRAMFS_IMAGE is built
-    # standalone for use by wic and other tools.
-    if image:
+    # the do_bundle_initramfs does nothing. Add the dependency only when 
needed.
+    if image and bb.utils.to_boolean(d.getVar('INITRAMFS_IMAGE_BUNDLE')):
+        bb.build.addtask('bundle_initramfs', 'do_deploy', 'do_install', d)
         if d.getVar('INITRAMFS_MULTICONFIG'):
             d.appendVarFlag('do_bundle_initramfs', 'mcdepends', ' 
mc::${INITRAMFS_MULTICONFIG}:${INITRAMFS_IMAGE}:do_image_complete')
         else:
             d.appendVarFlag('do_bundle_initramfs', 'depends', ' 
${INITRAMFS_IMAGE}:do_image_complete')
-    if image and bb.utils.to_boolean(d.getVar('INITRAMFS_IMAGE_BUNDLE')):
         bb.build.addtask('do_transform_bundled_initramfs', 'do_deploy', 
'do_bundle_initramfs', d)
+    else:
+        d.appendVarFlag('do_deploy', 'depends', ' ${PN}:do_install')
+
 
     # NOTE: setting INITRAMFS_TASK is for backward compatibility
     #       The preferred method is to set INITRAMFS_IMAGE, because
@@ -327,6 +329,8 @@ do_bundle_initramfs () {
                                mv -f ${KERNEL_OUTPUT_DIR}/$imageType.bak 
${KERNEL_OUTPUT_DIR}/$imageType
                        fi
                done
+       else
+               bbwarn "Calling do_bundle_initramfs with 
INITRAMFS_IMAGE_BUNDLE=1 is deprecated"
        fi
 }
 do_bundle_initramfs[dirs] = "${B}"
@@ -347,8 +351,6 @@ python do_devshell:prepend () {
     os.environ["LDFLAGS"] = ''
 }
 
-addtask bundle_initramfs after do_install before do_deploy
-
 KERNEL_DEBUG_TIMESTAMPS ??= "0"
 
 kernel_do_compile() {
-- 
2.45.2

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

Reply via email to