diff options
author | nathan <nathan_mail@nborghese.com> | 2025-03-13 20:36:27 -0400 |
---|---|---|
committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2025-03-17 20:55:38 +0900 |
commit | 614ba97d9847c2e52db9ffed9f98caf8a1e06922 (patch) | |
tree | a30b63892399e2d7e7b245423ecb5e3401d2166f | |
parent | 8e61e3baf63bf304f8714587da24015b682959d7 (diff) | |
download | guix-614ba97d9847c2e52db9ffed9f98caf8a1e06922.tar.gz guix-614ba97d9847c2e52db9ffed9f98caf8a1e06922.zip |
gnu: libvirt: Fix path to Linux modules.
* gnu/packages/virtualization.scm (libvirt): Use LINUX_MODULE_DIRECTORY to
find modules.
[source]: Add libvirt-respect-modules-path.patch.
* gnu/packages/patches/libvirt-respect-modules-path.patch: New file.
* gnu/local.mk: Register new file.
* gnu/services/virtualization.scm (libvirt-shepherd-service)
<#:environment-variables>: Pass LINUX_MODULE_DIRECTORY.
Change-Id: Idde5b59df3c1641fcbab376e6c694730769294d3
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/patches/libvirt-respect-modules-path.patch | 15 | ||||
-rw-r--r-- | gnu/packages/virtualization.scm | 3 | ||||
-rw-r--r-- | gnu/services/virtualization.scm | 11 |
4 files changed, 25 insertions, 5 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 415f3fdd66..01d13a11ae 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1674,6 +1674,7 @@ dist_patch_DATA = \ %D%/packages/patches/librewolf-neuter-locale-download.patch \ %D%/packages/patches/librewolf-use-system-wide-dir.patch \ %D%/packages/patches/libvirt-add-install-prefix.patch \ + %D%/packages/patches/libvirt-respect-modules-path.patch \ %D%/packages/patches/libziparchive-add-includes.patch \ %D%/packages/patches/lightdm-arguments-ordering.patch \ %D%/packages/patches/lightdm-vnc-ipv6.patch \ diff --git a/gnu/packages/patches/libvirt-respect-modules-path.patch b/gnu/packages/patches/libvirt-respect-modules-path.patch new file mode 100644 index 0000000000..faf40af018 --- /dev/null +++ b/gnu/packages/patches/libvirt-respect-modules-path.patch @@ -0,0 +1,15 @@ +Honor the LINUX_MODULE_DIRECTORY environment variable. + +Upstream-status: N/A + +--- a/src/util/virpci.c ++++ b/src/util/virpci.c +@@ -1459,6 +1459,7 @@ virPCIDeviceFindBestVFIOVariant(virPCIDevice *dev, + } + + uname(&unameInfo); +- modulesAliasPath = g_strdup_printf("/lib/modules/%s/modules.alias", unameInfo.release); ++ char* modulepath = getenv("LINUX_MODULE_DIRECTORY"); ++ modulesAliasPath = g_strdup_printf("%s/%s/modules.alias", modulepath ? modulepath : "/lib/modules", unameInfo.release); + if (virFileReadAll(modulesAliasPath, 8 * 1024 * 1024, &modulesAliasContent) < 0) + return -1; diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index 79e4346e60..330c790978 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -1562,7 +1562,8 @@ pretty simple, REST API.") version ".tar.xz")) (sha256 (base32 "15jpfrn3d2zyhbm5ip7bmpjb6ch2bfxm1h6yfgh0l3bw3g9ppgg1")) - (patches (search-patches "libvirt-add-install-prefix.patch")))) + (patches (search-patches "libvirt-add-install-prefix.patch" + "libvirt-respect-modules-path.patch")))) (build-system meson-build-system) (arguments (list diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm index 796b9bf86f..2a0f9bef27 100644 --- a/gnu/services/virtualization.scm +++ b/gnu/services/virtualization.scm @@ -508,11 +508,14 @@ potential infinite waits blocking libvirt.")) (list (string-append #$libvirt "/sbin/libvirtd") "-f" #$config-file #$@(if listen-tcp? '("--listen") '())) - ;; For finding qemu and ip binaries. + ;; For finding qemu, ip binaries and kernel modules. #:environment-variables - (list (string-append - "PATH=/run/current-system/profile/bin:" - "/run/current-system/profile/sbin")))) + (list + (string-append + "PATH=/run/current-system/profile/bin:" + "/run/current-system/profile/sbin") + "LINUX_MODULE_DIRECTORY=" + "/run/booted-system/kernel/lib/modules"))) (stop #~(make-kill-destructor)))))) (define libvirt-service-type |