[OE-core] [PATCH v2] kernel.bbclass: avoid duplicates in KERNEL_IMAGETYPE_FOR_MAKE

Burton, Ross ross.burton at intel.com
Tue May 15 13:48:15 UTC 2018


Hi Andre,

The autobuilder is failing in mips64 builds and I suspect this patch
is to blame.  For example
https://autobuilder.yocto.io/builders/nightly-mips64/builds/1001.

Ross

On 14 May 2018 at 23:33, Andre McCurdy <armccurdy at gmail.com> wrote:
> Currently if KERNEL_IMAGETYPES contains both vmlinux and vmlinux.gz,
> KERNEL_IMAGETYPE_FOR_MAKE will end up containing two copies of
> vmlinux, which will result in two calls to "make vmlinux" from
> kernel_do_compile().
>
> Avoid duplicating vmlinux in KERNEL_IMAGETYPE_FOR_MAKE plus some
> minor non-functional updates to formatting and comments.
>
> Signed-off-by: Andre McCurdy <armccurdy at gmail.com>
> ---
>  v2: refresh + make typeformake a set based on suggestion from Martin Hundebøll
>
>  meta/classes/kernel.bbclass | 28 ++++++++++++++++------------
>  1 file changed, 16 insertions(+), 12 deletions(-)
>
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index 6595a04..68d2185 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -62,32 +62,36 @@ python __anonymous () {
>      type = d.getVar('KERNEL_IMAGETYPE') or ""
>      alttype = d.getVar('KERNEL_ALT_IMAGETYPE') or ""
>      types = d.getVar('KERNEL_IMAGETYPES') or ""
> -    kname = d.getVar('KERNEL_PACKAGE_NAME') or "kernel"
>      if type not in types.split():
>          types = (type + ' ' + types).strip()
>      if alttype not in types.split():
>          types = (alttype + ' ' + types).strip()
>      d.setVar('KERNEL_IMAGETYPES', types)
>
> +    # KERNEL_IMAGETYPES may contain a mixture of image types supported directly
> +    # by the kernel build system and types which are created by post-processing
> +    # the output of the kernel build system (e.g. compressing vmlinux ->
> +    # vmlinux.gz in kernel_do_compile()).
> +    # KERNEL_IMAGETYPE_FOR_MAKE should contain only image types supported
> +    # directly by the kernel build system.
>      if not d.getVar('KERNEL_IMAGETYPE_FOR_MAKE'):
> -        # 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)
> +        typeformake = set()
> +        for type in types.split():
> +            if type == 'vmlinux.gz':
> +                type = 'vmlinux'
> +            typeformake.add(type)
> +
> +        d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', ' '.join(typeformake))
> +
> +    kname = d.getVar('KERNEL_PACKAGE_NAME') or "kernel"
> +    imagedest = d.getVar('KERNEL_IMAGEDEST')
>
>      for type in types.split():
>          typelower = type.lower()
> -        imagedest = d.getVar('KERNEL_IMAGEDEST')
> -
>          d.appendVar('PACKAGES', ' %s-image-%s' % (kname, typelower))
> -
>          d.setVar('FILES_' + kname + '-image-' + typelower, '/' + imagedest + '/' + type + '-${KERNEL_VERSION_NAME}' + ' /' + imagedest + '/' + type)
> -
>          d.appendVar('RDEPENDS_%s-image' % kname, ' %s-image-%s' % (kname, typelower))
> -
>          d.setVar('PKG_%s-image-%s' % (kname,typelower), '%s-image-%s-${KERNEL_VERSION_PKG_NAME}' % (kname, typelower))
> -
>          d.setVar('ALLOW_EMPTY_%s-image-%s' % (kname, typelower), '1')
>
>      image = d.getVar('INITRAMFS_IMAGE')
> --
> 1.9.1
>
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>



More information about the Openembedded-core mailing list