diff --git a/libvirt.spec b/libvirt.spec
index a648aeb..a0774ca 100644
--- a/libvirt.spec
+++ b/libvirt.spec
@@ -90,11 +90,14 @@
 
 # Other optional features
 %define with_numactl          0%{!?_without_numactl:1}
+%define with_userfaultfd_sysctl 0%{!?_without_userfaultfd_sysctl:1}
 
 # A few optional bits off by default, we enable later
 %define with_fuse             0
 %define with_sanlock          0
 %define with_numad            0
+%define with_nbdkit           0
+%define with_nbdkit_config_default 0
 %define with_firewalld_zone   0
 %define with_netcf            0
 %define with_libssh2          0
@@ -128,7 +131,6 @@
     %define with_vmware 0
     %define with_libxl 0
     %define with_hyperv 0
-    %define with_vz 0
     %define with_lxc 0
 %endif
 
@@ -174,6 +176,26 @@
     %endif
 %endif
 
+# We want to build with nbdkit support, but should only enable nbdkit by
+# default if the OS ships a SELinux policy that allows libvirt to launch it.
+# Right now that's not the case anywhere, but things should be fine by the time
+# Fedora 40 is released.
+%if %{with_qemu}
+    # rhel-8 lacks pidfd_open
+    %if 0%{?fedora} || 0%{?rhel} >= 9
+        %define with_nbdkit 0%{!?_without_nbdkit:1}
+
+        # setting 'with_nbdkit_config_default' must be done only when compiling
+        # in nbdkit support
+        #
+        # TODO: add RHEL 9 once a minor release that contains the necessary SELinux
+        #       bits exists (we only support the most recent minor release)
+        %if 0%{?fedora} >= 40
+            %define with_nbdkit_config_default 0%{!?_without_nbdkit_config_default:1}
+        %endif
+    %endif
+%endif
+
 %ifarch %{arches_dmidecode}
     %define with_dmidecode 0%{!?_without_dmidecode:1}
 %endif
@@ -191,9 +213,29 @@
 %define qemu_moddir %{_libdir}/qemu
 %define qemu_datadir %{_datadir}/qemu
 
-%define with_mingw 0
+# Native / MinGW builds
+%define with_native 0%{!?_without_native:1}
+
+%define with_mingw32 0
+%define with_mingw64 0
+
 %if 0%{?fedora}
-    %define with_mingw 0%{!?_without_mingw:1}
+    %if 0%{!?_without_mingw:1}
+        %define with_mingw32 0%{!?_without_mingw32:1}
+        %define with_mingw64 0%{!?_without_mingw64:1}
+    %endif
+
+    # These tell the other mingw macros whether to perform or
+    # skip the 32-bit and 64-bit specific steps respectively
+    %define mingw_build_win32 %{with_mingw32}
+    %define mingw_build_win64 %{with_mingw64}
+%endif
+
+%if !%{with_native}
+    # Building the debugsource package apparently only works if the
+    # native build is enabled. debuginfo packages don't have this
+    # problem and setting this doesn't disable them
+    %global debug_package %{nil}
 %endif
 
 # RHEL releases provide stable tool chains and so it is safe to turn
@@ -205,6 +247,12 @@
     %define enable_werror -Dwerror=false -Dgit_werror=disabled
 %endif
 
+# Fedora and RHEL-9 are new enough to support /dev/userfaultfd, which
+# does not require enabling vm.unprivileged_userfaultfd sysctl.
+%if 0%{?fedora} || 0%{?rhel} >= 9
+    %define with_userfaultfd_sysctl 0
+%endif
+
 %define tls_priority "@LIBVIRT,SYSTEM"
 
 # libvirt 8.1.0 stops distributing any sysconfig files.
@@ -226,14 +274,20 @@
     done \
     %{nil}
 
+# To prevent rpmdev-bumpspec breakage
+%global baserelease 1
+
+# Hyperscale release
+%global hsrel .1
+
 Summary: Library providing a simple virtualization API
 Name: libvirt
-Version: 9.7.0
-Release: 1%{?dist}
+Version: 10.1.0
+Release: %{baserelease}%{?hsrel}%{?dist}
 License: GPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND OFL-1.1
 URL: https://libvirt.org/
 
-%if %(echo %{version} | grep -q "\.0$"; echo $?) == 1
+%if %(echo %{version} | grep "\.0$" >/dev/null; echo $?) == 1
     %define mainturl stable_updates/
 %endif
 Source: https://download.libvirt.org/%{?mainturl}libvirt-%{version}.tar.xz
@@ -249,6 +303,7 @@ Requires: libvirt-daemon-driver-lxc = %{version}-%{release}
 %endif
 %if %{with_qemu}
 Requires: libvirt-daemon-driver-qemu = %{version}-%{release}
+Requires: libvirt-client-qemu = %{version}-%{release}
 %endif
 # We had UML driver, but we've removed it.
 Obsoletes: libvirt-daemon-driver-uml <= 5.0.0
@@ -268,21 +323,29 @@ Requires: libvirt-libs = %{version}-%{release}
 # All build-time requirements. Run-time requirements are
 # listed against each sub-RPM
 BuildRequires: python3-docutils
-BuildRequires: gcc
 BuildRequires: meson >= 0.56.0
 BuildRequires: ninja-build
 BuildRequires: git
 BuildRequires: perl-interpreter
 BuildRequires: python3
-%if %{with_libxl}
+BuildRequires: python3-pytest
+# For xmllint
+BuildRequires: libxml2
+# For xsltproc
+BuildRequires: libxslt
+BuildRequires: gettext
+BuildRequires: systemd-rpm-macros
+# Fedora build root suckage
+BuildRequires: gawk
+%if %{with_native}
+BuildRequires: gcc
+    %if %{with_libxl}
 BuildRequires: xen-devel
-%endif
+    %endif
 BuildRequires: glib2-devel >= 2.56
 BuildRequires: libxml2-devel
-BuildRequires: libxslt
 BuildRequires: readline-devel
-BuildRequires: bash-completion >= 2.0
-BuildRequires: gettext
+BuildRequires: pkgconfig(bash-completion) >= 2.0
 BuildRequires: libtasn1-devel
 BuildRequires: gnutls-devel
 BuildRequires: libattr-devel
@@ -291,71 +354,72 @@ BuildRequires: libblkid-devel >= 2.17
 # for augparse, optionally used in testing
 BuildRequires: augeas
 BuildRequires: systemd-devel >= 185
-BuildRequires: systemd-rpm-macros
 BuildRequires: libpciaccess-devel >= 0.10.9
 BuildRequires: yajl-devel
-%if %{with_sanlock}
+    %if %{with_sanlock}
 BuildRequires: sanlock-devel >= 2.4
-%endif
+    %endif
 BuildRequires: libpcap-devel >= 1.5.0
 BuildRequires: libnl3-devel
 BuildRequires: libselinux-devel
 BuildRequires: iptables
 BuildRequires: ebtables
