[OE-core] [PATCH v2] kernel.bbclass: avoid duplicates in KERNEL_IMAGETYPE_FOR_MAKE
Andre McCurdy
armccurdy at gmail.com
Tue May 15 19:23:41 UTC 2018
On Tue, May 15, 2018 at 6:48 AM, Burton, Ross <ross.burton at intel.com> wrote:
> 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.
Yes.
$ bitbake-diffsigs ... ...
basehash changed from 4c73c2d1e35cbb6229786c026945a8b7 to
1fc1b817a40ff6510533d3a3f3c06492
Variable KERNEL_IMAGETYPE_FOR_MAKE value changed:
"[-vmlinux.bin-] vmlinux {+vmlinux.bin+}"
I've sent a v3.
> 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