[v5] image-postproc: gate systemd preset-all on masked unit state

Message ID 20260429064353.1372987-1-badrikesh.prusty@siemens.com
State New
Headers show
Series [v5] image-postproc: gate systemd preset-all on masked unit state | expand

Commit Message

Badrikesh Prusty April 29, 2026, 6:43 a.m. UTC
Skip systemd preset-all during image postprocessing if masked unit files
are detected, to avoid non-fatal failures when presetting units that are
already masked.

Fixes: 72b88a12 ("classes/image-postproc: Enable systemd units based on systemd presets")

Signed-off-by: Badrikesh Prusty <badrikesh.prusty@siemens.com>
---
 meta/classes-recipe/rootfs.bbclass | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--
2.47.3

Comments

Jan Kiszka April 29, 2026, 10:41 a.m. UTC | #1
On 29.04.26 08:43, Badrikesh Prusty wrote:
> Skip systemd preset-all during image postprocessing if masked unit files
> are detected, to avoid non-fatal failures when presetting units that are
> already masked.
> 
> Fixes: 72b88a12 ("classes/image-postproc: Enable systemd units based on systemd presets")
> 
> Signed-off-by: Badrikesh Prusty <badrikesh.prusty@siemens.com>
> ---
>  meta/classes-recipe/rootfs.bbclass | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes-recipe/rootfs.bbclass b/meta/classes-recipe/rootfs.bbclass
> index 8b502a50..ca847b30 100644
> --- a/meta/classes-recipe/rootfs.bbclass
> +++ b/meta/classes-recipe/rootfs.bbclass
> @@ -574,7 +574,9 @@ image_postprocess_populate_systemd_preset() {
>          --show systemd || echo "" )
> 
>      if (test "$SYSTEMD_INSTALLED" = "installed"); then
> -        sudo chroot '${ROOTFSDIR}' systemctl preset-all --preset-mode="enable-only"
> +        # Skip preset-all if any masked units exist
> +        sudo chroot '${ROOTFSDIR}' systemctl list-unit-files --state=masked --no-legend | grep -q '^' \
> +            || sudo chroot '${ROOTFSDIR}' systemctl preset-all --preset-mode="enable-only"

Minor optimization: I would execute the test and preset-all in the same
chroot instance.

Jan

Patch

diff --git a/meta/classes-recipe/rootfs.bbclass b/meta/classes-recipe/rootfs.bbclass
index 8b502a50..ca847b30 100644
--- a/meta/classes-recipe/rootfs.bbclass
+++ b/meta/classes-recipe/rootfs.bbclass
@@ -574,7 +574,9 @@  image_postprocess_populate_systemd_preset() {
         --show systemd || echo "" )

     if (test "$SYSTEMD_INSTALLED" = "installed"); then
-        sudo chroot '${ROOTFSDIR}' systemctl preset-all --preset-mode="enable-only"
+        # Skip preset-all if any masked units exist
+        sudo chroot '${ROOTFSDIR}' systemctl list-unit-files --state=masked --no-legend | grep -q '^' \
+            || sudo chroot '${ROOTFSDIR}' systemctl preset-all --preset-mode="enable-only"
     fi
 }