-BuildRequires: module-init-tools
+# For modprobe
+BuildRequires: kmod
 BuildRequires: cyrus-sasl-devel
 BuildRequires: polkit >= 0.112
 # For mount/umount in FS driver
 BuildRequires: util-linux
-%if %{with_qemu}
+    %if %{with_qemu}
 # For managing ACLs
 BuildRequires: libacl-devel
 # From QEMU RPMs, used by virstoragetest
 BuildRequires: /usr/bin/qemu-img
-%endif
+    %endif
+# nbdkit support requires libnbd
+    %if %{with_nbdkit}
+BuildRequires: libnbd-devel
+    %endif
 # For LVM drivers
 BuildRequires: lvm2
 # For pool type=iscsi
 BuildRequires: iscsi-initiator-utils
-%if %{with_storage_iscsi_direct}
+    %if %{with_storage_iscsi_direct}
 # For pool type=iscsi-direct
 BuildRequires: libiscsi-devel
-%endif
+    %endif
 # For disk driver
 BuildRequires: parted-devel
 # For Multipath support
 BuildRequires: device-mapper-devel
-%if %{with_storage_rbd}
+    %if %{with_storage_rbd}
 BuildRequires: librados-devel
 BuildRequires: librbd-devel
-%endif
-%if %{with_storage_gluster}
+    %endif
+    %if %{with_storage_gluster}
 BuildRequires: glusterfs-api-devel >= 3.4.1
 BuildRequires: glusterfs-devel >= 3.4.1
-%endif
-%if %{with_numactl}
+    %endif
+    %if %{with_numactl}
 # For QEMU/LXC numa info
 BuildRequires: numactl-devel
-%endif
+    %endif
 BuildRequires: libcap-ng-devel >= 0.5.0
-%if %{with_fuse}
+    %if %{with_fuse}
 BuildRequires: fuse-devel >= 2.8.6
-%endif
-%if %{with_libssh2}
+    %endif
+    %if %{with_libssh2}
 BuildRequires: libssh2-devel >= 1.3.0
-%endif
-%if %{with_netcf}
+    %endif
+    %if %{with_netcf}
 BuildRequires: netcf-devel >= 0.2.2
-%endif
-%if 0%{?fedora} || 0%{?rhel} >= 9
-BuildRequires: passt
-%endif
-%if %{with_esx}
+    %endif
+    %if %{with_esx}
 BuildRequires: libcurl-devel
-%endif
-%if %{with_hyperv}
+    %endif
+    %if %{with_hyperv}
 BuildRequires: libwsman-devel >= 2.6.3
-%endif
+    %endif
 BuildRequires: audit-libs-devel
 # we need /usr/sbin/dtrace
 BuildRequires: systemtap-sdt-devel
@@ -363,33 +427,27 @@ BuildRequires: systemtap-sdt-devel
 BuildRequires: util-linux
 # For showmount in FS driver (netfs discovery)
 BuildRequires: nfs-utils
-# Fedora build root suckage
-BuildRequires: gawk
-# For storage wiping with different algorithms
-BuildRequires: scrub
-%if %{with_numad}
+    %if %{with_numad}
 BuildRequires: numad
-%endif
-%if %{with_wireshark}
+    %endif
+    %if %{with_wireshark}
 BuildRequires: wireshark-devel
-%endif
-%if %{with_libssh}
+    %endif
+    %if %{with_libssh}
 BuildRequires: libssh-devel >= 0.8.1
-%endif
-BuildRequires: rpcgen
+    %endif
 BuildRequires: libtirpc-devel
+    %if %{with_firewalld_zone}
 # Needed for the firewalld_reload macro
-%if %{with_firewalld_zone}
 BuildRequires: firewalld-filesystem
+    %endif
 %endif
 
-%if %{with_mingw}
+%if %{with_mingw32}
 BuildRequires: mingw32-filesystem
 BuildRequires: mingw32-gcc
 BuildRequires: mingw32-binutils
 BuildRequires: mingw32-glib2 >= 2.48
-BuildRequires: mingw32-libgpg-error
-BuildRequires: mingw32-libgcrypt
 BuildRequires: mingw32-gnutls
 BuildRequires: mingw32-gettext
 BuildRequires: mingw32-libxml2
@@ -397,12 +455,12 @@ BuildRequires: mingw32-portablexdr
 BuildRequires: mingw32-dlfcn
 BuildRequires: mingw32-libssh2
 BuildRequires: mingw32-curl
+%endif
+%if %{with_mingw64}
 BuildRequires: mingw64-filesystem
 BuildRequires: mingw64-gcc
 BuildRequires: mingw64-binutils
 BuildRequires: mingw64-glib2 >= 2.48
-BuildRequires: mingw64-libgpg-error
-BuildRequires: mingw64-libgcrypt
 BuildRequires: mingw64-gnutls
 BuildRequires: mingw64-gettext
 BuildRequires: mingw64-libxml2
@@ -417,6 +475,7 @@ Libvirt is a C toolkit to interact with the virtualization capabilities
 of recent versions of Linux (and other OSes). The main package includes
 the libvirtd server exporting the virtualization support.
 
+%if %{with_native}
 %package docs
 Summary: API reference and website documentation
 
@@ -456,10 +515,10 @@ Requires: iproute
 # for /sbin/tc
 Requires: iproute-tc
 Requires: polkit >= 0.112
-%if %{with_dmidecode}
+    %if %{with_dmidecode}
 # For virConnectGetSysinfo
 Requires: dmidecode
-%endif
+    %endif
 # For service management
 Requires(posttrans): /usr/bin/systemctl
 Requires(preun): /usr/bin/systemctl
@@ -468,11 +527,11 @@ Requires: dbus
 # For uid creation during pre
 Requires(pre): shadow-utils
 # Needed by /usr/libexec/libvirt-guests.sh script.
-%if 0%{?fedora}
+    %if 0%{?fedora}
 Requires: gettext-runtime
-%else
+    %else
 Requires: gettext
-%endif
+    %endif
 
 # Ensure smooth upgrades
 Obsoletes: libvirt-admin < 7.3.0
@@ -567,6 +626,7 @@ Requires: libvirt-libs = %{version}-%{release}
 # needed for device enumeration
 Requires: systemd >= 185
 # For managing persistent mediated devices
+# Note: for nodedev-update support at least mdevctl v1.3.0 is required
 Requires: mdevctl
 # for modprobe of pci devices
 Requires: module-init-tools
@@ -580,9 +640,9 @@ capabilities.
 Summary: Interface driver plugin for the libvirtd daemon
 Requires: libvirt-daemon-common = %{version}-%{release}
 Requires: libvirt-libs = %{version}-%{release}
-%if %{with_netcf}
+    %if %{with_netcf}
 Requires: netcf-libs >= 0.2.2
-%endif
+    %endif
 
 %description daemon-driver-interface
 The interface driver plugin for the libvirtd daemon, providing
