* [PATCH] image_types: catch exception if no CONVERSION_CMD is defined
@ 2026-04-17 23:54 Talel BELHAJ SALEM
2026-04-21 4:49 ` [OE-core] " Khem Raj
0 siblings, 1 reply; 3+ messages in thread
From: Talel BELHAJ SALEM @ 2026-04-17 23:54 UTC (permalink / raw)
To: openembedded-core; +Cc: Talel BELHAJ SALEM
When new conversion type is defined, BitBake assumes
that CONVERSION_CMD: is defined for the type, so it gets
the variable which returns NoneType if it is not defined.
That generates the following exception which may not be clear
for some:
--
ERROR: /../techleef-image.bb: Error executing a python function in <code>:
The stack trace of python calls that resulted in this exception/failure was:
File: '<code>', lineno: 16, function: <module>
0012:__anon_117__.._recipe_populate_sdk_base_bbclass(d)
0013:__anon_427__.._recipe_populate_sdk_base_bbclass(d)
0014:__anon_131__.._recipe_image_bbclass(d)
0015:__anon_187__.._recipe_image_bbclass(d)
*** 0016:__anon_535__.._recipe_image_bbclass(d)
0017:__anon_44__.._recipe_rootfs_ipk_bbclass(d)
0018:__anon_191__.._recipe_siteinfo_bbclass(d)
0019:__anon_17__.._recipe_license_image_bbclass(d)
0020:__anon_206__.._recipe_image_types_wic_bbclass(d)
File: '/../image.bbclass', lineno: 501, function: __anon_535__.._recipe_image_bbclass
0497: if original_type not in alltypes:
0498: rm_tmp_images.add(localdata.expand("${IMAGE_NAME}.${type}"))
0499:
0500: for bt in basetypes[t]:
*** 0501: gen_conversion_cmds(bt)
0502:
0503: localdata.setVar('type', realt)
0504: if t not in alltypes:
0505: rm_tmp_images.add(localdata.expand("${IMAGE_NAME}.${type}"))
File: '/../image.bbclass', lineno: 490, function: gen_conversion_cmds
0486: type = type[8:]
0487: # Create input image first.
0488: gen_conversion_cmds(type)
0489: localdata.setVar('type', type)
*** 0490: cmd = "\t" + localdata.getVar("CONVERSION_CMD:" + ctype)
0491: if cmd not in cmds:
0492: cmds.append(cmd)
0493: vardeps.add('CONVERSION_CMD:' + ctype)
0494: subimage = type + "." + ctype
Exception: TypeError: can only concatenate str (not "NoneType") to str
ERROR: Parsing halted due to errors, see error messages above
--
Fail with human readable error if no CONVERSION_CMD is defined for
any defined subtype.
Signed-off-by: Talel BELHAJ SALEM <bhstalel@gmail.com>
---
meta/classes-recipe/image_types.bbclass | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/meta/classes-recipe/image_types.bbclass b/meta/classes-recipe/image_types.bbclass
index e6ef0ce11e..326602d960 100644
--- a/meta/classes-recipe/image_types.bbclass
+++ b/meta/classes-recipe/image_types.bbclass
@@ -44,6 +44,10 @@ def imagetypes_getdepends(d):
deprecated.add(var)
for ctype in resttypes:
+ ctype_cmd = d.getVar('CONVERSION_CMD:' + ctype)
+ if not ctype_cmd:
+ bb.fatal('No CONVERSION_CMD defined for subtype "%s"'
+ ' - possibly invalid conversion type name or missing support class' % ctype)
adddep(d.getVar("CONVERSION_DEPENDS_%s" % ctype), deps)
adddep(d.getVar("COMPRESS_DEPENDS_%s" % ctype), deps)
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [OE-core] [PATCH] image_types: catch exception if no CONVERSION_CMD is defined
2026-04-17 23:54 [PATCH] image_types: catch exception if no CONVERSION_CMD is defined Talel BELHAJ SALEM
@ 2026-04-21 4:49 ` Khem Raj
2026-04-21 6:19 ` Talel BELHADJ SALEM
0 siblings, 1 reply; 3+ messages in thread
From: Khem Raj @ 2026-04-21 4:49 UTC (permalink / raw)
To: bhstalel; +Cc: openembedded-core
[-- Attachment #1: Type: text/plain, Size: 4743 bytes --]
Add meta-tegra to layermix and pick a tegra machine e.g.
MACHINE="p3737-0000-p3701-0005"
and then it ends up with
ERROR:
/mnt/b/yoe/master/kas-build/../layers/meta-openembedded/meta-filesystems/recipes-filesystems/images/
meta-filesystems-image-all.bb: No CONVERSION_CMD defined for subtype "tar"
- possibly invalid conversion type name or missing support class
ERROR:
/mnt/b/yoe/master/kas-build/../layers/meta-openembedded/meta-filesystems/recipes-filesystems/images/
meta-filesystems-image-ptest.bb: No CONVERSION_CMD defined for subtype
"tar" - possibly invalid conversion type name or missing support class
ERROR: Parsing halted due to errors, see error messages above
I wonder if CONVERSION_CMD is missing for tar in the original class
On Fri, Apr 17, 2026 at 4:54 PM BELHADJ SALEM Talel via
lists.openembedded.org <bhstalel=gmail.com@lists.openembedded.org> wrote:
> When new conversion type is defined, BitBake assumes
> that CONVERSION_CMD: is defined for the type, so it gets
> the variable which returns NoneType if it is not defined.
>
> That generates the following exception which may not be clear
> for some:
>
> --
> ERROR: /../techleef-image.bb: Error executing a python function in <code>:
>
> The stack trace of python calls that resulted in this exception/failure
> was:
> File: '<code>', lineno: 16, function: <module>
> 0012:__anon_117__.._recipe_populate_sdk_base_bbclass(d)
> 0013:__anon_427__.._recipe_populate_sdk_base_bbclass(d)
> 0014:__anon_131__.._recipe_image_bbclass(d)
> 0015:__anon_187__.._recipe_image_bbclass(d)
> *** 0016:__anon_535__.._recipe_image_bbclass(d)
> 0017:__anon_44__.._recipe_rootfs_ipk_bbclass(d)
> 0018:__anon_191__.._recipe_siteinfo_bbclass(d)
> 0019:__anon_17__.._recipe_license_image_bbclass(d)
> 0020:__anon_206__.._recipe_image_types_wic_bbclass(d)
> File: '/../image.bbclass', lineno: 501, function:
> __anon_535__.._recipe_image_bbclass
> 0497: if original_type not in alltypes:
> 0498:
> rm_tmp_images.add(localdata.expand("${IMAGE_NAME}.${type}"))
> 0499:
> 0500: for bt in basetypes[t]:
> *** 0501: gen_conversion_cmds(bt)
> 0502:
> 0503: localdata.setVar('type', realt)
> 0504: if t not in alltypes:
> 0505:
> rm_tmp_images.add(localdata.expand("${IMAGE_NAME}.${type}"))
> File: '/../image.bbclass', lineno: 490, function: gen_conversion_cmds
> 0486: type = type[8:]
> 0487: # Create input image first.
> 0488: gen_conversion_cmds(type)
> 0489: localdata.setVar('type', type)
> *** 0490: cmd = "\t" +
> localdata.getVar("CONVERSION_CMD:" + ctype)
> 0491: if cmd not in cmds:
> 0492: cmds.append(cmd)
> 0493: vardeps.add('CONVERSION_CMD:' + ctype)
> 0494: subimage = type + "." + ctype
> Exception: TypeError: can only concatenate str (not "NoneType") to str
>
> ERROR: Parsing halted due to errors, see error messages above
> --
>
> Fail with human readable error if no CONVERSION_CMD is defined for
> any defined subtype.
>
> Signed-off-by: Talel BELHAJ SALEM <bhstalel@gmail.com>
> ---
> meta/classes-recipe/image_types.bbclass | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/meta/classes-recipe/image_types.bbclass
> b/meta/classes-recipe/image_types.bbclass
> index e6ef0ce11e..326602d960 100644
> --- a/meta/classes-recipe/image_types.bbclass
> +++ b/meta/classes-recipe/image_types.bbclass
> @@ -44,6 +44,10 @@ def imagetypes_getdepends(d):
> deprecated.add(var)
>
> for ctype in resttypes:
> + ctype_cmd = d.getVar('CONVERSION_CMD:' + ctype)
> + if not ctype_cmd:
> + bb.fatal('No CONVERSION_CMD defined for subtype "%s"'
> + ' - possibly invalid conversion type name or
> missing support class' % ctype)
> adddep(d.getVar("CONVERSION_DEPENDS_%s" % ctype), deps)
> adddep(d.getVar("COMPRESS_DEPENDS_%s" % ctype), deps)
>
> --
> 2.43.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#235513):
> https://lists.openembedded.org/g/openembedded-core/message/235513
> Mute This Topic: https://lists.openembedded.org/mt/118885182/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
[-- Attachment #2: Type: text/html, Size: 6506 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [OE-core] [PATCH] image_types: catch exception if no CONVERSION_CMD is defined
2026-04-21 4:49 ` [OE-core] " Khem Raj
@ 2026-04-21 6:19 ` Talel BELHADJ SALEM
0 siblings, 0 replies; 3+ messages in thread
From: Talel BELHADJ SALEM @ 2026-04-21 6:19 UTC (permalink / raw)
To: Khem Raj; +Cc: openembedded-core
[-- Attachment #1: Type: text/plain, Size: 5745 bytes --]
I have quickly checked meta-tegra and they have full image type:
tegraflash.tar and they treat it as full type with IMAGE_CMD:tegraflash.tar
The problem is that BitBake splits every entry in IMAGE_FSTYPES with "."
and takes the first as base type and the rest as conversion types
and "tar" is not a CONVERSION_CMD, actually, in the original types class,
it is an IMAGE_CMD:tar, so BitBake won't find the conversion type for tar
I also checked the IMAGE_CMD:tegraflash.tar and they ended up calling tar
directly, so they did not intend to use tar as conversion type at all.
Now I wonder how it worked before ?
The quick fix for tegra is to replace "." with "_" or "-" to avoid
splitting "tar" into a subtype
I will analyze this more later after work.
Kind Regards
Talel
On Tue, Apr 21, 2026 at 5:49 AM Khem Raj <raj.khem@gmail.com> wrote:
> Add meta-tegra to layermix and pick a tegra machine e.g.
> MACHINE="p3737-0000-p3701-0005"
> and then it ends up with
>
> ERROR:
> /mnt/b/yoe/master/kas-build/../layers/meta-openembedded/meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-all.bb: No CONVERSION_CMD defined for subtype
> "tar" - possibly invalid conversion type name or missing support class
> ERROR:
> /mnt/b/yoe/master/kas-build/../layers/meta-openembedded/meta-filesystems/recipes-filesystems/images/
> meta-filesystems-image-ptest.bb: No CONVERSION_CMD defined for subtype
> "tar" - possibly invalid conversion type name or missing support class
> ERROR: Parsing halted due to errors, see error messages above
>
> I wonder if CONVERSION_CMD is missing for tar in the original class
>
> On Fri, Apr 17, 2026 at 4:54 PM BELHADJ SALEM Talel via
> lists.openembedded.org <bhstalel=gmail.com@lists.openembedded.org> wrote:
>
>> When new conversion type is defined, BitBake assumes
>> that CONVERSION_CMD: is defined for the type, so it gets
>> the variable which returns NoneType if it is not defined.
>>
>> That generates the following exception which may not be clear
>> for some:
>>
>> --
>> ERROR: /../techleef-image.bb: Error executing a python function in
>> <code>:
>>
>> The stack trace of python calls that resulted in this exception/failure
>> was:
>> File: '<code>', lineno: 16, function: <module>
>> 0012:__anon_117__.._recipe_populate_sdk_base_bbclass(d)
>> 0013:__anon_427__.._recipe_populate_sdk_base_bbclass(d)
>> 0014:__anon_131__.._recipe_image_bbclass(d)
>> 0015:__anon_187__.._recipe_image_bbclass(d)
>> *** 0016:__anon_535__.._recipe_image_bbclass(d)
>> 0017:__anon_44__.._recipe_rootfs_ipk_bbclass(d)
>> 0018:__anon_191__.._recipe_siteinfo_bbclass(d)
>> 0019:__anon_17__.._recipe_license_image_bbclass(d)
>> 0020:__anon_206__.._recipe_image_types_wic_bbclass(d)
>> File: '/../image.bbclass', lineno: 501, function:
>> __anon_535__.._recipe_image_bbclass
>> 0497: if original_type not in alltypes:
>> 0498:
>> rm_tmp_images.add(localdata.expand("${IMAGE_NAME}.${type}"))
>> 0499:
>> 0500: for bt in basetypes[t]:
>> *** 0501: gen_conversion_cmds(bt)
>> 0502:
>> 0503: localdata.setVar('type', realt)
>> 0504: if t not in alltypes:
>> 0505:
>> rm_tmp_images.add(localdata.expand("${IMAGE_NAME}.${type}"))
>> File: '/../image.bbclass', lineno: 490, function: gen_conversion_cmds
>> 0486: type = type[8:]
>> 0487: # Create input image first.
>> 0488: gen_conversion_cmds(type)
>> 0489: localdata.setVar('type', type)
>> *** 0490: cmd = "\t" +
>> localdata.getVar("CONVERSION_CMD:" + ctype)
>> 0491: if cmd not in cmds:
>> 0492: cmds.append(cmd)
>> 0493: vardeps.add('CONVERSION_CMD:' + ctype)
>> 0494: subimage = type + "." + ctype
>> Exception: TypeError: can only concatenate str (not "NoneType") to str
>>
>> ERROR: Parsing halted due to errors, see error messages above
>> --
>>
>> Fail with human readable error if no CONVERSION_CMD is defined for
>> any defined subtype.
>>
>> Signed-off-by: Talel BELHAJ SALEM <bhstalel@gmail.com>
>> ---
>> meta/classes-recipe/image_types.bbclass | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/meta/classes-recipe/image_types.bbclass
>> b/meta/classes-recipe/image_types.bbclass
>> index e6ef0ce11e..326602d960 100644
>> --- a/meta/classes-recipe/image_types.bbclass
>> +++ b/meta/classes-recipe/image_types.bbclass
>> @@ -44,6 +44,10 @@ def imagetypes_getdepends(d):
>> deprecated.add(var)
>>
>> for ctype in resttypes:
>> + ctype_cmd = d.getVar('CONVERSION_CMD:' + ctype)
>> + if not ctype_cmd:
>> + bb.fatal('No CONVERSION_CMD defined for subtype "%s"'
>> + ' - possibly invalid conversion type name or
>> missing support class' % ctype)
>> adddep(d.getVar("CONVERSION_DEPENDS_%s" % ctype), deps)
>> adddep(d.getVar("COMPRESS_DEPENDS_%s" % ctype), deps)
>>
>> --
>> 2.43.0
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#235513):
>> https://lists.openembedded.org/g/openembedded-core/message/235513
>> Mute This Topic: https://lists.openembedded.org/mt/118885182/1997914
>> Group Owner: openembedded-core+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
>> raj.khem@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
>>
[-- Attachment #2: Type: text/html, Size: 7941 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-04-21 6:19 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-17 23:54 [PATCH] image_types: catch exception if no CONVERSION_CMD is defined Talel BELHAJ SALEM
2026-04-21 4:49 ` [OE-core] " Khem Raj
2026-04-21 6:19 ` Talel BELHADJ SALEM
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox