[PATCH 0/4] gnu: libvirt: Update to 7.0.0.

  • Done
  • quality assurance status badge
Details
3 participants
  • Brice Waegeneire
  • Ludovic Courtès
  • Pierre Langlois
Owner
unassigned
Submitted by
Brice Waegeneire
Severity
normal
B
B
Brice Waegeneire wrote on 18 Feb 2021 21:24
(address . guix-patches@gnu.org)
87zh015d48.fsf@waegenei.re
This patch set update libvirt to 7.0.0, it has only 3 package depending on it.
The build system is changed to meson as upstream deprecated the one we where
ussing.

It also add the ability to select with qemu package, libvirt service
uses.

Brice Waegeneire (4):
gnu: libvirt: Enable disk and directory storage.
services: libvirt: Change unix-sock-group default.
services: libvirt: Add qemu field.
gnu: libvirt: Update to 7.0.0.

gnu/local.mk | 4 +-
.../patches/libvirt-add-install-prefix.patch | 329 ++++++++++++++++++
.../libvirt-create-machine-cgroup.patch | 48 ---
gnu/packages/virtualization.scm | 82 ++---
gnu/services/virtualization.scm | 8 +-
5 files changed, 375 insertions(+), 96 deletions(-)
create mode 100644 gnu/packages/patches/libvirt-add-install-prefix.patch
delete mode 100644 gnu/packages/patches/libvirt-create-machine-cgroup.patch

--
2.30.1
B
B
Brice Waegeneire wrote on 18 Feb 2021 21:48
[PATCH 3/4] services: libvirt: Add qemu field.
(address . 46623@debbugs.gnu.org)
20210218204812.21093-3-brice@waegenei.re
* gnu/services/virtualization.scm (libvirt-configuration): Add 'qemu'
field.
(libvirt-service-type): Replace 'qemu' package with the one specified in
the service configuration.
---
gnu/services/virtualization.scm | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

Toggle diff (26 lines)
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index afc47ff578..a0820c9bab 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -131,6 +131,10 @@
(libvirt
(package libvirt)
"Libvirt package.")
+ (qemu
+ (package qemu)
+ "Qemu package.")
+
(listen-tls?
(boolean #t)
"Flag listening for secure TLS connections on the public TCP/IP port.
@@ -485,7 +489,7 @@ potential infinite waits blocking libvirt."))
(lambda (config)
(list
(libvirt-configuration-libvirt config)
- qemu)))
+ (libvirt-configuration-qemu config))))
(service-extension activation-service-type
%libvirt-activation)
(service-extension shepherd-root-service-type
--
2.30.1
B
B
Brice Waegeneire wrote on 18 Feb 2021 21:48
[PATCH 1/4] gnu: libvirt: Enable disk and directory storage.
(address . 46623@debbugs.gnu.org)
20210218204812.21093-1-brice@waegenei.re
* gnu/packages/virtualization.scm (libvirt)[inputs]: Add parted.
[arguments]: Add configure flags to support disk and directory storage.
---
gnu/packages/virtualization.scm | 3 +++
1 file changed, 3 insertions(+)

Toggle diff (23 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 8da57cf6ab..319b57445e 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -1031,6 +1031,8 @@ manage system or application containers.")
(list "--with-qemu"
"--with-qemu-user=nobody"
"--with-qemu-group=kvm"
+ "--with-storage-disk"
+ "--with-storage-dir"
"--with-polkit"
(string-append "--docdir=" (assoc-ref %outputs "out") "/share/doc/"
,name "-" ,version)
@@ -1092,6 +1094,7 @@ manage system or application containers.")
("dmidecode" ,dmidecode)
("dnsmasq" ,dnsmasq)
("ebtables" ,ebtables)
+ ("parted" ,parted)
("iproute" ,iproute)
("iptables" ,iptables)))
(native-inputs
--
2.30.1
B
B
Brice Waegeneire wrote on 18 Feb 2021 21:48
[PATCH 2/4] services: libvirt: Change unix-sock-group default.
(address . 46623@debbugs.gnu.org)
20210218204812.21093-2-brice@waegenei.re
When accessing libvrt remotely, polkit can't be used so unless using
the root account it's better give access to the libvirt-sock to the
libvirt group by default.

*
gnu/services/virtualization.scm (libvirt-configuration)[unix-sock-group]:
Change default from "root" to "libvirt".
---
gnu/services/virtualization.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index a45da14a80..afc47ff578 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -168,7 +168,7 @@ stopping the Avahi daemon.")
"Default mDNS advertisement name. This must be unique on the
immediate broadcast network.")
(unix-sock-group
- (string "root")
+ (string "libvirt")
"UNIX domain socket group ownership. This can be used to
allow a 'trusted' set of users access to management capabilities
without becoming root.")
--
2.30.1
B
B
Brice Waegeneire wrote on 18 Feb 2021 21:48
[PATCH 4/4] gnu: libvirt: Update to 7.0.0.
(address . 46623@debbugs.gnu.org)
20210218204812.21093-4-brice@waegenei.re
* gnu/packages/virtualization.scm (libvirt): Update to 7.0.0.
[arguemnts]: Switch to meson, only build system supported by upstream.
[inputs]: Add libssh2 and readline.
[native-inputs]: Add bash-completion, gettext, python-docutils and
rpcsvc-proto.
* gnu/packages/patches/libvirt-add-install-prefix.patch: New file...
* gnu/local.mk: ...add it.
* gnu/packages/patches/libvirt-create-machine-cgroup.patch: Delete file,
merged by upstream.
---
gnu/local.mk | 4 +-
.../patches/libvirt-add-install-prefix.patch | 329 ++++++++++++++++++
.../libvirt-create-machine-cgroup.patch | 48 ---
gnu/packages/virtualization.scm | 83 ++---
4 files changed, 368 insertions(+), 96 deletions(-)
create mode 100644 gnu/packages/patches/libvirt-add-install-prefix.patch
delete mode 100644 gnu/packages/patches/libvirt-create-machine-cgroup.patch

Toggle diff (391 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 250901f6d9..ce3a1aef96 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -34,7 +34,7 @@
# Copyright © 2020 Felix Gruber <felgru@posteo.net>
# Copyright © 2020 Ryan Prior <rprior@protonmail.com>
# Copyright © 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
-# Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+# Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
# Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
# Copyright © 2020 Martin Becze <mjbecze@riseup.net>
# Copyright © 2020 Malte Frank Gerdes <mate.f.gerdes@gmail.com>
@@ -1219,7 +1219,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-create-machine-cgroup.patch \
+ %D%/packages/patches/libvirt-add-install-prefix.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-add-install-prefix.patch b/gnu/packages/patches/libvirt-add-install-prefix.patch
new file mode 100644
index 0000000000..1331fa9b6f
--- /dev/null
+++ b/gnu/packages/patches/libvirt-add-install-prefix.patch
@@ -0,0 +1,329 @@
+Patch from NixOS:
+https://raw.githubusercontent.com/NixOS/nixpkgs/b98031a49c66095dd1eb9185ecdaeeb5e3cd752d/pkgs/development/libraries/libvirt/0001-meson-patch-in-an-install-prefix-for-building-on-nix.patch
+
+From a896b0be849455edb83a9305dfec9b41447ef3e4 Mon Sep 17 00:00:00 2001
+From: Euan Kemp <euank@euank.com>
+Date: Thu, 14 Jan 2021 00:32:00 -0800
+Subject: [PATCH] meson: patch in an install prefix for building on nix
+
+Used in the nixpkgs version of libvirt so that we can install things in
+the nix store, but read them from the root filesystem.
+---
+ meson.build | 9 +++++++++
+ meson_options.txt | 2 ++
+ src/libxl/meson.build | 6 +++---
+ src/locking/meson.build | 8 ++++----
+ src/lxc/meson.build | 6 +++---
+ src/meson.build | 18 +++++++++---------
+ src/network/meson.build | 12 ++++++------
+ src/nwfilter/xml/meson.build | 2 +-
+ src/qemu/meson.build | 14 +++++++-------
+ src/remote/meson.build | 6 +++---
+ src/security/apparmor/meson.build | 8 ++++----
+ tools/meson.build | 4 ++--
+ 12 files changed, 53 insertions(+), 42 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index b5164f6..33719f1 100644
+--- a/meson.build
++++ b/meson.build
+@@ -39,6 +39,8 @@ if host_machine.system() == 'windows'
+ conf.set('WINVER', '0x0600') # Win Vista / Server 2008
+ endif
+
++# patched in for nix
++install_prefix = get_option('install_prefix')
+
+ # set various paths
+
+@@ -57,6 +59,13 @@ else
+ sysconfdir = prefix / get_option('sysconfdir')
+ endif
+
++# nix: don't prefix the localstatedir; some things need to write to it, so it
++# can't be in the nix store, and that's what the prefix is.
++# We'll prefix things ourselves where needed
++localstatedir = get_option('localstatedir')
++# Same for sysconfidr
++sysconfdir = get_option('sysconfdir')
++
+ # if --prefix is /usr, don't use /usr/var for localstatedir or /usr/etc for
+ # sysconfdir as this makes a lot of things break in testing situations
+ if prefix == '/usr'
+diff --git a/meson_options.txt b/meson_options.txt
+index e5d79c2..081cd32 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -1,3 +1,5 @@
++option('install_prefix', type: 'string', value: '', description: 'prefix for nix store installation')
++
+ option('no_git', type: 'boolean', value: false, description: 'Disable git submodule update')
+ option('packager', type: 'string', value: '', description: 'Extra packager name')
+ option('packager_version', type: 'string', value: '', description: 'Extra packager version')
+diff --git a/src/libxl/meson.build b/src/libxl/meson.build
+index 3bb6cc5..78d7be0 100644
+--- a/src/libxl/meson.build
++++ b/src/libxl/meson.build
+@@ -84,8 +84,8 @@ if conf.has('WITH_LIBXL')
+ }
+
+ virt_install_dirs += [
+- localstatedir / 'lib' / 'libvirt' / 'libxl',
+- runstatedir / 'libvirt' / 'libxl',
+- localstatedir / 'log' / 'libvirt' / 'libxl',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl',
++ install_prefix + runstatedir / 'libvirt' / 'libxl',
++ install_prefix + localstatedir / 'log' / 'libvirt' / 'libxl',
+ ]
+ endif
+diff --git a/src/locking/meson.build b/src/locking/meson.build
+index 8a28310..9da81cc 100644
+--- a/src/locking/meson.build
++++ b/src/locking/meson.build
+@@ -243,14 +243,14 @@ if conf.has('WITH_LIBVIRTD')
+ }
+
+ virt_install_dirs += [
+- localstatedir / 'lib' / 'libvirt' / 'lockd',
+- localstatedir / 'lib' / 'libvirt' / 'lockd' / 'files',
+- runstatedir / 'libvirt' / 'lockd',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'lockd',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'lockd' / 'files',
++ install_prefix + runstatedir / 'libvirt' / 'lockd',
+ ]
+
+ if conf.has('WITH_SANLOCK')
+ virt_install_dirs += [
+- localstatedir / 'lib' / 'libvirt' / 'sanlock',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'sanlock',
+ ]
+ endif
+ endif
+diff --git a/src/lxc/meson.build b/src/lxc/meson.build
+index f8e2a88..96d6687 100644
+--- a/src/lxc/meson.build
++++ b/src/lxc/meson.build
+@@ -182,8 +182,8 @@ if conf.has('WITH_LXC')
+ }
+
+ virt_install_dirs += [
+- localstatedir / 'lib' / 'libvirt' / 'lxc',
+- runstatedir / 'libvirt' / 'lxc',
+- localstatedir / 'log' / 'libvirt' / 'lxc',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'lxc',
++ install_prefix + runstatedir / 'libvirt' / 'lxc',
++ install_prefix + localstatedir / 'log' / 'libvirt' / 'lxc',
+ ]
+ endif
+diff --git a/src/meson.build b/src/meson.build
+index 7c47821..d33d16a 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -669,7 +669,7 @@ endforeach
+
+ virt_conf_files += 'libvirt.conf'
+
+-install_data(virt_conf_files, install_dir: confdir)
++install_data(virt_conf_files, install_dir: install_prefix + confdir)
+ install_data(virt_aug_files, install_dir: virt_aug_dir)
+
+ # augeas_test_data:
+@@ -729,7 +729,7 @@ foreach data : virt_daemon_confs
+ output: '@0@.conf'.format(data['name']),
+ configuration: daemon_conf,
+ install: true,
+- install_dir: confdir,
++ install_dir: install_prefix + confdir,
+ )
+
+ if data.get('with_ip', false)
+@@ -853,14 +853,14 @@ if conf.has('WITH_LIBVIRTD')
+
+ install_data(
+ init_file,
+- install_dir: sysconfdir / 'init.d',
++ install_dir: install_prefix + sysconfdir / 'init.d',
+ rename: [ init['name'] ],
+ )
+
+ if init.has_key('confd')
+ install_data(
+ init['confd'],
+- install_dir: sysconfdir / 'conf.d',
++ install_dir: install_prefix + sysconfdir / 'conf.d',
+ rename: [ init['name'] ],
+ )
+ endif
+@@ -872,7 +872,7 @@ if init_script != 'none'
+ foreach sysconf : sysconf_files
+ install_data(
+ sysconf['file'],
+- install_dir: sysconfdir / 'sysconfig',
++ install_dir: install_prefix + sysconfdir / 'sysconfig',
+ rename: [ sysconf['name'] ],
+ )
+ endforeach
+@@ -897,10 +897,10 @@ endif
+ # Install empty directories
+
+ virt_install_dirs += [
+- localstatedir / 'cache' / 'libvirt',
+- localstatedir / 'lib' / 'libvirt' / 'images',
+- localstatedir / 'lib' / 'libvirt' / 'filesystems',
+- localstatedir / 'lib' / 'libvirt' / 'boot',
++ install_prefix + localstatedir / 'cache' / 'libvirt',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'images',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'filesystems',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'boot',
+ ]
+
+ meson.add_install_script(
+diff --git a/src/network/meson.build b/src/network/meson.build
+index 3ec598c..b02040b 100644
+--- a/src/network/meson.build
++++ b/src/network/meson.build
+@@ -79,9 +79,9 @@ if conf.has('WITH_NETWORK')
+ }
+
+ virt_install_dirs += [
+- localstatedir / 'lib' / 'libvirt' / 'network',
+- localstatedir / 'lib' / 'libvirt' / 'dnsmasq',
+- runstatedir / 'libvirt' / 'network',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'network',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'dnsmasq',
++ install_prefix + runstatedir / 'libvirt' / 'network',
+ ]
+
+ configure_file(
+@@ -89,12 +89,12 @@ if conf.has('WITH_NETWORK')
+ output: '@BASENAME@',
+ copy: true,
+ install: true,
+- install_dir: confdir / 'qemu' / 'networks',
++ install_dir: install_prefix + confdir / 'qemu' / 'networks',
+ )
+
+ meson.add_install_script(
+ meson_python_prog.path(), python3_prog.path(), meson_install_symlink_prog.path(),
+- confdir / 'qemu' / 'networks' / 'autostart',
++ install_prefix + confdir / 'qemu' / 'networks' / 'autostart',
+ '../default.xml', 'default.xml',
+ )
+
+diff --git a/src/nwfilter/xml/meson.build b/src/nwfilter/xml/meson.build
+index 0d96c54..66c92a1 100644
+--- a/src/nwfilter/xml/meson.build
++++ b/src/nwfilter/xml/meson.build
+@@ -25,4 +25,4 @@ nwfilter_xml_files = [
+ 'qemu-announce-self.xml',
+ ]
+
+-install_data(nwfilter_xml_files, install_dir: sysconfdir / 'libvirt' / 'nwfilter')
++install_data(nwfilter_xml_files, install_dir: install_prefix + sysconfdir / 'libvirt' / 'nwfilter')
+diff --git a/src/qemu/meson.build b/src/qemu/meson.build
+index 90640b0..8802cec 100644
+--- a/src/qemu/meson.build
++++ b/src/qemu/meson.build
+@@ -171,12 +171,12 @@ if conf.has('WITH_QEMU')
+ }
+
+ virt_install_dirs += [
+- localstatedir / 'lib' / 'libvirt' / 'qemu',
+- runstatedir / 'libvirt' / 'qemu',
+- localstatedir / 'cache' / 'libvirt' / 'qemu',
+- localstatedir / 'log' / 'libvirt' / 'qemu',
+- localstatedir / 'lib' / 'libvirt' / 'swtpm',
+- runstatedir / 'libvirt' / 'qemu' / 'swtpm',
+- localstatedir / 'log' / 'swtpm' / 'libvirt' / 'qemu',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu',
++ install_prefix + runstatedir / 'libvirt' / 'qemu',
++ install_prefix + localstatedir / 'cache' / 'libvirt' / 'qemu',
++ install_prefix + localstatedir / 'log' / 'libvirt' / 'qemu',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'swtpm',
++ install_prefix + runstatedir / 'libvirt' / 'qemu' / 'swtpm',
++ install_prefix + localstatedir / 'log' / 'swtpm' / 'libvirt' / 'qemu',
+ ]
+ endif
+diff --git a/src/remote/meson.build b/src/remote/meson.build
+index 9ad2f6a..429a15b 100644
+--- a/src/remote/meson.build
++++ b/src/remote/meson.build
+@@ -245,7 +245,7 @@ if conf.has('WITH_REMOTE')
+ }
+
+ virt_install_dirs += [
+- localstatedir / 'log' / 'libvirt',
++ install_prefix + localstatedir / 'log' / 'libvirt',
+ ]
+
+ logrotate_conf = configuration_data()
+@@ -259,7 +259,7 @@ if conf.has('WITH_REMOTE')
+ )
+ install_data(
+ log_file,
+- install_dir: sysconfdir / 'logrotate.d',
++ install_dir: install_prefix + sysconfdir / 'logrotate.d',
+ rename: [ name ],
+ )
+ endforeach
+@@ -309,7 +309,7 @@ endif
+ if conf.has('WITH_SASL')
+ install_data(
+ 'libvirtd.sasl',
+- install_dir: sysconfdir / 'sasl2',
++ install_dir: install_prefix + sysconfdir / 'sasl2',
+ rename: [ 'libvirt.conf' ],
+ )
+ endif
+diff --git a/src/security/apparmor/meson.build b/src/security/apparmor/meson.build
+index af43780..e2d6c81 100644
+--- a/src/security/apparmor/meson.build
++++ b/src/security/apparmor/meson.build
+@@ -17,22 +17,22 @@ foreach name : apparmor_gen_profiles
+ output: name,
+ configuration: apparmor_gen_profiles_conf,
+ install: true,
+- install_dir: apparmor_dir,
++ install_dir: install_prefix + apparmor_dir,
+ )
+ endforeach
+
+ install_data(
+ [ 'libvirt-qemu', 'libvirt-lxc' ],
+- install_dir: apparmor_dir / 'abstractions',
++ install_dir: install_prefix + apparmor_dir / 'abstractions',
+ )
+
+ install_data(
+ [ 'TEMPLATE.qemu', 'TEMPLATE.lxc' ],
+- install_dir: apparmor_dir / 'libvirt',
++ install_dir: install_prefix + apparmor_dir / 'libvirt',
+ )
+
+ install_data(
+ 'usr.lib.libvirt.virt-aa-helper.local',
+- install_dir: apparmor_dir / 'local',
++ install_dir: install_prefix + apparmor_dir / 'local',
+ rename: 'usr.lib.libvirt.virt-aa-helper',
+ )
+diff --git a/tools/meson.build b/tools/meson.build
+index b8c6802..dacd0ff 100644
+--- a/tools/meson.build
++++ b/tools/meson.build
+@@ -115,7 +115,7 @@ if conf.has('WITH_LOGIN_SHELL')
+ install_rpath: libvirt_rpath,
+ )
+
+- install_data('virt-login-shell.conf', install_dir: sysconfdir / 'libvirt')
++ install_data('virt-login-shell.conf', install_dir: install_prefix + sysconfdir / 'libvirt')
+ endif
+
+ if host_machine.system() == 'windows'
+@@ -274,7 +274,7 @@ configure_file(
+ if init_script == 'systemd'
+ install_data(
+ 'libvirt-guests.sysconf',
+- install_dir: sysconfdir / 'sysconfig',
++ install_dir: install_prefix + sysconfdir / 'sysconfig',
+ rename: 'libvirt-guests',
+ )
diff --git a/gnu/packages/patches/libvirt-create-machine-cgroup.patch b/gnu/packages/patches/libvirt-create-machine-cgroup.patch
deleted file mode 100644
index 585ac237e1..0000000000
--- a/gnu/packages/patches/libvirt-create-machine-cgroup.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-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
-
Toggle diff (88 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 319b57445e..4f0ba1c8ff 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -12,7 +12,7 @@
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
;;; Copyright © 2020 Jakub K?dzio?ka <kuba@kadziolka.net>
-;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@@ -41,7 +41,9 @@
#:use-module (gnu packages autotools)
#:use-module (gnu packages backup)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bison)
+ #:use-module (gnu packages build-tools)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
@@ -93,6 +95,7 @@
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages pulseaudio)
+ #:use-module (gnu packages readline)
#:use-module (gnu packages selinux)
#:use-module (gnu packages sdl)
#:use-module (gnu packages sphinx)
@@ -1015,66 +1018,48 @@ manage system or application containers.")
(define-public libvirt
(package
(name "libvirt")
- (version "5.8.0")
+ (version "7.0.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://libvirt.org/sources/libvirt-"
version ".tar.xz"))
(sha256
- (base32 "0m8cqaqflvys5kaqpvb0qr4k365j09jc5xk6x70yvg8qkcl2hcz2"))
- (patches
- (search-patches "libvirt-create-machine-cgroup.patch"))))
- (build-system gnu-build-system)
+ (base32 "12fxkpy7j2qhfxypw9jg3bzdd9xx6vf6x96iy5kjihh89n236f6a"))
+ (patches (search-patches "libvirt-add-install-prefix.patch"))))
+ (build-system meson-build-system)
(arguments
`(#:configure-flags
- (list "--with-qemu"
- "--with-qemu-user=nobody"
- "--with-qemu-group=kvm"
- "--with-storage-disk"
- "--with-storage-dir"
- "--with-polkit"
- (string-append "--docdir=" (assoc-ref %outputs "out") "/share/doc/"
+ (list "-Ddriver_qemu=enabled"
+ "-Dqemu_user=nobody"
+ "-Dqemu_group=kvm"
+ "-Dstorage_disk=enabled"
+ "-Dstorage_dir=enabled"
+ "-Dpolkit=enabled"
+ "-Dnls=enabled" ;translations
+ (string-append "-Ddocdir=" (assoc-ref %outputs "out") "/share/doc/"
,name "-" ,version)
+ "-Dbash_completion=enabled"
+ (string-append "-Dinstall_prefix=" (assoc-ref %outputs "out"))
"--sysconfdir=/etc"
"--localstatedir=/var")
+ #:meson ,meson-0.55
#:phases
(modify-phases %standard-phases
- (add-before 'configure 'fix-BOURNE_SHELL-definition
- ;; BOURNE_SHELL is hard-#defined to ‘/bin/sh’, causing test failures.
- (lambda _
- (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 (ass
This message was truncated. Download the full message here.
L
L
Ludovic Courtès wrote on 1 Apr 2021 22:29
Re: bug#46623: [PATCH 0/4] gnu: libvirt: Update to 7.0.0.
(name . Brice Waegeneire)(address . brice@waegenei.re)(address . 46623-done@debbugs.gnu.org)
87o8ex4uka.fsf@gnu.org
Hi Brice,

Brice Waegeneire <brice@waegenei.re> skribis:

Toggle quote (4 lines)
> This patch set update libvirt to 7.0.0, it has only 3 package depending on it.
> The build system is changed to meson as upstream deprecated the one we where
> ussing.

I’m just noticing this patch series, superseded by
https://issues.guix.gnu.org/47285, which I pushed recently.

Let us know if you think anything’s missing!

Thanks, and apologies for the duplicated work.

Ludo’.
Closed
P
P
Pierre Langlois wrote on 2 Apr 2021 13:56
Re: [bug#46623] [PATCH 4/4] gnu: libvirt: Update to 7.0.0.
(name . Brice Waegeneire)(address . brice@waegenei.re)(address . 46623@debbugs.gnu.org)
87ft08vr1l.fsf@gmx.com
Hi Brice,

Brice Waegeneire writes:

Toggle quote (10 lines)
> * gnu/packages/virtualization.scm (libvirt): Update to 7.0.0.
> [arguemnts]: Switch to meson, only build system supported by upstream.
> [inputs]: Add libssh2 and readline.
> [native-inputs]: Add bash-completion, gettext, python-docutils and
> rpcsvc-proto.
> * gnu/packages/patches/libvirt-add-install-prefix.patch: New file...
> * gnu/local.mk: ...add it.
> * gnu/packages/patches/libvirt-create-machine-cgroup.patch: Delete file,
> merged by upstream.

I applied this patch locally on top of patch 1/4 and tested it, I can
confirm that it works and passes https://issues.guix.gnu.org/47541,as
opposed to my approach :-).

Here's a new patch series that adds your 1&4 patches, updated to 7.2.0
and then updates dependent packages. I've also extended the system test
so that it can catch issues with the /var and /etc runtime directories.

I've not looked at patches 2&3, on the service itself yet though.

Anyways, WDYT? OK to commit?

Thanks,
Pierre
-----BEGIN PGP SIGNATURE-----

iQFMBAEBCgA2FiEEctU9gYy29KFyWDdMqPyeRH9PfVQFAmBnBlYYHHBpZXJyZS5s
YW5nbG9pc0BnbXguY29tAAoJEKj8nkR/T31U0IEH/jb8OaEbl8hH1bkKY1K+4anw
2hULrNJT2FM41xz/WuO7bH3bfWS/Io7OZpiUUUJElehjx00ZH/C44fwrKz4K/Vrg
GAku/+/hkRlxI26VlZTi1lQmDle2SwDWaE2I7Mjv7xuAbNYT6GfW8xD94sHitgB+
xPemqAtpYCGDzkISfdC7vm08SMHlHlrqmrx/g8OEiuXTMbfsqTDPYH/kz7xUYjlB
16R0zRfqAZX5XfqU8s9F8RiUzf3qJejCY0wDYin2qddphp3XsxuKeGCHDiWnEoXV
dmqnUCSR/Tr0P9Qo9b+nMUtHz8Qh236Nv3K0W4s516pdvx0b2psSEa3jCllSpzA=
=BUKn
-----END PGP SIGNATURE-----

P
P
Pierre Langlois wrote on 2 Apr 2021 13:58
[PATCH 1/6] tests: libvirt: Catch issues with incorrect /var and /etc in package.
(address . 46623@debbugs.gnu.org)(name . Pierre Langlois)(address . pierre.langlois@gmx.com)
20210402115902.3474-1-pierre.langlois@gmx.com
* gnu/tests/virtualization.scm (run-libvirt-test): Chdir to "/tmp" before
running test. Add "connect" test.
---
gnu/tests/virtualization.scm | 11 +++++++++++
1 file changed, 11 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/tests/virtualization.scm b/gnu/tests/virtualization.scm
index e95787ee19..9f9d3a5e26 100644
--- a/gnu/tests/virtualization.scm
+++ b/gnu/tests/virtualization.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -92,10 +93,20 @@
0
(marionette-eval
`(begin
+ (chdir "/tmp")
(system* ,(string-append #$libvirt "/bin/virsh")
"-c" "qemu:///system" "version"))
marionette))