@@ -604,13 +664,15 @@ Requires: libvirt-libs = %{version}-%{release}
 Requires: nfs-utils
 # For mkfs
 Requires: util-linux
-%if %{with_qemu}
+# For storage wiping with different algorithms
+Requires: scrub
+    %if %{with_qemu}
 # From QEMU RPMs
 Requires: /usr/bin/qemu-img
-%endif
-%if !%{with_storage_rbd}
+    %endif
+    %if !%{with_storage_rbd}
 Obsoletes: libvirt-daemon-driver-storage-rbd < 5.2.0
-%endif
+    %endif
 Obsoletes: libvirt-daemon-driver-storage-sheepdog < 8.8.0
 
 %description daemon-driver-storage-core
@@ -658,7 +720,7 @@ Requires: iscsi-initiator-utils
 The storage driver backend adding implementation of the storage APIs for iscsi
 volumes using the host iscsi stack.
 
-%if %{with_storage_iscsi_direct}
+    %if %{with_storage_iscsi_direct}
 %package daemon-driver-storage-iscsi-direct
 Summary: Storage driver plugin for iscsi-direct
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
@@ -667,7 +729,7 @@ Requires: libvirt-libs = %{version}-%{release}
 %description daemon-driver-storage-iscsi-direct
 The storage driver backend adding implementation of the storage APIs for iscsi
 volumes using libiscsi direct connection.
-%endif
+    %endif
 
 %package daemon-driver-storage-mpath
 Summary: Storage driver plugin for multipath volumes
@@ -679,24 +741,24 @@ Requires: device-mapper
 The storage driver backend adding implementation of the storage APIs for
 multipath storage using device mapper.
 
-%if %{with_storage_gluster}
+    %if %{with_storage_gluster}
 %package daemon-driver-storage-gluster
 Summary: Storage driver plugin for gluster
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
 Requires: libvirt-libs = %{version}-%{release}
-    %if 0%{?fedora}
+        %if 0%{?fedora}
 Requires: glusterfs-client >= 2.0.1
-    %endif
-    %if 0%{?fedora} || 0%{?with_storage_gluster}
+        %endif
+        %if 0%{?fedora} || 0%{?with_storage_gluster}
 Requires: /usr/sbin/gluster
-    %endif
+        %endif
 
 %description daemon-driver-storage-gluster
 The storage driver backend adding implementation of the storage APIs for gluster
 volumes using libgfapi.
-%endif
+    %endif
 
-%if %{with_storage_rbd}
+    %if %{with_storage_rbd}
 %package daemon-driver-storage-rbd
 Summary: Storage driver plugin for rbd
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
@@ -705,9 +767,9 @@ Requires: libvirt-libs = %{version}-%{release}
 %description daemon-driver-storage-rbd
 The storage driver backend adding implementation of the storage APIs for rbd
 volumes using the ceph protocol.
-%endif
+    %endif
 
-%if %{with_storage_zfs}
+    %if %{with_storage_zfs}
 %package daemon-driver-storage-zfs
 Summary: Storage driver plugin for ZFS
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
@@ -719,7 +781,7 @@ Requires: /sbin/zpool
 %description daemon-driver-storage-zfs
 The storage driver backend adding implementation of the storage APIs for
 ZFS volumes.
-%endif
+    %endif
 
 %package daemon-driver-storage
 Summary: Storage driver plugin including all backends for the libvirtd daemon
@@ -729,25 +791,25 @@ Requires: libvirt-daemon-driver-storage-logical = %{version}-%{release}
 Requires: libvirt-daemon-driver-storage-scsi = %{version}-%{release}
 Requires: libvirt-daemon-driver-storage-iscsi = %{version}-%{release}
 Requires: libvirt-daemon-driver-storage-mpath = %{version}-%{release}
-%if %{with_storage_iscsi_direct}
+    %if %{with_storage_iscsi_direct}
 Requires: libvirt-daemon-driver-storage-iscsi-direct = %{version}-%{release}
-%endif
-%if %{with_storage_gluster}
+    %endif
+    %if %{with_storage_gluster}
 Requires: libvirt-daemon-driver-storage-gluster = %{version}-%{release}
-%endif
-%if %{with_storage_rbd}
+    %endif
+    %if %{with_storage_rbd}
 Requires: libvirt-daemon-driver-storage-rbd = %{version}-%{release}
-%endif
-%if %{with_storage_zfs}
+    %endif
+    %if %{with_storage_zfs}
 Requires: libvirt-daemon-driver-storage-zfs = %{version}-%{release}
-%endif
+    %endif
 
 %description daemon-driver-storage
 The storage driver plugin for the libvirtd daemon, providing
 an implementation of the storage APIs using LVM, iSCSI,
 parted and more.
 
-%if %{with_qemu}
+    %if %{with_qemu}
 %package daemon-driver-qemu
 Summary: QEMU driver plugin for the libvirtd daemon
 Requires: libvirt-daemon-common = %{version}-%{release}
@@ -761,21 +823,26 @@ Requires: lzop
 Requires: xz
 Requires: systemd-container
 Requires: swtpm-tools
-    %if %{with_numad}
+        %if %{with_numad}
 Requires: numad
-    %endif
-    %if 0%{?fedora} || 0%{?rhel} >= 9
+        %endif
+        %if 0%{?fedora} || 0%{?rhel} >= 9
 Recommends: passt
 Recommends: passt-selinux
-    %endif
+        %endif
+        %if %{with_nbdkit}
+Recommends: nbdkit
+Recommends: nbdkit-curl-plugin
+Recommends: nbdkit-ssh-plugin
+        %endif
 
 %description daemon-driver-qemu
 The qemu driver plugin for the libvirtd daemon, providing
 an implementation of the hypervisor driver APIs using
 QEMU
-%endif
+    %endif
 
-%if %{with_lxc}
+    %if %{with_lxc}
 %package daemon-driver-lxc
 Summary: LXC driver plugin for the libvirtd daemon
 Requires: libvirt-daemon-common = %{version}-%{release}
@@ -785,17 +852,17 @@ Requires: libvirt-daemon-driver-network = %{version}-%{release}
 Requires: systemd-container
 # for modprobe of nbd driver
 Requires: module-init-tools
-    %if %{with_numad}
+        %if %{with_numad}
 Requires: numad
-    %endif
+        %endif
 
 %description daemon-driver-lxc
 The LXC driver plugin for the libvirtd daemon, providing
 an implementation of the hypervisor driver APIs using
 the Linux kernel
-%endif
+    %endif
 
-%if %{with_vbox}
+    %if %{with_vbox}
 %package daemon-driver-vbox
 Summary: VirtualBox driver plugin for the libvirtd daemon
 Requires: libvirt-daemon-common = %{version}-%{release}
@@ -805,9 +872,9 @@ Requires: libvirt-libs = %{version}-%{release}
 The vbox driver plugin for the libvirtd daemon, providing
 an implementation of the hypervisor driver APIs using
 VirtualBox
