diff options
author | Pierre Langlois <pierre.langlois@gmx.com> | 2021-04-01 22:50:56 +0100 |
---|---|---|
committer | Pierre Langlois <pierre.langlois@gmx.com> | 2021-04-02 09:23:20 +0100 |
commit | bd9e14085668217b5657e57ca5b13a4a55360d9c (patch) | |
tree | e6abd3f7cc920a87b0510f96d5ba82e2d5780366 | |
parent | d42f6b091660d1717064b2d75fe0c29a0c24f96a (diff) |
Revert "gnu: libvirt: Update to 7.1.0."
The update causes virsh to fail <https://bugs.gnu.org/47541>.
This reverts commit 383b02a370252c08eb1d43ac94d659c1d3993a35.
-rw-r--r-- | gnu/local.mk | 2 | ||||
-rw-r--r-- | gnu/packages/patches/libvirt-create-machine-cgroup.patch | 48 | ||||
-rw-r--r-- | gnu/packages/patches/libvirt-do-not-create-var-dirs.patch | 30 | ||||
-rw-r--r-- | gnu/packages/virtualization.scm | 78 |
4 files changed, 94 insertions, 64 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index b037b397c3..f2d595f2cc 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1263,7 +1263,7 @@ dist_patch_DATA = \ %D%/packages/patches/kdbusaddons-kinit-file-name.patch \ %D%/packages/patches/libffi-3.3-powerpc-fixes.patch \ %D%/packages/patches/libffi-float128-powerpc64le.patch \ - %D%/packages/patches/libvirt-do-not-create-var-dirs.patch \ + %D%/packages/patches/libvirt-create-machine-cgroup.patch \ %D%/packages/patches/libziparchive-add-includes.patch \ %D%/packages/patches/localed-xorg-keyboard.patch \ %D%/packages/patches/kdiagram-Fix-missing-link-libraries.patch \ diff --git a/gnu/packages/patches/libvirt-create-machine-cgroup.patch b/gnu/packages/patches/libvirt-create-machine-cgroup.patch new file mode 100644 index 0000000000..585ac237e1 --- /dev/null +++ b/gnu/packages/patches/libvirt-create-machine-cgroup.patch @@ -0,0 +1,48 @@ +From 9ca0b2955edea162b255b428e493cd8ffac52167 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Miguel=20=C3=81ngel=20Arruga=20Vivas?= + <rosen644835@gmail.com> +Date: Fri, 1 Nov 2019 17:29:00 +0100 +Subject: [PATCH] vircgroup: Ensure /machine group is associated with its + parent. + +Call first virCgroupNew on the parent group virCgroupNewPartition if +it is available on before the creation of the child group. This +ensures that the creation of a first level group on the unified +architecture, as the check at virCgroupV2ParseControllersFile as the +parent file is there. + +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1760233 +--- + src/util/vircgroup.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c +index b46f20abfd..33c61f2d45 100644 +--- a/src/util/vircgroup.c ++++ b/src/util/vircgroup.c +@@ -855,9 +855,6 @@ virCgroupNewPartition(const char *path, + if (virCgroupSetPartitionSuffix(path, &newPath) < 0) + goto cleanup; + +- if (virCgroupNew(-1, newPath, NULL, controllers, group) < 0) +- goto cleanup; +- + if (STRNEQ(newPath, "/")) { + char *tmp; + parentPath = g_strdup(newPath); +@@ -868,7 +865,12 @@ virCgroupNewPartition(const char *path, + + if (virCgroupNew(-1, parentPath, NULL, controllers, &parent) < 0) + goto cleanup; ++ } + ++ if (virCgroupNew(-1, newPath, parent, controllers, group) < 0) ++ goto cleanup; ++ ++ if (parent) { + if (virCgroupMakeGroup(parent, *group, create, VIR_CGROUP_NONE) < 0) + goto cleanup; + } +-- +2.23.0 + diff --git a/gnu/packages/patches/libvirt-do-not-create-var-dirs.patch b/gnu/packages/patches/libvirt-do-not-create-var-dirs.patch deleted file mode 100644 index 6b89d49fd4..0000000000 --- a/gnu/packages/patches/libvirt-do-not-create-var-dirs.patch +++ /dev/null @@ -1,30 +0,0 @@ -We define localstatedir as /var, and so we shouldn't be installing empty -directories there. - -diff --git a/src/meson.build b/src/meson.build -index f13b85b74e..58040f2c5d 100644 ---- a/src/meson.build -+++ b/src/meson.build -@@ -893,22 +893,6 @@ if conf.has('WITH_DTRACE_PROBES') - ) - endif - -- --# Install empty directories -- --virt_install_dirs += [ -- localstatedir / 'cache' / 'libvirt', -- localstatedir / 'lib' / 'libvirt' / 'images', -- localstatedir / 'lib' / 'libvirt' / 'filesystems', -- localstatedir / 'lib' / 'libvirt' / 'boot', --] -- --meson.add_install_script( -- meson_python_prog.path(), python3_prog.path(), meson_install_dirs_prog.path(), -- virt_install_dirs, --) -- -- - # Check driver files - - if host_machine.system() == 'linux' diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index 7a34f8db1f..c6929b9f1a 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -18,7 +18,6 @@ ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2021 Leo Famulari <leo@famulari.name> -;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1066,49 +1065,64 @@ manage system or application containers.") (define-public libvirt (package (name "libvirt") - (version "7.1.0") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://libvirt.org/sources/libvirt-" version ".tar.xz")) (sha256 - (base32 "0v50ckf56h6jd9bmqwp0lh2cmb7qqjmcb6y3mz2i2r15h06ih3w7")) + (base32 "0m8cqaqflvys5kaqpvb0qr4k365j09jc5xk6x70yvg8qkcl2hcz2")) (patches - (search-patches "libvirt-do-not-create-var-dirs.patch")))) - (build-system meson-build-system) + (search-patches "libvirt-create-machine-cgroup.patch")))) + (build-system gnu-build-system) (arguments - `(#:meson ,meson-0.55 ;; libvirt requires meson 0.54 or higher. - #:configure-flags - (list "-Ddriver_qemu=enabled" - "-Dqemu_user=nobody" - "-Dqemu_group=kvm" - "-Dpolkit=enabled") + `(#:configure-flags + (list "--with-qemu" + "--with-qemu-user=nobody" + "--with-qemu-group=kvm" + "--with-polkit" + (string-append "--docdir=" (assoc-ref %outputs "out") "/share/doc/" + ,name "-" ,version) + "--sysconfdir=/etc" + "--localstatedir=/var") #:phases (modify-phases %standard-phases - (add-after 'unpack 'fix-sysconfdir-and-localstatedir + (add-before 'configure 'fix-BOURNE_SHELL-definition + ;; BOURNE_SHELL is hard-#defined to ‘/bin/sh’, causing test failures. (lambda _ - (substitute* "meson.build" - ;; We set the prefix to be the package output, but we need - ;; localstatedir to be /var. Sadly the build system doesn't - ;; seem to allow that easily. - (("localstatedir = prefix / get_option\\('localstatedir'\\)") - "localstatedir = get_option('localstatedir')") - ;; On the other hand, we keep sysconfdir using the prefix so - ;; that we install configuration files in the package output. - ;; However, we need to make sure the C code refers to /etc via - ;; SYSCONFDIR, and not the read-only configuration in the - ;; package output. - (("set_quoted\\('SYSCONFDIR', sysconfdir\\)") - "set_quoted('SYSCONFDIR', '/etc')")) + (substitute* "config.h.in" + (("/bin/sh") (which "sh"))) + #t)) + (add-before 'configure 'patch-libtirpc-file-names + (lambda* (#:key inputs #:allow-other-keys) + ;; libvirt uses an m4 macro instead of pkg-config to determine where + ;; the RPC headers are located. Tell it to look in the right place. + (substitute* "configure" + (("/usr/include/tirpc") ;defined in m4/virt-xdr.m4 + (string-append (assoc-ref inputs "libtirpc") + "/include/tirpc"))) #t)) (add-before 'configure 'disable-broken-tests (lambda _ - (substitute* "tests/meson.build" - (("\\{ 'name': 'commandtest'.*") "") ; hangs idly - (("\\{ 'name': 'qemuxml2argvtest'.*") "") ; fails - (("\\{ 'name': 'virnetsockettest'.*") "")) ; tries to network - #t))))) + (let ((tests (list "commandtest" ; hangs idly + "qemuxml2argvtest" ; fails + "qemuhotplugtest" ; fails + "virnetsockettest" ; tries to network + "virshtest"))) ; fails + (substitute* "tests/Makefile.in" + (((format #f "(~a)\\$\\(EXEEXT\\)" (string-join tests "|"))) + "")) + #t))) + (replace 'install + ;; Since the sysconfdir and localstatedir should be /etc and /var + ;; at runtime, we must prevent writing to them at installation + ;; time. + (lambda* (#:key make-flags #:allow-other-keys) + (apply invoke "make" "install" + "sysconfdir=/tmp/etc" + "localstatedir=/tmp/var" + make-flags)))))) (inputs `(("libxml2" ,libxml2) ("eudev" ,eudev) @@ -1135,9 +1149,7 @@ manage system or application containers.") ("perl" ,perl) ("pkg-config" ,pkg-config) ("polkit" ,polkit) - ("python" ,python-wrapper) - ("python-docutils" ,python-docutils) ;for rst2html - ("rpcsvc-proto" ,rpcsvc-proto))) ;for 'rpcgen' + ("python" ,python-wrapper))) (home-page "https://libvirt.org") (synopsis "Simple API for virtualization") (description "Libvirt is a C toolkit to interact with the virtualization |