diff options
Diffstat (limited to 'meta-agl-core')
-rw-r--r-- | meta-agl-core/classes/image_types_wic_workaround.bbclass | 32 | ||||
-rw-r--r-- | meta-agl-core/conf/distro/poky-agl.conf | 4 |
2 files changed, 33 insertions, 3 deletions
diff --git a/meta-agl-core/classes/image_types_wic_workaround.bbclass b/meta-agl-core/classes/image_types_wic_workaround.bbclass new file mode 100644 index 000000000..a6ea0580f --- /dev/null +++ b/meta-agl-core/classes/image_types_wic_workaround.bbclass @@ -0,0 +1,32 @@ +# This is a workaround for the race condition between do_image_wic and other +# do_image_* tasks. It ensures that no other do_image_* task can be running and +# reading the rootfs directory at the same time as do_image_wic is modifying +# the /etc/fstab file in the rootfs directory. +# +# A much better fix has been submitted upstream [1], but we can't carry those +# modifications to `scripts/lib/wic` from poky easily in meta-agl. So instead +# we have this workaround until the upstream fix is accepted and backported. +# +# Serializing the image functions as done here impacts build speed but it's +# better to be slow and correct than to be fast and wrong. +# +# [1]: https://lists.openembedded.org/g/openembedded-core/topic/patch_5_6_wic_copy_rootfs/79592787, +# https://lists.openembedded.org/g/openembedded-core/topic/patch_6_6_wic_optimise/79592788 +# and related patches. +# +# Bug-AGL: SPEC-3621 + +def get_workaround_wic_typedeps(d): + if d.getVar('USING_WIC'): + fstypes = d.getVar('IMAGE_FSTYPES').split() + basetypes = set() + for fs in fstypes: + # Add the basetype to our set of basetypes in use + t = fs.split('.')[0] + if t != "wic": + basetypes.add(t) + return ' '.join(basetypes) + else: + return '' + +IMAGE_TYPEDEP_wic += "${@get_workaround_wic_typedeps(d)}" diff --git a/meta-agl-core/conf/distro/poky-agl.conf b/meta-agl-core/conf/distro/poky-agl.conf index 6d25af90f..f2b622190 100644 --- a/meta-agl-core/conf/distro/poky-agl.conf +++ b/meta-agl-core/conf/distro/poky-agl.conf @@ -203,6 +203,4 @@ BBMASK += "meta-security/recipes-kernel/linux/linux-%_5.%.bbappend" # do_image_tar and do_image_ext4 can run in parallel # This needs to be fixed upstream: # See https://bugzilla.yoctoproject.org/show_bug.cgi?id=13994 -# For convenience restricted to ext4 and tar image types. -AGL_FORBID_FSTAB_UPDATE ?= "${@bb.utils.contains_any('IMAGE_FSTYPES', 'ext4 ext4.xz tar tar.gz tar.bz2 tar.xz', '--no-fstab-update', '', d)}" -WIC_CREATE_EXTRA_ARGS_append = " ${AGL_FORBID_FSTAB_UPDATE}" +INHERIT += "image_types_wic_workaround" |