-%endif
+    %endif
 
-%if %{with_libxl}
+    %if %{with_libxl}
 %package daemon-driver-libxl
 Summary: Libxl driver plugin for the libvirtd daemon
 Requires: libvirt-daemon-common = %{version}-%{release}
@@ -818,22 +885,22 @@ Obsoletes: libvirt-daemon-driver-xen < 4.3.0
 The Libxl driver plugin for the libvirtd daemon, providing
 an implementation of the hypervisor driver APIs using
 Libxl
-%endif
+    %endif
 
-%if %{with_qemu_tcg}
+    %if %{with_qemu_tcg}
 %package daemon-qemu
 Summary: Server side daemon & driver required to run QEMU guests
 
-    %if %{with_modular_daemons}
+        %if %{with_modular_daemons}
 Requires: libvirt-daemon-common = %{version}-%{release}
 Requires: libvirt-daemon-log = %{version}-%{release}
 Requires: libvirt-daemon-lock = %{version}-%{release}
 Requires: libvirt-daemon-plugin-lockd = %{version}-%{release}
 Requires: libvirt-daemon-proxy = %{version}-%{release}
 Recommends: libvirt-daemon = %{version}-%{release}
-    %else
+        %else
 Requires: libvirt-daemon = %{version}-%{release}
-    %endif
+        %endif
 Requires: libvirt-daemon-driver-qemu = %{version}-%{release}
 Requires: libvirt-daemon-driver-interface = %{version}-%{release}
 Requires: libvirt-daemon-driver-network = %{version}-%{release}
@@ -846,22 +913,22 @@ Requires: qemu
 %description daemon-qemu
 Server side daemon and driver required to manage the virtualization
 capabilities of the QEMU TCG emulators
-%endif
+    %endif
 
-%if %{with_qemu_kvm}
+    %if %{with_qemu_kvm}
 %package daemon-kvm
 Summary: Server side daemon & driver required to run KVM guests
 
-    %if %{with_modular_daemons}
+        %if %{with_modular_daemons}
 Requires: libvirt-daemon-common = %{version}-%{release}
 Requires: libvirt-daemon-log = %{version}-%{release}
 Requires: libvirt-daemon-lock = %{version}-%{release}
 Requires: libvirt-daemon-plugin-lockd = %{version}-%{release}
 Requires: libvirt-daemon-proxy = %{version}-%{release}
 Recommends: libvirt-daemon = %{version}-%{release}
-    %else
+        %else
 Requires: libvirt-daemon = %{version}-%{release}
-    %endif
+        %endif
 Requires: libvirt-daemon-driver-qemu = %{version}-%{release}
 Requires: libvirt-daemon-driver-interface = %{version}-%{release}
 Requires: libvirt-daemon-driver-network = %{version}-%{release}
@@ -869,24 +936,30 @@ Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
 Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
 Requires: libvirt-daemon-driver-secret = %{version}-%{release}
 Requires: libvirt-daemon-driver-storage = %{version}-%{release}
+
+# relax requirement for qemu-kvm for fb builds
+%if 0%{?facebook}
+Recommends: qemu-kvm
+%else
 Requires: qemu-kvm
+%endif
 
 %description daemon-kvm
 Server side daemon and driver required to manage the virtualization
 capabilities of the KVM hypervisor
-%endif
+    %endif
 
-%if %{with_lxc}
+    %if %{with_lxc}
 %package daemon-lxc
 Summary: Server side daemon & driver required to run LXC guests
 
-    %if %{with_modular_daemons}
+        %if %{with_modular_daemons}
 Requires: libvirt-daemon-common = %{version}-%{release}
 Requires: libvirt-daemon-proxy = %{version}-%{release}
 Recommends: libvirt-daemon = %{version}-%{release}
-    %else
+        %else
 Requires: libvirt-daemon = %{version}-%{release}
-    %endif
+        %endif
 Requires: libvirt-daemon-driver-lxc = %{version}-%{release}
 Requires: libvirt-daemon-driver-interface = %{version}-%{release}
 Requires: libvirt-daemon-driver-network = %{version}-%{release}
@@ -898,21 +971,21 @@ Requires: libvirt-daemon-driver-storage = %{version}-%{release}
 %description daemon-lxc
 Server side daemon and driver required to manage the virtualization
 capabilities of LXC
-%endif
+    %endif
 
-%if %{with_libxl}
+    %if %{with_libxl}
 %package daemon-xen
 Summary: Server side daemon & driver required to run XEN guests
 
-    %if %{with_modular_daemons}
+        %if %{with_modular_daemons}
 Requires: libvirt-daemon-common = %{version}-%{release}
 Requires: libvirt-daemon-lock = %{version}-%{release}
 Requires: libvirt-daemon-plugin-lockd = %{version}-%{release}
 Requires: libvirt-daemon-proxy = %{version}-%{release}
 Recommends: libvirt-daemon = %{version}-%{release}
-    %else
+        %else
 Requires: libvirt-daemon = %{version}-%{release}
-    %endif
+        %endif
 Requires: libvirt-daemon-driver-libxl = %{version}-%{release}
 Requires: libvirt-daemon-driver-interface = %{version}-%{release}
 Requires: libvirt-daemon-driver-network = %{version}-%{release}
@@ -925,19 +998,19 @@ Requires: xen
 %description daemon-xen
 Server side daemon and driver required to manage the virtualization
 capabilities of XEN
-%endif
+    %endif
 
-%if %{with_vbox}
+    %if %{with_vbox}
 %package daemon-vbox
 Summary: Server side daemon & driver required to run VirtualBox guests
 
-    %if %{with_modular_daemons}
+        %if %{with_modular_daemons}
 Requires: libvirt-daemon-common = %{version}-%{release}
 Requires: libvirt-daemon-proxy = %{version}-%{release}
 Recommends: libvirt-daemon = %{version}-%{release}
-    %else
+        %else
 Requires: libvirt-daemon = %{version}-%{release}
-    %endif
+        %endif
 Requires: libvirt-daemon-driver-vbox = %{version}-%{release}
 Requires: libvirt-daemon-driver-interface = %{version}-%{release}
 Requires: libvirt-daemon-driver-network = %{version}-%{release}
@@ -949,7 +1022,7 @@ Requires: libvirt-daemon-driver-storage = %{version}-%{release}
 %description daemon-vbox
 Server side daemon and driver required to manage the virtualization
 capabilities of VirtualBox
-%endif
+    %endif
 
 %package client
 Summary: Client side utilities of the libvirt library
@@ -986,7 +1059,7 @@ Requires: cyrus-sasl-gssapi
 %description libs
 Shared libraries for accessing the libvirt daemon.
 
-%if %{with_wireshark}
+    %if %{with_wireshark}
 %package wireshark
 Summary: Wireshark dissector plugin for libvirt RPC transactions
 Requires: wireshark
@@ -994,9 +1067,9 @@ Requires: libvirt-libs = %{version}-%{release}
 
 %description wireshark
 Wireshark dissector plugin for better analysis of libvirt RPC traffic.