+ (test-eq "connect"
+ 0
+ (marionette-eval
+ `(begin
+ (chdir "/tmp")
+ (system* ,(string-append #$libvirt "/bin/virsh")
+ "-c" "qemu:///system" "connect"))
+ marionette))
+
(test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0)))))

--
2.31.1
P
P
Pierre Langlois wrote on 2 Apr 2021 13:58
[PATCH 2/6] gnu: libvirt: Enable disk and directory storage.
(address . 46623@debbugs.gnu.org)(name . Brice Waegeneire)(address . brice@waegenei.re)
20210402115902.3474-2-pierre.langlois@gmx.com
From: Brice Waegeneire <brice@waegenei.re>

* gnu/packages/virtualization.scm (libvirt)[inputs]: Add parted.
[arguments]: Add configure flags to support disk and directory storage.
---
gnu/packages/virtualization.scm | 3 +++
1 file changed, 3 insertions(+)

Toggle diff (21 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index c6929b9f1a..4e7f9c8e4e 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -1081,6 +1081,8 @@ manage system or application containers.")
(list "--with-qemu"
"--with-qemu-user=nobody"
"--with-qemu-group=kvm"
+ "--with-storage-disk"
+ "--with-storage-dir"
"--with-polkit"
(string-append "--docdir=" (assoc-ref %outputs "out") "/share/doc/"
,name "-" ,version)
@@ -1142,6 +1144,7 @@ manage system or application containers.")
("dmidecode" ,dmidecode)
("dnsmasq" ,dnsmasq)
("ebtables" ,ebtables)
+ ("parted" ,parted)
("iproute" ,iproute)
("iptables" ,iptables)))
(native-inputs
--
2.31.1
P
P
Pierre Langlois wrote on 2 Apr 2021 13:59
[PATCH 5/6] gnu: libvirt-glib: Update to 4.0.0.
(address . 46623@debbugs.gnu.org)(name . Pierre Langlois)(address . pierre.langlois@gmx.com)
20210402115902.3474-5-pierre.langlois@gmx.com
* gnu/packages/virtualization.scm (libvirt-glib): Update to 4.0.0.
[build-system]: Switch to meson-build-system.
---
gnu/packages/virtualization.scm | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index d2dc11a0fb..e8540762ee 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -1155,15 +1155,15 @@ to integrate other virtualization mechanisms if needed.")
(define-public libvirt-glib
(package
(name "libvirt-glib")
- (version "3.0.0")
+ (version "4.0.0")
(source (origin
(method url-fetch)
(uri (string-append "ftp://libvirt.org/libvirt/glib/"
- "libvirt-glib-" version ".tar.gz"))
+ "libvirt-glib-" version ".tar.xz"))
(sha256
(base32
- "1zpbv4ninc57c9rw4zmmkvvqn7154iv1qfr20kyxn8xplalqrzvz"))))
- (build-system gnu-build-system)
+ "1gdcvqz88qkp402zra9csc6391f2xki1270x683n6ixakl3gf8w4"))))
+ (build-system meson-build-system)
(inputs
`(("openssl" ,openssl)
("cyrus-sasl" ,cyrus-sasl)
--
2.31.1
P
P
Pierre Langlois wrote on 2 Apr 2021 13:59
[PATCH 4/6] gnu: python-libvirt: Update to 7.2.0.
(address . 46623@debbugs.gnu.org)(name . Pierre Langlois)(address . pierre.langlois@gmx.com)
20210402115902.3474-4-pierre.langlois@gmx.com
* gnu/packages/virtualization.scm (python-libvirt): Update to 7.2.0.
---
gnu/packages/virtualization.scm | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

Toggle diff (29 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 3a71720599..d2dc11a0fb 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -18,6 +18,7 @@
;;; 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.
;;;
@@ -1196,14 +1197,14 @@ three libraries:
(define-public python-libvirt
(package
(name "python-libvirt")
- (version "5.8.0")
+ (version "7.2.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://libvirt.org/sources/python/libvirt-python-"
version ".tar.gz"))
(sha256
- (base32 "0kyz3lx49d8p75mvbzinxc1zgs8g7adn77y9bm15b8b4ad9zl5s6"))))
+ (base32 "1ryfimhf47s9k4n0gys233bh15l68fccs2bvj8bjwqjm9k2vmhy0"))))
(build-system python-build-system)
(arguments
`(#:phases
--
2.31.1
P
P
Pierre Langlois wrote on 2 Apr 2021 13:59
[PATCH 6/6] gnu: virt-manager: Update to 3.2.0.
(address . 46623@debbugs.gnu.org)(name . Pierre Langlois)(address . pierre.langlois@gmx.com)
20210402115902.3474-6-pierre.langlois@gmx.com
* gnu/packages/virtualization.scm (virt-manager): Update to 3.2.0.
[arguments]: Remove #:test-target. Remove fix-qemu-img-reference phase.
Adapt check phase to use pytest, although they still do not run.
[native-inputs]: Add python-docutils. Suggest adding python-pytest to enable
tests.
---
gnu/packages/virtualization.scm | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)

Toggle diff (63 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index e8540762ee..ada23d2aa9 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -1236,7 +1236,7 @@ virtualization library.")
(define-public virt-manager
(package
(name "virt-manager")
- (version "2.2.1")
+ (version "3.2.0")
(source (origin
(method url-fetch)
(uri (string-append "https://virt-manager.org/download/sources"
@@ -1244,11 +1244,10 @@ virtualization library.")
version ".tar.gz"))
(sha256
(base32
- "06ws0agxlip6p6n3n43knsnjyd91gqhh2dadgc33wl9lx1k8vn6g"))))
+ "11kvpzcmyir91qz0dsnk7748jbb4wr8mrc744w117qc91pcy6vrb"))))
(build-system python-build-system)
(arguments
`(#:use-setuptools? #f ; uses custom distutils 'install' command
- #:test-target "test_ui"
#:tests? #f ; TODO The tests currently fail
; RuntimeError: Loop condition wasn't
; met
@@ -1266,12 +1265,6 @@ virtualization library.")
(substitute* "virtinst/buildconfig.py"
(("/usr") (assoc-ref outputs "out")))
#t))
- (add-after 'unpack 'fix-qemu-img-reference
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "virtconv/formats.py"
- (("/usr(/bin/qemu-img)" _ suffix)
- (string-append (assoc-ref inputs "qemu") suffix)))
- #t))
(add-after 'unpack 'fix-default-uri
(lambda* (#:key inputs #:allow-other-keys)
;; Xen is not available for now - so only patch qemu.
@@ -1302,11 +1295,12 @@ virtualization library.")
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(setenv "HOME" "/tmp")
+ (setenv "XDG_CACHE_HOME" "/tmp")
(system "Xvfb :1 &")
(setenv "DISPLAY" ":1")
;; Dogtail requires that Assistive Technology support be enabled
(setenv "GTK_MODULES" "gail:atk-bridge")
- (invoke "dbus-run-session" "--" "python" "setup.py" "test_ui"))
+ (invoke "dbus-run-session" "--" "pytest" "--uitests"))
#t))
(add-after 'install 'glib-or-gtk-compile-schemas
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
@@ -1336,7 +1330,9 @@ virtualization library.")
("gtk+" ,gtk+ "bin") ; gtk-update-icon-cache
("perl" ,perl) ; pod2man
("intltool" ,intltool)
+ ("rst2man" ,python-docutils)
;; The following are required for running the tests
+ ;; ("python-pytest" ,python-pytest)
;; ("python-dogtail" ,python-dogtail)
;; ("xvfb" ,xorg-server-for-tests)
;; ("dbus" ,dbus)
--
2.31.1
P
P
Pierre Langlois wrote on 2 Apr 2021 13:58
[PATCH 3/6] gnu: libvirt: Update to 7.2.0.
(address . 46623@debbugs.gnu.org)
20210402115902.3474-3-pierre.langlois@gmx.com
From: Brice Waegeneire <brice@waegenei.re>

* gnu/packages/virtualization.scm (libvirt): Update to 7.2.0.
[arguemnts]: Switch to meson, only build system supported by upstream.
[inputs]: Add libssh2 and readline.
[native-inputs]: Add bash-completion, gettext, python-docutils and
rpcsvc-proto.
* gnu/packages/patches/libvirt-add-install-prefix.patch: New file...
* gnu/local.mk: ...add it.
* gnu/packages/patches/libvirt-create-machine-cgroup.patch: Delete file,
merged by upstream.

Tested-by: Pierre Langlois <pierre.langlois@gmx.com>
---
gnu/local.mk | 4 +-
.../patches/libvirt-add-install-prefix.patch | 329 ++++++++++++++++++
gnu/packages/virtualization.scm | 82 ++---
3 files changed, 367 insertions(+), 48 deletions(-)
create mode 100644 gnu/packages/patches/libvirt-add-install-prefix.patch

Toggle diff (486 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 1a72e896a8..e0fff1f59c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -34,7 +34,7 @@
# Copyright © 2020, 2021 Felix Gruber <felgru@posteo.net>
# Copyright © 2020 Ryan Prior <rprior@protonmail.com>
# Copyright © 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
-# Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+# Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
# Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
# Copyright © 2020 Martin Becze <mjbecze@riseup.net>
# Copyright © 2020 Malte Frank Gerdes <mate.f.gerdes@gmail.com>
@@ -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-create-machine-cgroup.patch \
+ %D%/packages/patches/libvirt-add-install-prefix.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-add-install-prefix.patch b/gnu/packages/patches/libvirt-add-install-prefix.patch
new file mode 100644
index 0000000000..1331fa9b6f
--- /dev/null
+++ b/gnu/packages/patches/libvirt-add-install-prefix.patch
@@ -0,0 +1,329 @@
+Patch from NixOS:
+https://raw.githubusercontent.com/NixOS/nixpkgs/b98031a49c66095dd1eb9185ecdaeeb5e3cd752d/pkgs/development/libraries/libvirt/0001-meson-patch-in-an-install-prefix-for-building-on-nix.patch
+
+From a896b0be849455edb83a9305dfec9b41447ef3e4 Mon Sep 17 00:00:00 2001
+From: Euan Kemp <euank@euank.com>
+Date: Thu, 14 Jan 2021 00:32:00 -0800
+Subject: [PATCH] meson: patch in an install prefix for building on nix
+
+Used in the nixpkgs version of libvirt so that we can install things in
+the nix store, but read them from the root filesystem.
+---
+ meson.build | 9 +++++++++
+ meson_options.txt | 2 ++
+ src/libxl/meson.build | 6 +++---
+ src/locking/meson.build | 8 ++++----
+ src/lxc/meson.build | 6 +++---
+ src/meson.build | 18 +++++++++---------
+ src/network/meson.build | 12 ++++++------
+ src/nwfilter/xml/meson.build | 2 +-
+ src/qemu/meson.build | 14 +++++++-------
+ src/remote/meson.build | 6 +++---
+ src/security/apparmor/meson.build | 8 ++++----
+ tools/meson.build | 4 ++--
+ 12 files changed, 53 insertions(+), 42 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index b5164f6..33719f1 100644
+--- a/meson.build
++++ b/meson.build
+@@ -39,6 +39,8 @@ if host_machine.system() == 'windows'
+ conf.set('WINVER', '0x0600') # Win Vista / Server 2008
+ endif
+
++# patched in for nix
++install_prefix = get_option('install_prefix')
+
+ # set various paths
+
+@@ -57,6 +59,13 @@ else
+ sysconfdir = prefix / get_option('sysconfdir')
+ endif
+
++# nix: don't prefix the localstatedir; some things need to write to it, so it
++# can't be in the nix store, and that's what the prefix is.
++# We'll prefix things ourselves where needed
++localstatedir = get_option('localstatedir')
++# Same for sysconfidr
++sysconfdir = get_option('sysconfdir')
++
+ # if --prefix is /usr, don't use /usr/var for localstatedir or /usr/etc for
+ # sysconfdir as this makes a lot of things break in testing situations
+ if prefix == '/usr'
+diff --git a/meson_options.txt b/meson_options.txt
+index e5d79c2..081cd32 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -1,3 +1,5 @@
++option('install_prefix', type: 'string', value: '', description: 'prefix for nix store installation')
++
+ option('no_git', type: 'boolean', value: false, description: 'Disable git submodule update')
+ option('packager', type: 'string', value: '', description: 'Extra packager name')
+ option('packager_version', type: 'string', value: '', description: 'Extra packager version')
+diff --git a/src/libxl/meson.build b/src/libxl/meson.build
+index 3bb6cc5..78d7be0 100644
+--- a/src/libxl/meson.build
++++ b/src/libxl/meson.build
+@@ -84,8 +84,8 @@ if conf.has('WITH_LIBXL')
+ }
+
+ virt_install_dirs += [
+- localstatedir / 'lib' / 'libvirt' / 'libxl',
+- runstatedir / 'libvirt' / 'libxl',
+- localstatedir / 'log' / 'libvirt' / 'libxl',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl',
++ install_prefix + runstatedir / 'libvirt' / 'libxl',
++ install_prefix + localstatedir / 'log' / 'libvirt' / 'libxl',
+ ]
+ endif
+diff --git a/src/locking/meson.build b/src/locking/meson.build
+index 8a28310..9da81cc 100644
+--- a/src/locking/meson.build
++++ b/src/locking/meson.build
+@@ -243,14 +243,14 @@ if conf.has('WITH_LIBVIRTD')
+ }
+
+ virt_install_dirs += [
+- localstatedir / 'lib' / 'libvirt' / 'lockd',
+- localstatedir / 'lib' / 'libvirt' / 'lockd' / 'files',
+- runstatedir / 'libvirt' / 'lockd',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'lockd',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'lockd' / 'files',
++ install_prefix + runstatedir / 'libvirt' / 'lockd',
+ ]
+
+ if conf.has('WITH_SANLOCK')
+ virt_install_dirs += [
+- localstatedir / 'lib' / 'libvirt' / 'sanlock',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'sanlock',
+ ]
+ endif
+ endif
+diff --git a/src/lxc/meson.build b/src/lxc/meson.build
+index f8e2a88..96d6687 100644
+--- a/src/lxc/meson.build
++++ b/src/lxc/meson.build
+@@ -182,8 +182,8 @@ if conf.has('WITH_LXC')
+ }
+
+ virt_install_dirs += [
+- localstatedir / 'lib' / 'libvirt' / 'lxc',
+- runstatedir / 'libvirt' / 'lxc',
+- localstatedir / 'log' / 'libvirt' / 'lxc',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'lxc',
++ install_prefix + runstatedir / 'libvirt' / 'lxc',
++ install_prefix + localstatedir / 'log' / 'libvirt' / 'lxc',
+ ]
+ endif
+diff --git a/src/meson.build b/src/meson.build
+index 7c47821..d33d16a 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -669,7 +669,7 @@ endforeach
+
+ virt_conf_files += 'libvirt.conf'
+
+-install_data(virt_conf_files, install_dir: confdir)
++install_data(virt_conf_files, install_dir: install_prefix + confdir)
+ install_data(virt_aug_files, install_dir: virt_aug_dir)
+
+ # augeas_test_data:
+@@ -729,7 +729,7 @@ foreach data : virt_daemon_confs
+ output: '@0@.conf'.format(data['name']),
+ configuration: daemon_conf,
+ install: true,
+- install_dir: confdir,
++ install_dir: install_prefix + confdir,
+ )
+
+ if data.get('with_ip', false)
+@@ -853,14 +853,14 @@ if conf.has('WITH_LIBVIRTD')
+
+ install_data(
+ init_file,
+- install_dir: sysconfdir / 'init.d',
++ install_dir: install_prefix + sysconfdir / 'init.d',
+ rename: [ init['name'] ],
+ )
+
+ if init.has_key('confd')
+ install_data(
+ init['confd'],
+- install_dir: sysconfdir / 'conf.d',
++ install_dir: install_prefix + sysconfdir / 'conf.d',
+ rename: [ init['name'] ],
+ )
+ endif
+@@ -872,7 +872,7 @@ if init_script != 'none'
+ foreach sysconf : sysconf_files
+ install_data(
+ sysconf['file'],
+- install_dir: sysconfdir / 'sysconfig',
++ install_dir: install_prefix + sysconfdir / 'sysconfig',
+ rename: [ sysconf['name'] ],
+ )
+ endforeach
+@@ -897,10 +897,10 @@ endif
+ # Install empty directories
+
+ virt_install_dirs += [
+- localstatedir / 'cache' / 'libvirt',
+- localstatedir / 'lib' / 'libvirt' / 'images',
+- localstatedir / 'lib' / 'libvirt' / 'filesystems',
+- localstatedir / 'lib' / 'libvirt' / 'boot',
++ install_prefix + localstatedir / 'cache' / 'libvirt',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'images',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'filesystems',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'boot',
+ ]
+
+ meson.add_install_script(
+diff --git a/src/network/meson.build b/src/network/meson.build
+index 3ec598c..b02040b 100644
+--- a/src/network/meson.build
++++ b/src/network/meson.build
+@@ -79,9 +79,9 @@ if conf.has('WITH_NETWORK')
+ }
+
+ virt_install_dirs += [
+- localstatedir / 'lib' / 'libvirt' / 'network',
+- localstatedir / 'lib' / 'libvirt' / 'dnsmasq',
+- runstatedir / 'libvirt' / 'network',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'network',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'dnsmasq',
++ install_prefix + runstatedir / 'libvirt' / 'network',
+ ]
+
+ configure_file(
+@@ -89,12 +89,12 @@ if conf.has('WITH_NETWORK')
+ output: '@BASENAME@',
+ copy: true,
+ install: true,
+- install_dir: confdir / 'qemu' / 'networks',
++ install_dir: install_prefix + confdir / 'qemu' / 'networks',
+ )
+
+ meson.add_install_script(
+ meson_python_prog.path(), python3_prog.path(), meson_install_symlink_prog.path(),
+- confdir / 'qemu' / 'networks' / 'autostart',
++ install_prefix + confdir / 'qemu' / 'networks' / 'autostart',
+ '../default.xml', 'default.xml',
+ )
+
+diff --git a/src/nwfilter/xml/meson.build b/src/nwfilter/xml/meson.build
+index 0d96c54..66c92a1 100644
+--- a/src/nwfilter/xml/meson.build
++++ b/src/nwfilter/xml/meson.build
+@@ -25,4 +25,4 @@ nwfilter_xml_files = [
+ 'qemu-announce-self.xml',
+ ]
+
+-install_data(nwfilter_xml_files, install_dir: sysconfdir / 'libvirt' / 'nwfilter')
++install_data(nwfilter_xml_files, install_dir: install_prefix + sysconfdir / 'libvirt' / 'nwfilter')
+diff --git a/src/qemu/meson.build b/src/qemu/meson.build
+index 90640b0..8802cec 100644
+--- a/src/qemu/meson.build
++++ b/src/qemu/meson.build
+@@ -171,12 +171,12 @@ if conf.has('WITH_QEMU')
+ }
+
+ virt_install_dirs += [
+- localstatedir / 'lib' / 'libvirt' / 'qemu',
+- runstatedir / 'libvirt' / 'qemu',
+- localstatedir / 'cache' / 'libvirt' / 'qemu',
+- localstatedir / 'log' / 'libvirt' / 'qemu',
+- localstatedir / 'lib' / 'libvirt' / 'swtpm',
+- runstatedir / 'libvirt' / 'qemu' / 'swtpm',
+- localstatedir / 'log' / 'swtpm' / 'libvirt' / 'qemu',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu',
++ install_prefix + runstatedir / 'libvirt' / 'qemu',
++ install_prefix + localstatedir / 'cache' / 'libvirt' / 'qemu',
++ install_prefix + localstatedir / 'log' / 'libvirt' / 'qemu',
++ install_prefix + localstatedir / 'lib' / 'libvirt' / 'swtpm',
++ install_prefix + runstatedir / 'libvirt' / 'qemu' / 'swtpm',
++ install_prefix + localstatedir / 'log' / 'swtpm' / 'libvirt' / 'qemu',
+ ]
+ endif
+diff --git a/src/remote/meson.build b/src/remote/meson.build
+index 9ad2f6a..429a15b 100644
+--- a/src/remote/meson.build
++++ b/src/remote/meson.build
+@@ -245,7 +245,7 @@ if conf.has('WITH_REMOTE')
+ }
+
+ virt_install_dirs += [
+- localstatedir / 'log' / 'libvirt',
++ install_prefix + localstatedir / 'log' / 'libvirt',
+ ]
+
+ logrotate_conf = configuration_data()
+@@ -259,7 +259,7 @@ if conf.has('WITH_REMOTE')
+ )
+ install_data(
+ log_file,
+- install_dir: sysconfdir / 'logrotate.d',
++ install_dir: install_prefix + sysconfdir / 'logrotate.d',
+ rename: [ name ],
+ )
+ endforeach
+@@ -309,7 +309,7 @@ endif
+ if conf.has('WITH_SASL')
+ install_data(
+ 'libvirtd.sasl',
+- install_dir: sysconfdir / 'sasl2',
++ install_dir: install_prefix + sysconfdir / 'sasl2',
+ rename: [ 'libvirt.conf' ],
+ )
+ endif
+diff --git a/src/security/apparmor/meson.build b/src/security/apparmor/meson.build
+index af43780..e2d6c81 100644
+--- a/src/security/apparmor/meson.build
++++ b/src/security/apparmor/meson.build
+@@ -17,22 +17,22 @@ foreach name : apparmor_gen_profiles
+ output: name,
+ configuration: apparmor_gen_profiles_conf,
+ install: true,
+- install_dir: apparmor_dir,
++ install_dir: install_prefix + apparmor_dir,
+ )
+ endforeach
+
+ install_data(
+ [ 'libvirt-qemu', 'libvirt-lxc' ],
+- install_dir: apparmor_dir / 'abstractions',
++ install_dir: install_prefix + apparmor_dir / 'abstractions',
+ )
+
+ install_data(
+ [ 'TEMPLATE.qemu', 'TEMPLATE.lxc' ],
+- install_dir: apparmor_dir / 'libvirt',
++ install_dir: install_prefix + apparmor_dir / 'libvirt',
+ )
+
+ install_data(
+ 'usr.lib.libvirt.virt-aa-helper.local',
+- install_dir: apparmor_dir / 'local',
++ install_dir: install_prefix + apparmor_dir / 'local',
+ rename: 'usr.lib.libvirt.virt-aa-helper',
+ )
+diff --git a/tools/meson.build b/tools/meson.build
+index b8c6802..dacd0ff 100644
+--- a/tools/meson.build
++++ b/tools/meson.build
+@@ -115,7 +115,7 @@ if conf.has('WITH_LOGIN_SHELL')
+ install_rpath: libvirt_rpath,
+ )
+
+- install_data('virt-login-shell.conf', install_dir: sysconfdir / 'libvirt')
++ install_data('virt-login-shell.conf', install_dir: install_prefix + sysconfdir / 'libvirt')
+ endif
+
+ if host_machine.system() == 'windows'
+@@ -274,7 +274,7 @@ configure_file(
+ if init_script == 'systemd'
+ install_data(
+ 'libvirt-guests.sysconf',
+- install_dir: sysconfdir / 'sysconfig',
++ install_dir: install_prefix + sysconfdir / 'sysconfig',
+ rename: 'libvirt-guests',
+ )
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 4e7f9c8e4e..3a71720599 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -12,7 +12,7 @@
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
;;; Copyright © 2020 Jakub K?dzio?ka <kuba@kadziolka.net>
-;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@@ -42,6 +42,7 @@
#:use-module (gnu packages autotools)
#:use-module (gnu packages backup)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages check)
@@ -97,6 +98,7 @@
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages pulseaudio)
+ #:use-module (gnu packages readline)
#:use-module (gnu packages selinux)
#:use-module (gnu packages sdl)
#:use-module (gnu packages sphinx)
@@ -1065,66 +1067,48 @@ manage system or application containers.")
(define-public libvirt
(package
(name "libvirt")
- (version "5.8.0")
+ (version "7.2.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://libvirt.org/sources/libvirt-"
version ".tar.xz"))
(sha256
- (base32 "0m8cqaqflvys5kaqpvb0qr4k365j09jc5xk6x70yvg8qkcl2hcz2"))
- (patches
- (search-patches "libvirt-create-machine-cgroup.patch"))))
- (build-system gnu-build-system)
+ (base32 "1l6i1rz1v9rnp61sgzlrlbsfh03208dbm3b259i0jl5sqz85kx01"))
+ (patches (search-patches "libvirt-add-install-prefix.patch"))))
+ (build-system meson-build-system)
(arguments
`(#:configure-flags
- (list "--with-qemu"
- "--with-qemu-user=nobody"
- "--with-qemu-group=kvm"
- "--with-storage-disk"
- "--with-storage-dir"
- "--with-polkit"
- (string-append "--docdir=" (assoc-ref %outputs "out") "/share/doc/"
+ (list "-Ddriver_qemu=enabled"
+ "-Dqemu_user=nobody"
+ "-Dqemu_group=kvm"
+ "-Dstorage_disk=enabled"
+ "-Dstorage_dir=enabled"
+ "-Dpolkit=enabled"
+ "-Dnls=enabled" ;translations
+ (string-append "-Ddocdir=" (assoc-ref %outputs "out") "/share/doc/"
,name "-" ,version)
+ "-Dbash_completion=enabled"
+ (string-append "-Dinstall_prefix=" (assoc-ref %outputs "out"))
"--sysconfdir=/etc"
"--localstatedir=/var")
+ #:meson ,meson-0.55
#:phases
(modify-phases %standard-phases
- (add-before 'configure 'fix-BOURNE_SHELL-definition
- ;; BOURNE_SHELL is hard-#defined to ‘/bin/sh’, causing test failures.
- (lambda _
- (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 _
- (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 "|")))
+ (let ((tests (list "commandtest" ; hangs idly
+ "qemuxml2argvtest" ; fails
+ "virnetsockettest"))) ; tries to network
+ (substitute* "tests/meson.build"
+ (((format #f ".*'name': '(~a)'.*" (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))))))
+ (add-before 'install 'no-polkit-magic
+ ;; Meson ‘magically’ invokes pkexec, which fails (not setuid).
+ (lambda _
+ (setenv "PKEXEC_UID" "something")
+ #t)))))
(inputs
`(("libxml2" ,libxml2)
("eudev" ,eudev)
@@ -1133,11 +1117,13 @@ manage system or application containers.")
("dbus" ,dbus)
("libpcap" ,libpcap)
("libnl" ,libnl)
+ ("libssh2" ,libssh2) ;optional
("libtirpc" ,libtirpc) ;for <rpc/rpc.h>
("libuuid" ,util-linux "lib")
("lvm2" ,lvm2) ;for
This message was truncated. Download the full message here.
L
L
Ludovic Courtès wrote on 5 Apr 2021 18:37
Re: bug#46623: [PATCH 0/4] gnu: libvirt: Update to 7.0.0.
(name . Pierre Langlois)(address . pierre.langlois@gmx.com)
87v990sn57.fsf_-_@gnu.org
Hi Pierre,

Pierre Langlois <pierre.langlois@gmx.com> skribis:

Toggle quote (8 lines)
> Here's a new patch series that adds your 1&4 patches, updated to 7.2.0
> and then updates dependent packages. I've also extended the system test
> so that it can catch issues with the /var and /etc runtime directories.
>
> I've not looked at patches 2&3, on the service itself yet though.
>
> Anyways, WDYT? OK to commit?

LGTM. Thanks for investigating, and thank you Brice for showing the way!
:-)

The new virsh test is much welcome.

Ludo’.
P
P
Pierre Langlois wrote on 5 Apr 2021 20:52
(name . Ludovic Courtès)(address . ludo@gnu.org)
87lf9wzhri.fsf@gmx.com
Ludovic Courtès writes:

Toggle quote (15 lines)
> Hi Pierre,
>
> Pierre Langlois <pierre.langlois@gmx.com> skribis:
>
>> Here's a new patch series that adds your 1&4 patches, updated to 7.2.0
>> and then updates dependent packages. I've also extended the system test
>> so that it can catch issues with the /var and /etc runtime directories.
>>
>> I've not looked at patches 2&3, on the service itself yet though.
>>
>> Anyways, WDYT? OK to commit?
>
> LGTM. Thanks for investigating, and thank you Brice for showing the way!
> :-)

