diff mbox series

[meta-security] dm-verity-image-initramfs: Allow compressed image types

Message ID 20230619065728.189934-1-stephan.wurm@a-eberle.de
State New
Headers show
Series [meta-security] dm-verity-image-initramfs: Allow compressed image types | expand

Commit Message

Stephan Wurm June 19, 2023, 6:57 a.m. UTC
Using <DM_VERITY_IMAGE_TYPE> in the depends variable does not work for
compressed image types like squashfs-zst, as the resulting task
dependency still contains the incompatible dash. Replacing the dash by
an underscore resolves this issue.

Signed-off-by: Stephan Wurm <stephan.wurm@a-eberle.de>
---
 recipes-core/images/dm-verity-image-initramfs.bb | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

akuster808 June 21, 2023, 11:16 p.m. UTC | #1
this fails to build:

The stack trace of python calls that resulted in this exception/failure was:
File: '<code>', lineno: 24, function: <module>
0020:__anon_70__home_akuster_oss_clean_poky_meta_classes_recipe_rootfs_postcommands_bbclass(d)
0021:__anon_125__home_akuster_oss_clean_poky_meta_classes_recipe_image_bbclass(d)
0022:__anon_181__home_akuster_oss_clean_poky_meta_classes_recipe_image_bbclass(d)
0023:__anon_518__home_akuster_oss_clean_poky_meta_classes_recipe_image_bbclass(d)
  *** 
0024:__anon_28__home_akuster_oss_maint_meta_security_recipes_core_images_dm_verity_image_initramfs_bb(d)
File: 
'/home/akuster/oss/maint/meta-security/recipes-core/images/dm-verity-image-initramfs.bb', 
lineno: 26, function: 
__anon_28__home_akuster_oss_maint_meta_security_recipes_core_images_dm_verity_image_initramfs_bb
      0022:python __anonymous() {
      0023:    verity_image = d.getVar('DM_VERITY_IMAGE')
      0024:    verity_type = d.getVar('DM_VERITY_IMAGE_TYPE')
      0025:
  *** 0026:    dep = ' %s:do_image_%s' % (verity_image, 
verity_type.replace('-', '_'))
      0027:    d.appendVarFlag('do_image', 'depends', dep)
      0028:}
      0029:
      0030:# Ensure dm-verity.env is updated also when rebuilding 
DM_VERITY_IMAGE
Exception: AttributeError: 'NoneType' object has no attribute 'replace