-%endif
+    %endif
 
-%if %{with_lxc}
+    %if %{with_lxc}
 %package login-shell
 Summary: Login shell for connecting users to an LXC container
 Requires: libvirt-libs = %{version}-%{release}
@@ -1005,7 +1078,7 @@ Requires: libvirt-libs = %{version}-%{release}
 Provides the set-uid virt-login-shell binary that is used to
 connect a user to an LXC container when they login, by switching
 namespaces.
-%endif
+    %endif
 
 %package devel
 Summary: Libraries, includes, etc. to compile with the libvirt library
@@ -1015,7 +1088,7 @@ Requires: pkgconfig
 %description devel
 Include header files & development libraries for the libvirt C library.
 
-%if %{with_sanlock}
+    %if %{with_sanlock}
 %package daemon-plugin-sanlock
 Summary: Sanlock lock manager plugin for QEMU driver
 Requires: sanlock >= 2.4
@@ -1028,7 +1101,7 @@ Provides: libvirt-lock-sanlock = %{version}-%{release}
 %description daemon-plugin-sanlock
 Includes the Sanlock lock manager plugin for the QEMU
 driver
-%endif
+    %endif
 
 %package nss
 Summary: Libvirt plugin for Name Service Switch
@@ -1036,8 +1109,9 @@ Requires: libvirt-daemon-driver-network = %{version}-%{release}
 
 %description nss
 Libvirt plugin for NSS for translating domain names into IP addresses.
+%endif
 
-%if %{with_mingw}
+%if %{with_mingw32}
 %package -n mingw32-libvirt
 Summary: %{summary}
 Obsoletes: mingw32-libvirt-static < 7.0.0
@@ -1046,6 +1120,10 @@ BuildArch: noarch
 %description -n mingw32-libvirt
 MinGW Windows libvirt virtualization library.
 
+%{?mingw32_debug_package}
+%endif
+
+%if %{with_mingw64}
 %package -n mingw64-libvirt
 Summary: %{summary}
 Obsoletes: mingw64-libvirt-static < 7.0.0
@@ -1054,7 +1132,7 @@ BuildArch: noarch
 %description -n mingw64-libvirt
 MinGW Windows libvirt virtualization library.
 
-%{?mingw_debug_package}
+%{?mingw64_debug_package}
 %endif
 
 %prep
@@ -1152,6 +1230,18 @@ exit 1
     %define arg_numad -Dnumad=disabled
 %endif
 
+%if %{with_nbdkit}
+    %define arg_nbdkit -Dnbdkit=enabled
+%else
+    %define arg_nbdkit -Dnbdkit=disabled
+%endif
+
+%if %{with_nbdkit_config_default}
+    %define arg_nbdkit_config_default -Dnbdkit_config_default=enabled
+%else
+    %define arg_nbdkit_config_default -Dnbdkit_config_default=disabled
+%endif
+
 %if %{with_fuse}
     %define arg_fuse -Dfuse=enabled
 %else
@@ -1206,6 +1296,12 @@ exit 1
     %define arg_remote_mode -Dremote_default_mode=legacy
 %endif
 
+%if %{with_userfaultfd_sysctl}
+    %define arg_userfaultfd_sysctl -Duserfaultfd_sysctl=enabled
+%else
+    %define arg_userfaultfd_sysctl -Duserfaultfd_sysctl=disabled
+%endif
+
 %define when  %(date +"%%F-%%T")
 %define where %(hostname)
 %define who   %{?packager}%{!?packager:Unknown}
@@ -1217,6 +1313,7 @@ exit 1
 
 export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
 
+%if %{with_native}
 %meson \
            -Drunstatedir=%{_rundir} \
            -Dinitconfdir=%{_sysconfdir}/sysconfig \
@@ -1255,6 +1352,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
            -Dcapng=enabled \
            %{?arg_fuse} \
            %{?arg_netcf} \
+           -Dnls=enabled \
            -Dselinux=enabled \
            %{?arg_selinux_mount} \
            -Dapparmor=disabled \
@@ -1264,6 +1362,8 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
            -Dyajl=enabled \
            %{?arg_sanlock} \
            -Dlibpcap=enabled \
+           %{?arg_nbdkit} \
+           %{?arg_nbdkit_config_default} \
            -Dlibnl=enabled \
            -Daudit=enabled \
            -Ddtrace=enabled \
@@ -1281,6 +1381,8 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
            -Dqemu_moddir=%{qemu_moddir} \
            -Dqemu_datadir=%{qemu_datadir} \
            -Dtls_priority=%{tls_priority} \
+           -Dsysctl_config=enabled \
+           %{?arg_userfaultfd_sysctl} \
            %{?enable_werror} \
            -Dexpensive_tests=enabled \
            -Dinit_script=systemd \
@@ -1290,8 +1392,9 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
            %{?arg_login_shell}
 
 %meson_build
+%endif
 
-%if %{with_mingw}
+%if %{with_mingw32} || %{with_mingw64}
 %mingw_meson \
   --auto-features=enabled \
   -Ddriver_remote=enabled \
@@ -1320,20 +1423,22 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
   -Ddriver_vmware=disabled \
   -Ddriver_vz=disabled \
   -Ddtrace=disabled \
-  -Dexpensive_tests=enabled \
+  -Dexpensive_tests=disabled \
   -Dfirewalld=disabled \
   -Dfirewalld_zone=disabled \
   -Dfuse=disabled \
   -Dglusterfs=disabled \
   -Dhost_validate=disabled \
   -Dlibiscsi=disabled \
+  -Dnbdkit=disabled \
+  -Dnbdkit_config_default=disabled \
   -Dlibnl=disabled \
   -Dlibpcap=disabled \
   -Dlibssh2=disabled \
   -Dlibssh=disabled \
   -Dlogin_shell=disabled \
   -Dnetcf=disabled \
-  -Dnls=disabled \
+  -Dnls=enabled \
   -Dnss=disabled \
   -Dnumactl=disabled \
   -Dnumad=disabled \
@@ -1361,11 +1466,12 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
   -Dstorage_vstorage=disabled \
   -Dstorage_zfs=disabled \
   -Dsysctl_config=disabled \
+  -Duserfaultfd_sysctl=disabled \
   -Dtests=disabled \
   -Dudev=disabled \
   -Dwireshark_dissector=disabled \
   -Dyajl=disabled
-%mingw_ninja
+    %mingw_ninja
 %endif
 
 %install
@@ -1373,6 +1479,7 @@ rm -fr %{buildroot}
 
 export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
 
+%if %{with_native}
 %meson_install
 
 # We don't want to install /etc/libvirt/qemu/networks in the main %%files list
@@ -1392,65 +1499,73 @@ cp -a $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml \
 # libvirt saves these files with mode 600
 chmod 600 $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml
 
-%if ! %{with_qemu}
+    %if ! %{with_qemu}
 rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_qemu.aug
 rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug
