[OE-core] [morty][PATCH] kernel.bbclass: fix KERNEL_IMAGETYPE(S) for Image.gz

akuster808 akuster808 at gmail.com
Thu Sep 28 14:29:37 UTC 2017


Nicolas,


On 09/27/2017 12:20 PM, Nicolas Dechesne wrote:
> On Wed, Sep 13, 2017 at 12:38 PM, Nicolas Dechesne
> <nicolas.dechesne at linaro.org> wrote:
>> KERNEL_IMAGETYPES lists all the kernel images that we want to build. in
>> cb17b6c2a7 (kernel.bbclass: support kernel image type of vmlinux.gz), some logic
>> was added to support vmlinux.gz which is not a target built by kernel
>> makefiles (only vmlinux). It is clear that the goal of this logic is only to
>> support vmlinux.gz and not others compressed format (such as Image.gz) which are
>> valid target for kernel makefiles.
>>
>> For Image.gz we should rely on the kernel makefiles and not do the compression
>> in kernel class.
>>
>> This patch updates the logic used to filter out non supported kernel target from
>> KERNEL_IMAGETYPES, and make vmlinux.gz a 'special case', instead of *.gz. If
>> more special cases are needed in the future, we could add them in a similar way.
>>
>> This patch should be a no-op for anyone using vmlinux or vmlinux.gz, and on top
>> of that it is fixing the build for Image.gz which was not working until now.
>>
>> Signed-off-by: Nicolas Dechesne <nicolas.dechesne at linaro.org>
>> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
>> (cherry picked from commit cfc0c897656fe67e81a6a5dcd936dff785529f41)
>> Signed-off-by: Nicolas Dechesne <nicolas.dechesne at linaro.org>
>> ---
> I noticed that morty was updated very recently, and this patch wasn't
> merged. Is there any issue with this patch? We would really need this
> fix in morty.
Its in my akuster/morty-next. I am working in some kernel boot issues.
Once that gets working I will submit a pull request which will include
this change.

- armin
>
>
>>  meta/classes/kernel.bbclass | 18 +++++++++---------
>>  1 file changed, 9 insertions(+), 9 deletions(-)
>>
>> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
>> index eefe574a60..f8318b83a1 100644
>> --- a/meta/classes/kernel.bbclass
>> +++ b/meta/classes/kernel.bbclass
>> @@ -28,7 +28,6 @@ KERNEL_VERSION_PKG_NAME = "${@legitimize_package_name(d.getVar('KERNEL_VERSION',
>>  KERNEL_VERSION_PKG_NAME[vardepvalue] = "${LINUX_VERSION}"
>>
>>  python __anonymous () {
>> -    import re
>>
>>      # Merge KERNEL_IMAGETYPE and KERNEL_ALT_IMAGETYPE into KERNEL_IMAGETYPES
>>      type = d.getVar('KERNEL_IMAGETYPE', True) or ""
>> @@ -40,7 +39,10 @@ python __anonymous () {
>>          types = (alttype + ' ' + types).strip()
>>      d.setVar('KERNEL_IMAGETYPES', types)
>>
>> -    typeformake = re.sub(r'\.gz', '', types)
>> +    # some commonly used kernel images aren't generated by the kernel build system, such as vmlinux.gz
>> +    # typeformake lists only valid kernel make targets, and post processing can be done after the kernel
>> +    # is built (such as using gzip to compress vmlinux)
>> +    typeformake = types.replace('vmlinux.gz', 'vmlinux')
>>      d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake)
>>
>>      for type in types.split():
>> @@ -262,14 +264,12 @@ kernel_do_compile() {
>>         fi
>>         for typeformake in ${KERNEL_IMAGETYPE_FOR_MAKE} ; do
>>                 oe_runmake ${typeformake} CC="${KERNEL_CC}" LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} $use_alternate_initrd
>> -               for type in ${KERNEL_IMAGETYPES} ; do
>> -                       if test "${typeformake}.gz" = "${type}"; then
>> -                               mkdir -p "${KERNEL_OUTPUT_DIR}"
>> -                               gzip -9c < "${typeformake}" > "${KERNEL_OUTPUT_DIR}/${type}"
>> -                               break;
>> -                       fi
>> -               done
>>         done
>> +       # vmlinux.gz is not built by kernel
>> +       if (echo "${KERNEL_IMAGETYPES}" | grep -wq "vmlinux\.gz"); then
>> +               mkdir -p "${KERNEL_OUTPUT_DIR}"
>> +               gzip -9c < ${B}/vmlinux > "${KERNEL_OUTPUT_DIR}/vmlinux.gz"
>> +       fi
>>  }
>>
>>  do_compile_kernelmodules() {
>> --
>> 2.11.0
>>




More information about the Openembedded-core mailing list