From f6ed18cd183ef3f618f265f14bd476b385aa5ef1 Mon Sep 17 00:00:00 2001
From: Dimitris Karakasilis <dimitris@karakasilis.me>
Date: Mon, 27 May 2024 09:29:52 +0300
Subject: [PATCH] Try a simpler version of "udevadm trigger"

in case the other options are not supported

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
---
 pkg/lib/lock.go   | 6 ++++--
 pkg/lib/unlock.go | 4 +++-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/pkg/lib/lock.go b/pkg/lib/lock.go
index 6bcf578..25e7179 100644
--- a/pkg/lib/lock.go
+++ b/pkg/lib/lock.go
@@ -58,8 +58,10 @@ func Luksify(label, version string, tpm bool) (string, error) {
 		return "", fmt.Errorf("version must be luks1 or luks2")
 	}
 
-	// Make sure ghw will see all partitions correctly
-	out, err := SH("udevadm trigger --settle -v --type=all")
+	// Make sure ghw will see all partitions correctly.
+	// Some versions of udevadm don't support --settle (e.g. alpine)
+	// and older versions don't have --type=all. Try the simpler version then.
+	out, err := SH("udevadm trigger --settle -v --type=all || udevadm trigger -v")
 	if err != nil {
 		return "", fmt.Errorf("udevadm trigger failed: %w, out: %s", err, out)
 	}
diff --git a/pkg/lib/unlock.go b/pkg/lib/unlock.go
index 00fae6c..47609a8 100644
--- a/pkg/lib/unlock.go
+++ b/pkg/lib/unlock.go
@@ -38,8 +38,10 @@ func UnlockAllWithLogger(tpm bool, logger zerolog.Logger) error {
 		return nil
 	}
 
+	// Some versions of udevadm don't support --settle (e.g. alpine)
+	// and older versions don't have --type=all. Try the simpler version then.
 	logger.Info().Msgf("triggering udev to populate disk info")
-	_, err = utils.SH("udevadm trigger -v --type=all")
+	_, err = utils.SH("udevadm trigger --settle -v --type=all || udevadm trigger -v")
 	if err != nil {
 		return err
 	}