-%endif
+rm -f $RPM_BUILD_ROOT%{_sysusersdir}/libvirt-qemu.conf
+    %endif
 %find_lang %{name}
 
-%if ! %{with_sanlock}
+    %if ! %{with_sanlock}
 rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirt_sanlock.aug
 rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug
-%endif
+    %endif
 
-%if ! %{with_lxc}
+    %if ! %{with_lxc}
 rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_lxc.aug
 rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug
-%endif
+    %endif
 
-%if ! %{with_qemu}
+    %if ! %{with_qemu}
 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf
 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.qemu
-%endif
-%if ! %{with_lxc}
+    %endif
+    %if ! %{with_lxc}
 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/lxc.conf
 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.lxc
-%endif
-%if ! %{with_libxl}
+    %endif
+    %if ! %{with_libxl}
 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/libxl.conf
 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.libxl
 rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_libxl.aug
 rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug
-%endif
+    %endif
 
 # Copied into libvirt-docs subpackage eventually
 mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt libvirt-docs
 
-%ifarch %{arches_systemtap_64bit}
+    %ifarch %{arches_systemtap_64bit}
 mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes.stp \
    $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes-64.stp
 
-    %if %{with_qemu}
+        %if %{with_qemu}
 mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp \
    $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes-64.stp
+        %endif
     %endif
 %endif
 
-%if %{with_mingw}
+%if %{with_mingw32} || %{with_mingw64}
 %mingw_ninja_install
+%endif
 
+%if %{with_mingw32}
 rm -rf $RPM_BUILD_ROOT%{mingw32_sysconfdir}/libvirt/nwfilter
