[OE-core] [PATCH 1/2] image.bbclass: Correct chaining compression support

Martin Hundebøll mnhu at prevas.dk
Tue Sep 19 09:23:33 UTC 2017


Hi Tom,

On 2017-07-22 00:06, Tom Rini wrote:
> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> index de535ce6fcff..bd6a5b7b810a 100644
> --- a/meta/classes/image.bbclass
> +++ b/meta/classes/image.bbclass
> @@ -453,7 +453,7 @@ python () {
>           rm_tmp_images = set()
>           def gen_conversion_cmds(bt):
>               for ctype in ctypes:
> -                if bt[bt.find('.') + 1:] == ctype:
> +                if bt.endswith("." + ctype):
>                       type = bt[0:-len(ctype) - 1]
>                       if type.startswith("debugfs_"):
>                           type = type[8:]

This is the change that in fact messes with our cpio.gz.u-boot image 
types, causing base hash changes.

I suspect the changed if-check to be too permissive. In our case, it now 
matches any ctype that ends with ".u-boot", and not just "gz.u-boot" as 
set in IMAGE_FSTYPES.

Wouldn't it be correct to match on the entire bt variable? I.e.

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass 

index ef2b38aeaf..818932f7f1 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -454,7 +454,7 @@ python () {
          rm_tmp_images = set()
          def gen_conversion_cmds(bt):
              for ctype in ctypes:
-                if bt.endswith("." + ctype):
+                if bt.split('.', 1) == [t, ctype]:
                      type = bt[0:-len(ctype) - 1]
                      if type.startswith("debugfs_"):
                          type = type[8:]

This works for me, preliminary tested with the following fs types 
configured:

	IMAGE_FSTYPES = "cpio.gz.u-boot"
	IMAGE_FSTYPES = "tar cpio cpio.gz cpio.gz.u-boot"
	IMAGE_FSTYPES = "tar cpio cpio.gz cpio.gz.u-boot tar.bz2 jffs2 wic 
wic.bmap"

// Martin



More information about the Openembedded-core mailing list