Thanks Ludo’ and Brice! I've just pushed the update with
0d4ae86bc2e5c5a87e3d343d2b144ed9afd75314.

By the way, I took a quick look at patches 2&3 as well, for the
services, and they look good to me.

Pierre
-----BEGIN PGP SIGNATURE-----

iQFMBAEBCgA2FiEEctU9gYy29KFyWDdMqPyeRH9PfVQFAmBrXFEYHHBpZXJyZS5s
YW5nbG9pc0BnbXguY29tAAoJEKj8nkR/T31UzdcH/jrTteV+OM8h72472ZIzz5Ee
Xdg4H3kWFZry8vymPiq6T+7GvDADYDcySnQ9nA/myWHB/u/UEnzOJUD+XTYnrhPC
IyUbqY4sF60k3PbdBOrorVQkDwQB14geY/6bYIS3D5KTM9kgUzFKspM30oB10tHD
MWKKHzmEHSpK7gvnXngexKnUxiLawFHtP1HU3KPFg5PSlXy7GUjNZ3wURxj3qztZ
BBbZ/N8+9WQs2Hn9uE2CxHR18byk2aEiPBoBhu0wtwwu+4QKzk16+pRAL5qw1d07
60YeohMH4x3nFCO4KkvHp3I3XHplD2qpt7FK0kpentQtB93Va9fuxAJVS9UfT+U=
=Lcz1
-----END PGP SIGNATURE-----

?