-rm -rf $RPM_BUILD_ROOT%{mingw64_sysconfdir}/libvirt/nwfilter
 rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/doc/*
-rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/doc/*
 rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/gtk-doc/*
-rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/gtk-doc/*
-
 rm -rf $RPM_BUILD_ROOT%{mingw32_libexecdir}/libvirt_iohelper.exe
-rm -rf $RPM_BUILD_ROOT%{mingw64_libexecdir}/libvirt_iohelper.exe
 rm -rf $RPM_BUILD_ROOT%{mingw32_libexecdir}/libvirt-guests.sh
+%endif
+
+%if %{with_mingw64}
+rm -rf $RPM_BUILD_ROOT%{mingw64_sysconfdir}/libvirt/nwfilter
+rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/doc/*
+rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/gtk-doc/*
+rm -rf $RPM_BUILD_ROOT%{mingw64_libexecdir}/libvirt_iohelper.exe
 rm -rf $RPM_BUILD_ROOT%{mingw64_libexecdir}/libvirt-guests.sh
+%endif
 
+%if %{with_mingw32} || %{with_mingw64}
 %mingw_debug_install_post
 
 %mingw_find_lang %{name}
@@ -1458,9 +1573,12 @@ rm -rf $RPM_BUILD_ROOT%{mingw64_libexecdir}/libvirt-guests.sh
 %endif
 
 %check
+
+%if %{with_native}
 # Building on slow archs, like emulated s390x in Fedora copr, requires
 # raising the test timeout
 VIR_TEST_DEBUG=1 %meson_test --no-suite syntax-check --timeout-multiplier 10
+%endif
 
 %define libvirt_rpmstatedir %{_localstatedir}/lib/rpm-state/libvirt
 
@@ -1606,6 +1724,7 @@ VIR_TEST_DEBUG=1 %meson_test --no-suite syntax-check --timeout-multiplier 10
 %define libvirt_systemd_config_pre() %libvirt_systemd_schedule_restart %1.service
 %define libvirt_systemd_config_posttrans() %libvirt_systemd_perform_restart %1.service
 
+%if %{with_native}
 %pre daemon
 %libvirt_sysconfig_pre libvirtd
 %libvirt_systemd_inet_pre libvirtd
@@ -1670,9 +1789,9 @@ exit 0
 %libvirt_systemd_unix_pre virtnetworkd
 
 %post daemon-driver-network
-%if %{with_firewalld_zone}
+    %if %{with_firewalld_zone}
     %firewalld_reload
-%endif
+    %endif
 
 %posttrans daemon-driver-network
 %libvirt_sysconfig_posttrans virtnetworkd
@@ -1682,9 +1801,9 @@ exit 0
 %libvirt_systemd_unix_preun virtnetworkd
 
 %postun daemon-driver-network
-%if %{with_firewalld_zone}
+    %if %{with_firewalld_zone}
     %firewalld_reload
-%endif
+    %endif
 
 %pre daemon-driver-nwfilter
 %libvirt_sysconfig_pre virtnwfilterd
@@ -1741,20 +1860,23 @@ exit 0
 %preun daemon-driver-storage-core
 %libvirt_systemd_unix_preun virtstoraged
 
-%if %{with_qemu}
+    %if %{with_qemu}
 %pre daemon-driver-qemu
 %libvirt_sysconfig_pre virtqemud
 %libvirt_systemd_unix_pre virtqemud
+
 # We want soft static allocation of well-known ids, as disk images
-# are commonly shared across NFS mounts by id rather than name; see
-# https://fedoraproject.org/wiki/Packaging:UsersAndGroups
-getent group kvm >/dev/null || groupadd -f -g 36 -r kvm
-getent group qemu >/dev/null || groupadd -f -g 107 -r qemu
-if ! getent passwd qemu >/dev/null; then
-  if ! getent passwd 107 >/dev/null; then
-    useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu
+# are commonly shared across NFS mounts by id rather than name.
+# See https://docs.fedoraproject.org/en-US/packaging-guidelines/UsersAndGroups/
+# We can not use the sysusers_create_compat macro here as we want to keep the
+# specfile standalone and not relying on additionnal files.
+getent group 'kvm' >/dev/null || groupadd -f -g '36' -r 'kvm' || :
+getent group 'qemu' >/dev/null || groupadd -f -g '107' -r 'qemu' || :
+if ! getent passwd 'qemu' >/dev/null; then
+  if ! getent passwd '107' >/dev/null; then
+    useradd -r -u '107' -g 'qemu' -G 'kvm' -d '/' -s '/sbin/nologin' -c 'qemu user' 'qemu' || :
   else
-    useradd -r -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu
+    useradd -r -g 'qemu' -G 'kvm' -d '/' -s '/sbin/nologin' -c 'qemu user' 'qemu' || :
   fi
 fi
 exit 0
@@ -1765,9 +1887,9 @@ exit 0
 
 %preun daemon-driver-qemu
 %libvirt_systemd_unix_preun virtqemud
-%endif
+    %endif
 
-%if %{with_lxc}
+    %if %{with_lxc}
 %pre daemon-driver-lxc
 %libvirt_sysconfig_pre virtlxcd
 %libvirt_systemd_unix_pre virtlxcd
@@ -1778,9 +1900,9 @@ exit 0
 
 %preun daemon-driver-lxc
 %libvirt_systemd_unix_preun virtlxcd
-%endif
+    %endif
 
-%if %{with_vbox}
+    %if %{with_vbox}
 %pre daemon-driver-vbox
 %libvirt_sysconfig_pre virtvboxd
 %libvirt_systemd_unix_pre virtvboxd
@@ -1791,9 +1913,9 @@ exit 0
 
 %preun daemon-driver-vbox
 %libvirt_systemd_unix_preun virtvboxd
-%endif
+    %endif
 
-%if %{with_libxl}
+    %if %{with_libxl}
 %pre daemon-driver-libxl
 %libvirt_sysconfig_pre virtxend
 %libvirt_systemd_unix_pre virtxend
@@ -1804,7 +1926,7 @@ exit 0
 
 %preun daemon-driver-libxl
 %libvirt_systemd_unix_preun virtxend
-%endif
+    %endif
 
 %pre daemon-config-network
 %libvirt_systemd_config_pre libvirtd
@@ -1869,12 +1991,14 @@ done
 %libvirt_systemd_config_posttrans libvirtd
 %libvirt_systemd_config_posttrans virtnwfilterd
 
-%if %{with_lxc}
+    %if %{with_lxc}
 %pre login-shell
 getent group virtlogin >/dev/null || groupadd -r virtlogin
 exit 0
+    %endif
 %endif
 
+%if %{with_native}
 %files
 
 %files docs
@@ -1935,9 +2059,9 @@ exit 0
 %{_datadir}/augeas/lenses/virtlockd.aug
 %{_datadir}/augeas/lenses/tests/test_virtlockd.aug
 %{_datadir}/augeas/lenses/libvirt_lockd.aug
-%if %{with_qemu}
+    %if %{with_qemu}
 %{_datadir}/augeas/lenses/tests/test_libvirt_lockd.aug
-%endif
+    %endif
 %attr(0755, root, root) %{_sbindir}/virtlockd
 %{_mandir}/man8/virtlockd.8*
 
@@ -2010,13 +2134,13 @@ exit 0
 %attr(0755, root, root) %{_libexecdir}/libvirt_leaseshelper
 %{_libdir}/libvirt/connection-driver/libvirt_driver_network.so
 %{_mandir}/man8/virtnetworkd.8*
-%if %{with_firewalld_zone}
+    %if %{with_firewalld_zone}
 %{_prefix}/lib/firewalld/zones/libvirt.xml
 %{_prefix}/lib/firewalld/zones/libvirt-routed.xml
 %{_prefix}/lib/firewalld/policies/libvirt-routed-in.xml
 %{_prefix}/lib/firewalld/policies/libvirt-routed-out.xml
 %{_prefix}/lib/firewalld/policies/libvirt-to-host.xml
-%endif
+    %endif
 
 %files daemon-driver-nodedev
 %config(noreplace) %{_sysconfdir}/libvirt/virtnodedevd.conf
@@ -2093,34 +2217,36 @@ exit 0
 %files daemon-driver-storage-iscsi
 %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_iscsi.so
 
-%if %{with_storage_iscsi_direct}
+    %if %{with_storage_iscsi_direct}
 %files daemon-driver-storage-iscsi-direct
 %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_iscsi-direct.so
-%endif
+    %endif
 
 %files daemon-driver-storage-mpath
 %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_mpath.so
 
-%if %{with_storage_gluster}
+    %if %{with_storage_gluster}
 %files daemon-driver-storage-gluster
 %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_gluster.so
 %{_libdir}/libvirt/storage-file/libvirt_storage_file_gluster.so
-%endif
+    %endif
 
-%if %{with_storage_rbd}
+    %if %{with_storage_rbd}
 %files daemon-driver-storage-rbd
 %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_rbd.so
-%endif
+    %endif
 
-%if %{with_storage_zfs}
+    %if %{with_storage_zfs}
 %files daemon-driver-storage-zfs
 %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_zfs.so
-%endif
+    %endif
 
-%if %{with_qemu}
+    %if %{with_qemu}
 %files daemon-driver-qemu
 %config(noreplace) %{_sysconfdir}/libvirt/virtqemud.conf
+        %if %{with_userfaultfd_sysctl}
 %config(noreplace) %{_prefix}/lib/sysctl.d/60-qemu-postcopy-migration.conf
+        %endif
 %{_datadir}/augeas/lenses/virtqemud.aug
 %{_datadir}/augeas/lenses/tests/test_virtqemud.aug
 %{_unitdir}/virtqemud.service
@@ -2155,9 +2281,10 @@ exit 0
 %{_bindir}/virt-qemu-run
 %{_mandir}/man1/virt-qemu-run.1*
 %{_mandir}/man8/virtqemud.8*
-%endif
+%{_sysusersdir}/libvirt-qemu.conf
+    %endif
 
-%if %{with_lxc}
+    %if %{with_lxc}
 %files daemon-driver-lxc
 %config(noreplace) %{_sysconfdir}/libvirt/virtlxcd.conf
 %{_datadir}/augeas/lenses/virtlxcd.aug
@@ -2179,9 +2306,9 @@ exit 0
 %attr(0755, root, root) %{_libexecdir}/libvirt_lxc
 %{_libdir}/libvirt/connection-driver/libvirt_driver_lxc.so
 %{_mandir}/man8/virtlxcd.8*
-%endif
+    %endif
 
-%if %{with_libxl}
+    %if %{with_libxl}
 %files daemon-driver-libxl
 %config(noreplace) %{_sysconfdir}/libvirt/virtxend.conf
 %{_datadir}/augeas/lenses/virtxend.aug
@@ -2207,9 +2334,9 @@ exit 0
 %dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/save/
 %{_libdir}/libvirt/connection-driver/libvirt_driver_libxl.so
 %{_mandir}/man8/virtxend.8*
-%endif
+    %endif
 
-%if %{with_vbox}
+    %if %{with_vbox}
 %files daemon-driver-vbox
 %config(noreplace) %{_sysconfdir}/libvirt/virtvboxd.conf
 %{_datadir}/augeas/lenses/virtvboxd.aug
@@ -2221,36 +2348,36 @@ exit 0
 %attr(0755, root, root) %{_sbindir}/virtvboxd
 %{_libdir}/libvirt/connection-driver/libvirt_driver_vbox.so
 %{_mandir}/man8/virtvboxd.8*
-%endif
+    %endif
 
-%if %{with_qemu_tcg}
+    %if %{with_qemu_tcg}
 %files daemon-qemu
-%endif
+    %endif
 
-%if %{with_qemu_kvm}
+    %if %{with_qemu_kvm}
 %files daemon-kvm
-%endif
+    %endif
 
-%if %{with_lxc}
+    %if %{with_lxc}
 %files daemon-lxc
-%endif
+    %endif
 
-%if %{with_libxl}
+    %if %{with_libxl}
 %files daemon-xen
-%endif
+    %endif
 
-%if %{with_vbox}
+    %if %{with_vbox}
 %files daemon-vbox
-%endif
+    %endif
 
-%if %{with_sanlock}
+    %if %{with_sanlock}
 %files daemon-plugin-sanlock
-    %if %{with_qemu}
+        %if %{with_qemu}
 %config(noreplace) %{_sysconfdir}/libvirt/qemu-sanlock.conf
-    %endif
-    %if %{with_libxl}
+        %endif
+        %if %{with_libxl}
 %config(noreplace) %{_sysconfdir}/libvirt/libxl-sanlock.conf
-    %endif
+        %endif
 %dir %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/
 %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/sanlock.so
 %{_datadir}/augeas/lenses/libvirt_sanlock.aug
@@ -2259,7 +2386,7 @@ exit 0
 %{_sbindir}/virt-sanlock-cleanup
 %{_mandir}/man8/virt-sanlock-cleanup.8*
 %attr(0755, root, root) %{_libexecdir}/libvirt_sanlock_helper
-%endif
+    %endif
 
 %files client
 %{_mandir}/man1/virsh.1*
@@ -2273,13 +2400,13 @@ exit 0
 %{_bindir}/virt-pki-validate
 %{_datadir}/bash-completion/completions/virsh
 
-%if %{with_qemu}
+    %if %{with_qemu}
 %files client-qemu
 %{_mandir}/man1/virt-qemu-qmp-proxy.1*
 %{_mandir}/man1/virt-qemu-sev-validate.1*
 %{_bindir}/virt-qemu-qmp-proxy
 %{_bindir}/virt-qemu-sev-validate
-%endif
+    %endif
 
 %files libs -f %{name}.lang
 %license COPYING COPYING.LESSER
@@ -2294,29 +2421,29 @@ exit 0
 %dir %{_datadir}/libvirt/schemas/
 %{_datadir}/systemtap/tapset/libvirt_probes*.stp
 %{_datadir}/systemtap/tapset/libvirt_functions.stp
-%if %{with_qemu}
+    %if %{with_qemu}
 %{_datadir}/systemtap/tapset/libvirt_qemu_probes*.stp
-%endif
+    %endif
 %{_datadir}/libvirt/schemas/*.rng
 %{_datadir}/libvirt/cpu_map/*.xml
 %{_datadir}/libvirt/test-screenshot.png
 
-%if %{with_wireshark}
+    %if %{with_wireshark}
 %files wireshark
 %{wireshark_plugindir}/libvirt.so
-%endif
+    %endif
 
 %files nss
 %{_libdir}/libnss_libvirt.so.2
 %{_libdir}/libnss_libvirt_guest.so.2
 
-%if %{with_lxc}
+    %if %{with_lxc}
 %files login-shell
 %attr(4750, root, virtlogin) %{_bindir}/virt-login-shell
 %{_libexecdir}/virt-login-shell-helper
 %config(noreplace) %{_sysconfdir}/libvirt/virt-login-shell.conf
 %{_mandir}/man1/virt-login-shell.1*
-%endif
+    %endif
 
 %files devel
 %{_libdir}/libvirt.so
@@ -2351,8 +2478,9 @@ exit 0
 %{_datadir}/libvirt/api/libvirt-admin-api.xml
 %{_datadir}/libvirt/api/libvirt-qemu-api.xml
 %{_datadir}/libvirt/api/libvirt-lxc-api.xml
+%endif
 
-%if %{with_mingw}
+%if %{with_mingw32}
 %files -n mingw32-libvirt -f mingw32-libvirt.lang
 %dir %{mingw32_sysconfdir}/libvirt/
 %config(noreplace) %{mingw32_sysconfdir}/libvirt/libvirt.conf
@@ -2409,7 +2537,9 @@ exit 0
 %{mingw32_mandir}/man1/virt-pki-query-dn.1*
 %{mingw32_mandir}/man1/virt-pki-validate.1*
 %{mingw32_mandir}/man7/virkey*.7*
+%endif
 
+%if %{with_mingw64}
 %files -n mingw64-libvirt -f mingw64-libvirt.lang
 %dir %{mingw64_sysconfdir}/libvirt/
 %config(noreplace) %{mingw64_sysconfdir}/libvirt/libvirt.conf
@@ -2470,6 +2600,49 @@ exit 0
 
 
 %changelog
+* Wed Mar 27 2024 Roberto Campesato <render@metalabs.org> - 10.1.0-1.1
+- Update to version 10.1.0
+- Relax dependency on qemu-kvm for facebook builds
+
+* Fri Mar 01 2024 Cole Robinson <crobinso@redhat.com> - 10.1.0-1
+- Update to version 10.1.0
+
+* Mon Feb 19 2024 Cole Robinson <crobinso@redhat.com> - 10.0.0-4
+- Rebuild for wireshark soname bump
+
+* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 10.0.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 10.0.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Tue Jan 16 2024 Cole Robinson <crobinso@redhat.com> - 10.0.0-1
+- Update to version 10.0.0
+
+* Wed Jan 03 2024 Jonathan Wright <jonathan@almalinux.org> - 9.10.0-4
+- conf: fix regression for default input bus
+
+* Fri Dec  8 2023 Richard W.M. Jones <rjones@redhat.com> - 9.10.0-3
+- Bump and rebuild for xen 4.18.0, third attempt
+
+* Tue Dec 05 2023 Adam Williamson <awilliam@redhat.com> - 9.10.0-2
+- Rebuild for xen 4.18.0 again
+
+* Sat Dec 02 2023 Cole Robinson <crobinso@redhat.com> - 9.10.0-1
+- Update to version 9.10.0
+
+* Thu Nov 30 2023 Richard W.M. Jones <rjones@redhat.com> - 9.9.0-3
+- Bump and rebuild for xen 4.18.0
+
+* Mon Nov 06 2023 Cole Robinson <crobinso@redhat.com> - 9.9.0-2
+- Fix crash with snapshot restore (bz #2247754)
+
+* Wed Nov 01 2023 Cole Robinson <crobinso@redhat.com> - 9.9.0-1
+- Update to version 9.9.0
+
+* Thu Oct 05 2023 Cole Robinson <crobinso@redhat.com> - 9.8.0-1
+- Update to version 9.8.0
+
 * Fri Sep  1 2023 Daniel P. Berrangé <berrange@redhat.com> - 9.7.0-1
 - Update to version 9.7.0
 
diff --git a/sources b/sources
index 502c1a1..fa67790 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libvirt-9.7.0.tar.xz) = dd771822c0fa0861a32cab9d7f82235b101867fa0a4e8cf9a857ddfb2347e41b625b1e6f8791c4b3543fec836a1a23cae1fac4ce4b40debd51f2097bae46c949
+SHA512 (libvirt-10.1.0.tar.xz) = 08e73ae15de5681430b62db85ec9901242dca5e9a4ca9685614f4a67092c6e28f27f9187144b3ceb18ad6b40e6eb1a90b1a4b056b0888724d04a62002ee2bc48