[OE-core] [PATCH v3] kernel.bbclass: do not deploy fitImage; kernel-fitimage.bbclass does that.

Leon Woestenberg leon at sidebranch.com
Sun Sep 16 09:18:38 UTC 2018


Hi Alex,

> On 15 Sep 2018, at 19:45, Alex Kiernan <alex.kiernan at gmail.com> wrote:
> 
>> On Mon, Sep 10, 2018 at 10:57 PM Leon Woestenberg <leon at sidebranch.com> wrote:
>> 
>> kernel-fitimage.bbclass replaces an occurance of "fitImage" in
>> KERNEL_IMAGETYPE_FOR_MAKE by an image type that is buildable for the
>> architecture (such as zImage). The kernel-fitimage.bbclass packs that
>> image as sub-image in a flattened image tree image (fitImage) and
>> deploys this fitImage along with the image tree source file (.its).
>> 
>> kernel-fitimage.bbclass does not alter KERNEL_IMAGETYPES, which thus
>> also contains "fitImage", which kernel.bbclass will also deploy
>> redundantly with different naming.
>> 
>> The result is a dual deployment with slightly different naming,
>> each with a set of symlinks.
>> 
>> The solution chosen is to have fitImage deployment be handled by
>> kernel-fitimage.bbclass, and have kernel.bbclass ignore fitImage
>> types during deployment.
>> 
>> Signed-off-by: Leon Woestenberg <leon at sidebranch.com>
> 
> This looks completely plausible, but the two "FIT" images that are
> installed aren't identical... after this I end up with no FIT image
> and only a bare image in the deploy dir.

What was in your KERNEL_IMAGETYPES? Did it at least contain “fitImage”??

> Digging into it, the logic between the two classes is a bit odd... in
> the case of a non initramfs build, the fitImage is actually installed
> here.

If ‘here’ means kernel-fitimage, then I’ld say ALL versions of a FIT image containing AT LEAST a Linux kernel are installed by kernel-fitimage.

> The one that's installed in kernel-fitimage is the bare
> linux.bin, but named fitImage-...

which is totally broken. If you want the bare kernel binary (which naming depends on architecture, so it should NOT be hard-coded to linux.bin anyway), you would need to specify that type *also* in KERNEL_IMAGETYPES, next to “fitImage”.
> 
> I'll send a patch reverting this and removing the other one as I'd
> agree that it appears to have no purpose (and if you did want it, I
> guess you could list it in KERNEL_IMAGETYPES).

I’m sorry I cannot follow what this and the other one is, and it. Let’s first understand all cases correctly.

Regards, Leon
> 
>> ---
>> meta/classes/kernel.bbclass | 18 ++++++++++++------
>> 1 file changed, 12 insertions(+), 6 deletions(-)
>> 
>> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
>> index b57832c..1f69091 100644
>> --- a/meta/classes/kernel.bbclass
>> +++ b/meta/classes/kernel.bbclass
>> @@ -669,8 +669,11 @@ kernel_do_deploy() {
>>        fi
>> 
>>        for imageType in ${KERNEL_IMAGETYPES} ; do
>> -               base_name=${imageType}-${KERNEL_IMAGE_NAME}
>> -               install -m 0644 ${KERNEL_OUTPUT_DIR}/${imageType} $deployDir/${base_name}.bin
>> +               # kernel-fitimage class deploys fitImages, skip here
>> +               if [ "$imageType" != "fitImage" ]; then
>> +                       base_name=${imageType}-${KERNEL_IMAGE_NAME}
>> +                       install -m 0644 ${KERNEL_OUTPUT_DIR}/${imageType} $deployDir/${base_name}.bin
>> +               fi
>>        done
>>        if [ ${MODULE_TARBALL_DEPLOY} = "1" ] && (grep -q -i -e '^CONFIG_MODULES=y$' .config); then
>>                mkdir -p ${D}/lib
>> @@ -687,10 +690,13 @@ kernel_do_deploy() {
>> 
>>        if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" = x1 ]; then
>>                for imageType in ${KERNEL_IMAGETYPES} ; do
>> -                       initramfs_base_name=${imageType}-${INITRAMFS_NAME}
>> -                       initramfs_symlink_name=${imageType}-${INITRAMFS_LINK_NAME}
>> -                       install -m 0644 ${KERNEL_OUTPUT_DIR}/${imageType}.initramfs $deployDir/${initramfs_base_name}.bin
>> -                       ln -sf ${initramfs_base_name}.bin $deployDir/${initramfs_symlink_name}.bin
>> +                       # kernel-fitimage class deploys fitImages, skip here
>> +                       if [ "$imageType" != "fitImage" ]; then
>> +                               initramfs_base_name=${imageType}-${INITRAMFS_NAME}
>> +                               initramfs_symlink_name=${imageType}-${INITRAMFS_LINK_NAME}
>> +                               install -m 0644 ${KERNEL_OUTPUT_DIR}/${imageType}.initramfs $deployDir/${initramfs_base_name}.bin
>> +                               ln -sf ${initramfs_base_name}.bin $deployDir/${initramfs_symlink_name}.bin
>> +                       fi
>>                done
>>        fi
>> }
>> --
>> 2.7.4
>> 
>> --
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core
> 
> 
> 
> --
> Alex Kiernan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2346 bytes
Desc: not available
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20180916/a151f1a9/attachment-0002.p7s>


More information about the Openembedded-core mailing list