Subject: [bug#66586] [PATCH v3] gnu: lvm2: Remove systemd rule.

From: Simon Tournier <[email-masked]>
Date: Tue, 31 Oct 2023 23:11:42 +0100

Follow-up of 3991d9e4d9867ec499283bfc71b34d7bfebe49b3.

* gnu/packages/patches/lvm2-no-systemd.patch: New file.
* gnu/packages/linux.scm (lvm2)[source]: Apply patch.
* gnu/local.mk: Register new patch.

Change-Id: I916fb5f6ae786d22af69f0a7d81c0c28da3c96ea
---
 gnu/local.mk                               |  1 +
 gnu/packages/linux.scm                     |  1 +
 gnu/packages/patches/lvm2-no-systemd.patch | 19 +++++++++++++++++++
 3 files changed, 21 insertions(+)
 create mode 100644 gnu/packages/patches/lvm2-no-systemd.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 8d817379a7..27e57302ae 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1629,6 +1629,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mcrypt-CVE-2012-4527.patch			\
   %D%/packages/patches/libmemcached-build-with-gcc7.patch	\
   %D%/packages/patches/libmhash-hmac-fix-uaf.patch		\
+  %D%/packages/patches/lvm2-no-systemd.patch    		\
   %D%/packages/patches/maturin-no-cross-compile.patch		\
   %D%/packages/patches/mecab-variable-param.patch		\
   %D%/packages/patches/memtest86+-build-reproducibly.patch	\
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 7a9f357681..6abdb23958 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -4494,6 +4494,7 @@ (define-public lvm2
               (sha256
                (base32
                 "0z6w6bknhwh1n3qfkb5ij6x57q3wjf28lq3l8kh7rkhsplinjnjc"))
+              (patches (search-patches "lvm2-no-systemd.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/patches/lvm2-no-systemd.patch b/gnu/packages/patches/lvm2-no-systemd.patch
new file mode 100644
index 0000000000..f786cd9705
--- /dev/null
+++ b/gnu/packages/patches/lvm2-no-systemd.patch
@@ -0,0 +1,19 @@
+Fixes <https://issues.guix.gnu.org/65177>.
+
+Run 'vgchange' directly instead of attempting to run it via 'systemd-run' as
+the udev rules included in lvm2 >= 2.03.14 do.
+
+diff --git a/udev/69-dm-lvm.rules.in b/udev/69-dm-lvm.rules.in
+index ff15681..d3cc125 100644
+--- a/udev/69-dm-lvm.rules.in
++++ b/udev/69-dm-lvm.rules.in
+@@ -75,8 +75,7 @@ LABEL="lvm_scan"
+ # TODO: adjust the output of vgchange -aay so that
+ # it's better suited to appearing in the journal.
+ 
+-IMPORT{program}="(LVM_EXEC)/lvm pvscan --cache --listvg --checkcomplete --vgonline --autoactivation event --udevoutput --journal=output $env{DEVNAME}"
+-ENV{LVM_VG_NAME_COMPLETE}=="?*", RUN+="(SYSTEMDRUN) --no-block --property DefaultDependencies=no --unit lvm-activate-$env{LVM_VG_NAME_COMPLETE} (LVM_EXEC)/lvm vgchange -aay --autoactivation event $env{LVM_VG_NAME_COMPLETE}"
++ENV{LVM_VG_NAME_COMPLETE}=="?*", RUN+="(LVM_EXEC)/lvm vgchange -aay --autoactivation event $env{LVM_VG_NAME_COMPLETE}"
+ GOTO="lvm_end"
+ 
+ LABEL="lvm_end"

base-commit: 3991d9e4d9867ec499283bfc71b34d7bfebe49b3
-- 
2.41.0