On 6/19/23 2:57 AM, Stephan Wurm wrote:
> Using <DM_VERITY_IMAGE_TYPE> in the depends variable does not work for
> compressed image types like squashfs-zst, as the resulting task
> dependency still contains the incompatible dash. Replacing the dash by
> an underscore resolves this issue.
>
> Signed-off-by: Stephan Wurm <stephan.wurm@a-eberle.de>
> ---
>   recipes-core/images/dm-verity-image-initramfs.bb | 8 +++++++-
>   1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/recipes-core/images/dm-verity-image-initramfs.bb b/recipes-core/images/dm-verity-image-initramfs.bb
> index 187aeae..fc12ba0 100644
> --- a/recipes-core/images/dm-verity-image-initramfs.bb
> +++ b/recipes-core/images/dm-verity-image-initramfs.bb
> @@ -19,7 +19,13 @@ IMAGE_FEATURES = ""
>   IMAGE_LINGUAS = ""
>   
>   # Can we somehow inspect reverse dependencies to avoid these variables?
> -do_image[depends] += "${DM_VERITY_IMAGE}:do_image_${DM_VERITY_IMAGE_TYPE}"
> +python __anonymous() {
> +    verity_image = d.getVar('DM_VERITY_IMAGE')
> +    verity_type = d.getVar('DM_VERITY_IMAGE_TYPE')
> +
> +    dep = ' %s:do_image_%s' % (verity_image, verity_type.replace('-', '_'))
> +    d.appendVarFlag('do_image', 'depends', dep)
> +}
>   
>   # Ensure dm-verity.env is updated also when rebuilding DM_VERITY_IMAGE
>   do_image[nostamp] = "1"
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#60337): https://lists.yoctoproject.org/g/yocto/message/60337
> Mute This Topic: https://lists.yoctoproject.org/mt/99618767/3616698
> Group Owner: yocto+owner@lists.yoctoproject.org
> Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [akuster808@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Stephan Wurm June 22, 2023, 9:06 a.m. UTC | #2
Hello akuster808,

Am Mittwoch, dem 21.06.2023 um 19:16 -0400 schrieb akuster808:
> this fails to build:
> 
> The stack trace of python calls that resulted in this
> exception/failure was:
> File: '<code>', lineno: 24, function: <module>
> 0020:__anon_70__home_akuster_oss_clean_poky_meta_classes_recipe_rootf
> s_postcommands_bbclass(d)
> 0021:__anon_125__home_akuster_oss_clean_poky_meta_classes_recipe_imag
> e_bbclass(d)
> 0022:__anon_181__home_akuster_oss_clean_poky_meta_classes_recipe_imag
> e_bbclass(d)
> 0023:__anon_518__home_akuster_oss_clean_poky_meta_classes_recipe_imag
> e_bbclass(d)
>   *** 
> 0024:__anon_28__home_akuster_oss_maint_meta_security_recipes_core_ima
> ges_dm_verity_image_initramfs_bb(d)
> File: 
> '/home/akuster/oss/maint/meta-security/recipes-core/images/dm-verity-
> image-initramfs.bb', 
> lineno: 26, function: 
> __anon_28__home_akuster_oss_maint_meta_security_recipes_core_images_d
> m_verity_image_initramfs_bb
>       0022:python __anonymous() {
>       0023:    verity_image = d.getVar('DM_VERITY_IMAGE')
>       0024:    verity_type = d.getVar('DM_VERITY_IMAGE_TYPE')
>       0025:
>   *** 0026:    dep = ' %s:do_image_%s' % (verity_image, 
> verity_type.replace('-', '_'))
>       0027:    d.appendVarFlag('do_image', 'depends', dep)
>       0028:}
>       0029:
>       0030:# Ensure dm-verity.env is updated also when rebuilding 
> DM_VERITY_IMAGE
> Exception: AttributeError: 'NoneType' object has no attribute
> 'replace
this looks like `DM_VERITY_IMAGE_TYPE` was never set or is empty,
hence the `replace` operation cannot work.

I tested this on kirkstone with `DM_VERITY_IMAGE_TYPE` set to
`squashfs` or `squashfs-zst`, while `DM_VERITY_IMAGE` was
configured to reflect my normal rootfs image.


Best regards
Stephan
diff mbox series

Patch

diff --git a/recipes-core/images/dm-verity-image-initramfs.bb b/recipes-core/images/dm-verity-image-initramfs.bb
index 187aeae..fc12ba0 100644
--- a/recipes-core/images/dm-verity-image-initramfs.bb
+++ b/recipes-core/images/dm-verity-image-initramfs.bb
@@ -19,7 +19,13 @@  IMAGE_FEATURES = ""
 IMAGE_LINGUAS = ""
 
 # Can we somehow inspect reverse dependencies to avoid these variables?
-do_image[depends] += "${DM_VERITY_IMAGE}:do_image_${DM_VERITY_IMAGE_TYPE}"
+python __anonymous() {
+    verity_image = d.getVar('DM_VERITY_IMAGE')
+    verity_type = d.getVar('DM_VERITY_IMAGE_TYPE')
+
+    dep = ' %s:do_image_%s' % (verity_image, verity_type.replace('-', '_'))
+    d.appendVarFlag('do_image', 'depends', dep)
+}
 
 # Ensure dm-verity.env is updated also when rebuilding DM_VERITY_IMAGE
 do_image[nostamp] = "1"