From 52aad0ee1497bf5809280881935ec0a918925e27 Mon Sep 17 00:00:00 2001 From: Nicolas MASSE Date: Sun, 14 Jun 2026 18:00:39 +0200 Subject: [PATCH] remove EOL versions of Fedora --- fedora-41/PATCHES/20-enable-zfs.patch | 26 - ...ble-Properly-calculate-rtattr-length.patch | 29 - ...rptable-Fix-check-for-message-length.patch | 34 - ...parsing-earlier-in-case-of-NLMSG_DON.patch | 46 - ...e-flags-arg-for-virNetDevBandwidthSe.patch | 315 -- ...ional-to-clear-existing-tc-qdiscs-fi.patch | 185 - ...mand-that-adds-a-tx-filter-qdisc-int.patch | 98 - ...d-the-qdisc-used-for-tx-filters-if-i.patch | 107 - ...-tc-layer-for-virFirewallCmd-objects.patch | 171 - ...ilter-rule-to-nftables-backend-to-fi.patch | 687 ---- ...orward-mode-open-when-a-network-has-.patch | 51 - ...lete-disk-image-only-if-parent-snaps.patch | 64 - fedora-41/SOURCES/libvirt-10.6.0.tar.xz | 3 - fedora-41/SOURCES/zfs-2.3.4.tar.gz | 3 - fedora-41/SOURCES/zfs-2.3.5.tar.gz | 3 - fedora-41/SOURCES/zfs-2.4.0.tar.gz | 3 - fedora-41/SPECS/libvirt.spec | 2888 ---------------- fedora-41/SPECS/zfs-dkms.spec | 168 - fedora-41/SPECS/zfs.spec | 606 ---- fedora-42/PATCHES/20-enable-zfs.patch | 26 - ...king-of-virQEMUCapsProbeHVF-function.patch | 31 - ...iles-and-avoid-use-of-uninitialized-.patch | 85 - ...giving-when-acquiring-QUERY-job-when.patch | 68 - ...rdcoding-paths-for-mkfs-mount-umount.patch | 94 - ...il-avoid-overflow-in-hextable-buffer.patch | 43 - ...0001-util-stop-hardcoding-numad-path.patch | 58 - ...eedless-declaration-of-proto_registe.patch | 36 - ...k-Switch-header-files-to-pragma-once.patch | 47 - ...e-WIRESHARK_VERSION-macro-definition.patch | 81 - ...t-type-of-some-virNetMessageHeader-m.patch | 133 - ...special-case-retval-of-get_program_d.patch | 46 - ...ark-Introduce-and-use-vir_val_to_str.patch | 68 - ...-wireshark-Don-t-leak-column-strings.patch | 165 - ...8-wireshark-Adapt-to-wireshark-4.6.0.patch | 493 --- fedora-42/SOURCES/libvirt-11.0.0.tar.xz | 3 - fedora-42/SOURCES/zfs-2.3.4.tar.gz | 3 - fedora-42/SOURCES/zfs-2.3.5.tar.gz | 3 - fedora-42/SOURCES/zfs-2.4.0.tar.gz | 3 - fedora-42/SOURCES/zfs-2.4.1.tar.gz | 3 - fedora-42/SOURCES/zfs-2.4.2.tar.gz | 3 - fedora-42/SPECS/libvirt.spec | 2974 ----------------- fedora-42/SPECS/zfs-dkms.spec | 168 - fedora-42/SPECS/zfs.spec | 606 ---- 43 files changed, 10727 deletions(-) delete mode 100644 fedora-41/PATCHES/20-enable-zfs.patch delete mode 100644 fedora-41/SOURCES/0001-virarptable-Properly-calculate-rtattr-length.patch delete mode 100644 fedora-41/SOURCES/0002-virarptable-Fix-check-for-message-length.patch delete mode 100644 fedora-41/SOURCES/0003-virarptable-End-parsing-earlier-in-case-of-NLMSG_DON.patch delete mode 100644 fedora-41/SOURCES/0004-util-use-a-single-flags-arg-for-virNetDevBandwidthSe.patch delete mode 100644 fedora-41/SOURCES/0005-util-make-it-optional-to-clear-existing-tc-qdiscs-fi.patch delete mode 100644 fedora-41/SOURCES/0006-util-put-the-command-that-adds-a-tx-filter-qdisc-int.patch delete mode 100644 fedora-41/SOURCES/0007-util-don-t-re-add-the-qdisc-used-for-tx-filters-if-i.patch delete mode 100644 fedora-41/SOURCES/0008-util-add-new-tc-layer-for-virFirewallCmd-objects.patch delete mode 100644 fedora-41/SOURCES/0009-network-add-tc-filter-rule-to-nftables-backend-to-fi.patch delete mode 100644 fedora-41/SOURCES/0010-network-permit-forward-mode-open-when-a-network-has-.patch delete mode 100644 fedora-41/SOURCES/0011-qemu-snapshot-delete-disk-image-only-if-parent-snaps.patch delete mode 100644 fedora-41/SOURCES/libvirt-10.6.0.tar.xz delete mode 100644 fedora-41/SOURCES/zfs-2.3.4.tar.gz delete mode 100644 fedora-41/SOURCES/zfs-2.3.5.tar.gz delete mode 100644 fedora-41/SOURCES/zfs-2.4.0.tar.gz delete mode 100644 fedora-41/SPECS/libvirt.spec delete mode 100644 fedora-41/SPECS/zfs-dkms.spec delete mode 100644 fedora-41/SPECS/zfs.spec delete mode 100644 fedora-42/PATCHES/20-enable-zfs.patch delete mode 100644 fedora-42/SOURCES/0001-Fix-mocking-of-virQEMUCapsProbeHVF-function.patch delete mode 100644 fedora-42/SOURCES/0001-nss-Skip-empty-files-and-avoid-use-of-uninitialized-.patch delete mode 100644 fedora-42/SOURCES/0001-qemu-Be-more-forgiving-when-acquiring-QUERY-job-when.patch delete mode 100644 fedora-42/SOURCES/0001-storage-stop-hardcoding-paths-for-mkfs-mount-umount.patch delete mode 100644 fedora-42/SOURCES/0001-util-avoid-overflow-in-hextable-buffer.patch delete mode 100644 fedora-42/SOURCES/0001-util-stop-hardcoding-numad-path.patch delete mode 100644 fedora-42/SOURCES/0001-wireshark-Drop-needless-declaration-of-proto_registe.patch delete mode 100644 fedora-42/SOURCES/0002-wireshark-Switch-header-files-to-pragma-once.patch delete mode 100644 fedora-42/SOURCES/0003-wireshark-Move-WIRESHARK_VERSION-macro-definition.patch delete mode 100644 fedora-42/SOURCES/0004-wireshark-Fix-int-type-of-some-virNetMessageHeader-m.patch delete mode 100644 fedora-42/SOURCES/0005-wireshark-Don-t-special-case-retval-of-get_program_d.patch delete mode 100644 fedora-42/SOURCES/0006-wireshark-Introduce-and-use-vir_val_to_str.patch delete mode 100644 fedora-42/SOURCES/0007-wireshark-Don-t-leak-column-strings.patch delete mode 100644 fedora-42/SOURCES/0008-wireshark-Adapt-to-wireshark-4.6.0.patch delete mode 100644 fedora-42/SOURCES/libvirt-11.0.0.tar.xz delete mode 100644 fedora-42/SOURCES/zfs-2.3.4.tar.gz delete mode 100644 fedora-42/SOURCES/zfs-2.3.5.tar.gz delete mode 100644 fedora-42/SOURCES/zfs-2.4.0.tar.gz delete mode 100644 fedora-42/SOURCES/zfs-2.4.1.tar.gz delete mode 100644 fedora-42/SOURCES/zfs-2.4.2.tar.gz delete mode 100644 fedora-42/SPECS/libvirt.spec delete mode 100644 fedora-42/SPECS/zfs-dkms.spec delete mode 100644 fedora-42/SPECS/zfs.spec diff --git a/fedora-41/PATCHES/20-enable-zfs.patch b/fedora-41/PATCHES/20-enable-zfs.patch deleted file mode 100644 index 3d22494..0000000 --- a/fedora-41/PATCHES/20-enable-zfs.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/SPECS/libvirt.spec b/SPECS/libvirt.spec ---- a/SPECS/libvirt.spec -+++ b/SPECS/libvirt.spec -@@ -26,7 +26,7 @@ - %endif - %define arches_vbox %{arches_x86} - %define arches_ceph %{arches_64bit} --%define arches_zfs %{arches_x86} %{power64} %{arm} -+%define arches_zfs %{arches_x86} %{power64} %{arm} aarch64 - %define arches_numactl %{arches_x86} %{power64} aarch64 s390x - %define arches_numad %{arches_x86} %{power64} aarch64 - -@@ -75,12 +75,7 @@ - %endif - %endif - --# Fedora has zfs-fuse --%if 0%{?fedora} -- %define with_storage_zfs 0%{!?_without_storage_zfs:1} --%else -- %define with_storage_zfs 0 --%endif -+%define with_storage_zfs 1 - - %define with_storage_iscsi_direct 0%{!?_without_storage_iscsi_direct:1} - # libiscsi has been dropped in RHEL-9 diff --git a/fedora-41/SOURCES/0001-virarptable-Properly-calculate-rtattr-length.patch b/fedora-41/SOURCES/0001-virarptable-Properly-calculate-rtattr-length.patch deleted file mode 100644 index 1293b36..0000000 --- a/fedora-41/SOURCES/0001-virarptable-Properly-calculate-rtattr-length.patch +++ /dev/null @@ -1,29 +0,0 @@ -From: Martin Kletzander -Date: Fri, 16 Aug 2024 13:56:51 +0200 -Subject: [PATCH] virarptable: Properly calculate rtattr length -Content-type: text/plain - -Use convenience macro which does almost the same thing we were doing, -but also pads out the payload length to a multiple of NLMSG_ALIGNTO (4) -bytes. - -Signed-off-by: Martin Kletzander -Reviewed-by: Laine Stump ---- - src/util/virarptable.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/src/util/virarptable.c b/src/util/virarptable.c -index 299dddd664..d8e41c5a86 100644 ---- a/src/util/virarptable.c -+++ b/src/util/virarptable.c -@@ -102,8 +102,7 @@ virArpTableGet(void) - return table; - - VIR_WARNINGS_NO_CAST_ALIGN -- parse_rtattr(tb, NDA_MAX, NDA_RTA(r), -- nh->nlmsg_len - NLMSG_LENGTH(sizeof(*r))); -+ parse_rtattr(tb, NDA_MAX, NDA_RTA(r), NLMSG_PAYLOAD(nh, sizeof(*r))); - VIR_WARNINGS_RESET - - if (tb[NDA_DST] == NULL || tb[NDA_LLADDR] == NULL) diff --git a/fedora-41/SOURCES/0002-virarptable-Fix-check-for-message-length.patch b/fedora-41/SOURCES/0002-virarptable-Fix-check-for-message-length.patch deleted file mode 100644 index 8976ef5..0000000 --- a/fedora-41/SOURCES/0002-virarptable-Fix-check-for-message-length.patch +++ /dev/null @@ -1,34 +0,0 @@ -From: Martin Kletzander -Date: Fri, 16 Aug 2024 13:59:15 +0200 -Subject: [PATCH] virarptable: Fix check for message length -Content-type: text/plain - -The previous check was all wrong since it calculated the how long would -the netlink message be if the netlink header was the payload and then -subtracted that from the whole message length, a variable that was not -used later in the code. This check can fail if there are no additional -payloads, struct rtattr in particular, which we are parsing later, -however the RTA_OK macro would've caught that anyway. - -Signed-off-by: Martin Kletzander -Reviewed-by: Laine Stump ---- - src/util/virarptable.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/src/util/virarptable.c b/src/util/virarptable.c -index d8e41c5a86..45ee76766f 100644 ---- a/src/util/virarptable.c -+++ b/src/util/virarptable.c -@@ -81,10 +81,9 @@ virArpTableGet(void) - for (; NLMSG_OK(nh, msglen); nh = NLMSG_NEXT(nh, msglen)) { - VIR_WARNINGS_RESET - struct ndmsg *r = NLMSG_DATA(nh); -- int len = nh->nlmsg_len; - void *addr; - -- if ((len -= NLMSG_LENGTH(sizeof(*nh))) < 0) { -+ if (nh->nlmsg_len < NLMSG_SPACE(sizeof(*r))) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("wrong nlmsg len")); - goto cleanup; diff --git a/fedora-41/SOURCES/0003-virarptable-End-parsing-earlier-in-case-of-NLMSG_DON.patch b/fedora-41/SOURCES/0003-virarptable-End-parsing-earlier-in-case-of-NLMSG_DON.patch deleted file mode 100644 index bd43677..0000000 --- a/fedora-41/SOURCES/0003-virarptable-End-parsing-earlier-in-case-of-NLMSG_DON.patch +++ /dev/null @@ -1,46 +0,0 @@ -From: Martin Kletzander -Date: Fri, 16 Aug 2024 14:02:48 +0200 -Subject: [PATCH] virarptable: End parsing earlier in case of NLMSG_DONE -Content-type: text/plain - -Check for the last multipart message right as the first thing. The -presumption probably was that the last message might still contain a -payload we want to parse. However that cannot be true since that would -have to be a type RTM_NEWNEIGH. This was not caught because older -kernels were note sending NLMSG_DONE and probably relied on the fact -that the parsing just stops after all the messages are walked through, -which the NLMSG_OK macro successfully did. - -Resolves: https://issues.redhat.com/browse/RHEL-52449 -Resolves: https://bugzilla.redhat.com/2302245 -Fixes: a176d67cdfaf5b8237a7e3a80d8be0e6bdf2d8fd -Signed-off-by: Martin Kletzander -Reviewed-by: Laine Stump ---- - src/util/virarptable.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/util/virarptable.c b/src/util/virarptable.c -index 45ee76766f..20d11f97b0 100644 ---- a/src/util/virarptable.c -+++ b/src/util/virarptable.c -@@ -83,6 +83,9 @@ virArpTableGet(void) - struct ndmsg *r = NLMSG_DATA(nh); - void *addr; - -+ if (nh->nlmsg_type == NLMSG_DONE) -+ break; -+ - if (nh->nlmsg_len < NLMSG_SPACE(sizeof(*r))) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("wrong nlmsg len")); -@@ -97,9 +100,6 @@ virArpTableGet(void) - (!(r->ndm_state == NUD_STALE || r->ndm_state == NUD_REACHABLE))) - continue; - -- if (nh->nlmsg_type == NLMSG_DONE) -- return table; -- - VIR_WARNINGS_NO_CAST_ALIGN - parse_rtattr(tb, NDA_MAX, NDA_RTA(r), NLMSG_PAYLOAD(nh, sizeof(*r))); - VIR_WARNINGS_RESET diff --git a/fedora-41/SOURCES/0004-util-use-a-single-flags-arg-for-virNetDevBandwidthSe.patch b/fedora-41/SOURCES/0004-util-use-a-single-flags-arg-for-virNetDevBandwidthSe.patch deleted file mode 100644 index 608df53..0000000 --- a/fedora-41/SOURCES/0004-util-use-a-single-flags-arg-for-virNetDevBandwidthSe.patch +++ /dev/null @@ -1,315 +0,0 @@ -From 807e2670f2704c41f0a1dca81a5d2f2f9336137c Mon Sep 17 00:00:00 2001 -From: Laine Stump -Date: Mon, 25 Nov 2024 22:24:44 -0500 -Subject: [PATCH 4/9] util: use a single flags arg for virNetDevBandwidthSet(), - not multiple bools - -Having two bools in the arg list is on the borderline of being -confusing to anyone trying to read the code, but we're about to add a -3rd. This patch replaces the two bools with a single flags argument -which will instead have one or more bits from virNetDevBandwidthFlags -set. - -Signed-off-by: Laine Stump -Signed-off-by: Michal Privoznik -Reviewed-by: Michal Privoznik ---- - src/lxc/lxc_driver.c | 8 ++++++-- - src/lxc/lxc_process.c | 8 ++++++-- - src/network/bridge_driver.c | 10 ++++++++-- - src/qemu/qemu_command.c | 11 ++++++++--- - src/qemu/qemu_driver.c | 29 ++++++++++++++------------- - src/qemu/qemu_hotplug.c | 22 +++++++++++++++------ - src/util/virnetdevbandwidth.c | 36 ++++++++++++++++++++-------------- - src/util/virnetdevbandwidth.h | 9 +++++++-- - tests/virnetdevbandwidthtest.c | 8 +++++++- - 9 files changed, 94 insertions(+), 47 deletions(-) - -diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c -index 534e257f30..b693980dbb 100644 ---- a/src/lxc/lxc_driver.c -+++ b/src/lxc/lxc_driver.c -@@ -3570,8 +3570,12 @@ lxcDomainAttachDeviceNetLive(virLXCDriver *driver, - actualBandwidth = virDomainNetGetActualBandwidth(net); - if (actualBandwidth) { - if (virNetDevSupportsBandwidth(actualType)) { -- if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false, -- !virDomainNetTypeSharesHostView(net)) < 0) -+ unsigned int flags = 0; -+ -+ if (!virDomainNetTypeSharesHostView(net)) -+ flags |= VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -+ -+ if (virNetDevBandwidthSet(net->ifname, actualBandwidth, flags) < 0) - goto cleanup; - } else { - VIR_WARN("setting bandwidth on interfaces of " -diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c -index f5eb5383ec..0e689fbb70 100644 ---- a/src/lxc/lxc_process.c -+++ b/src/lxc/lxc_process.c -@@ -605,8 +605,12 @@ virLXCProcessSetupInterfaces(virLXCDriver *driver, - actualBandwidth = virDomainNetGetActualBandwidth(net); - if (actualBandwidth) { - if (virNetDevSupportsBandwidth(type)) { -- if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false, -- !virDomainNetTypeSharesHostView(net)) < 0) -+ unsigned int flags = 0; -+ -+ if (!virDomainNetTypeSharesHostView(net)) -+ flags |= VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -+ -+ if (virNetDevBandwidthSet(net->ifname, actualBandwidth, flags) < 0) - goto cleanup; - } else { - VIR_WARN("setting bandwidth on interfaces of " -diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c -index 32572c755f..1c53636450 100644 ---- a/src/network/bridge_driver.c -+++ b/src/network/bridge_driver.c -@@ -2058,8 +2058,11 @@ networkStartNetworkVirtual(virNetworkDriverState *driver, - } - } - -- if (virNetDevBandwidthSet(def->bridge, def->bandwidth, true, true) < 0) -+ if (virNetDevBandwidthSet(def->bridge, def->bandwidth, -+ VIR_NETDEV_BANDWIDTH_SET_HIERARCHICAL_CLASS -+ | VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED) < 0) { - goto error; -+ } - - return 0; - -@@ -2141,8 +2144,11 @@ networkStartNetworkBridge(virNetworkObj *obj) - * type BRIDGE, is started. On failure, undo anything you've done, - * and return -1. On success return 0. - */ -- if (virNetDevBandwidthSet(def->bridge, def->bandwidth, true, true) < 0) -+ if (virNetDevBandwidthSet(def->bridge, def->bandwidth, -+ VIR_NETDEV_BANDWIDTH_SET_HIERARCHICAL_CLASS -+ | VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED) < 0) { - goto error; -+ } - - if (networkStartHandleMACTableManagerMode(obj) < 0) - goto error; -diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c -index f15e6bda1e..b4815e5e71 100644 ---- a/src/qemu/qemu_command.c -+++ b/src/qemu/qemu_command.c -@@ -8840,9 +8840,14 @@ qemuBuildInterfaceCommandLine(virQEMUDriver *driver, - def->uuid, - !virDomainNetTypeSharesHostView(net)) < 0) - goto cleanup; -- } else if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false, -- !virDomainNetTypeSharesHostView(net)) < 0) { -- goto cleanup; -+ } else { -+ unsigned int flags = 0; -+ -+ if (!virDomainNetTypeSharesHostView(net)) -+ flags |= VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -+ -+ if (virNetDevBandwidthSet(net->ifname, actualBandwidth, flags) < 0) -+ goto cleanup; - } - } else { - VIR_WARN("setting bandwidth on interfaces of " -diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c -index 736602333e..14929616e5 100644 ---- a/src/qemu/qemu_driver.c -+++ b/src/qemu/qemu_driver.c -@@ -9941,21 +9941,22 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, - virErrorRestore(&orig_err); - goto endjob; - } -- } else if (virNetDevBandwidthSet(net->ifname, newBandwidth, false, -- !virDomainNetTypeSharesHostView(net)) < 0) { -- virErrorPtr orig_err; -- -- virErrorPreserveLast(&orig_err); -- ignore_value(virNetDevBandwidthSet(net->ifname, -- net->bandwidth, -- false, -- !virDomainNetTypeSharesHostView(net))); -- if (net->bandwidth) { -- ignore_value(virDomainNetBandwidthUpdate(net, -- net->bandwidth)); -+ } else { -+ unsigned int bwflags = 0; -+ -+ if (!virDomainNetTypeSharesHostView(net)) -+ bwflags |= VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -+ -+ if (virNetDevBandwidthSet(net->ifname, newBandwidth, bwflags) < 0) { -+ virErrorPtr orig_err; -+ -+ virErrorPreserveLast(&orig_err); -+ ignore_value(virNetDevBandwidthSet(net->ifname, net->bandwidth, bwflags)); -+ if (net->bandwidth) -+ ignore_value(virDomainNetBandwidthUpdate(net, net->bandwidth)); -+ virErrorRestore(&orig_err); -+ goto endjob; - } -- virErrorRestore(&orig_err); -- goto endjob; - } - - /* If the old bandwidth was cleared out, restore qdisc. */ -diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c -index 7cb1800504..d5e7e99359 100644 ---- a/src/qemu/qemu_hotplug.c -+++ b/src/qemu/qemu_hotplug.c -@@ -1279,9 +1279,14 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver, - vm->def->uuid, - !virDomainNetTypeSharesHostView(net)) < 0) - goto cleanup; -- } else if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false, -- !virDomainNetTypeSharesHostView(net)) < 0) { -- goto cleanup; -+ } else { -+ int flags = 0; -+ -+ if (!virDomainNetTypeSharesHostView(net)) -+ flags |= VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -+ -+ if (virNetDevBandwidthSet(net->ifname, actualBandwidth, flags) < 0) -+ goto cleanup; - } - } else { - VIR_WARN("setting bandwidth on interfaces of " -@@ -4082,9 +4087,14 @@ qemuDomainChangeNet(virQEMUDriver *driver, - vm->def->uuid, - !virDomainNetTypeSharesHostView(newdev)) < 0) - goto cleanup; -- } else if (virNetDevBandwidthSet(newdev->ifname, newb, false, -- !virDomainNetTypeSharesHostView(newdev)) < 0) { -- goto cleanup; -+ } else { -+ int flags = 0; -+ -+ if (!virDomainNetTypeSharesHostView(newdev)) -+ flags |= VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -+ -+ if (virNetDevBandwidthSet(newdev->ifname, newb, flags) < 0) -+ goto cleanup; - } - } else { - if (virDomainInterfaceClearQoS(vm->def, olddev) < 0) -diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c -index 2b58c58d3e..1baad849c6 100644 ---- a/src/util/virnetdevbandwidth.c -+++ b/src/util/virnetdevbandwidth.c -@@ -173,30 +173,35 @@ virNetDevBandwidthManipulateFilter(const char *ifname, - * virNetDevBandwidthSet: - * @ifname: on which interface - * @bandwidth: rates to set (may be NULL) -- * @hierarchical_class: whether to create hierarchical class -- * @swapped: true if IN/OUT should be set contrariwise -+ * @flags: bits indicating certain optional actions - * -+ - * This function enables QoS on specified interface - * and set given traffic limits for both, incoming -- * and outgoing traffic. Any previous setting get -- * overwritten. If @hierarchical_class is TRUE, create -- * hierarchical class. It is used to guarantee minimal -- * throughput ('floor' attribute in NIC). -+ * and outgoing traffic. -+ * -+ * @flags bits and their meanings: -+ * -+ * VIR_NETDEV_BANDWIDTH_SET_HIERARCHICAL_CLASS -+ * whether to create a hierarchical class -+ * A hiearchical class structure is used to implement a minimal -+ * throughput guarantee ('floor' attribute in NIC). - * -- * If @swapped is set, the IN part of @bandwidth is set on -- * @ifname's TX, and vice versa. If it is not set, IN is set on -- * RX and OUT on TX. This is because for some types of interfaces -- * domain and the host live on the same side of the interface (so -- * domain's RX/TX is host's RX/TX), and for some it's swapped -- * (domain's RX/TX is hosts's TX/RX). -+ * VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED -+ * set if IN/OUT should be set backwards from what's indicated in -+ * the bandwidth, i.e. the IN part of @bandwidth is set on -+ * @ifname's TX, and the OUT part of @bandwidth is set on -+ * @ifname's RX. This is needed because for some types of -+ * interfaces the domain and the host live on the same side of the -+ * interface (so domain's RX/TX is host's RX/TX), and for some -+ * it's swapped (domain's RX/TX is hosts's TX/RX). - * - * Return 0 on success, -1 otherwise. - */ - int - virNetDevBandwidthSet(const char *ifname, - const virNetDevBandwidth *bandwidth, -- bool hierarchical_class, -- bool swapped) -+ unsigned int flags) - { - int ret = -1; - virNetDevBandwidthRate *rx = NULL; /* From domain POV */ -@@ -205,6 +210,7 @@ virNetDevBandwidthSet(const char *ifname, - char *average = NULL; - char *peak = NULL; - char *burst = NULL; -+ bool hierarchical_class = flags & VIR_NETDEV_BANDWIDTH_SET_HIERARCHICAL_CLASS; - - if (!bandwidth) { - /* nothing to be enabled */ -@@ -224,7 +230,7 @@ virNetDevBandwidthSet(const char *ifname, - return -1; - } - -- if (swapped) { -+ if (flags & VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED) { - rx = bandwidth->out; - tx = bandwidth->in; - } else { -diff --git a/src/util/virnetdevbandwidth.h b/src/util/virnetdevbandwidth.h -index 6d268fb119..80dc654486 100644 ---- a/src/util/virnetdevbandwidth.h -+++ b/src/util/virnetdevbandwidth.h -@@ -39,11 +39,16 @@ void virNetDevBandwidthFree(virNetDevBandwidth *def); - - G_DEFINE_AUTOPTR_CLEANUP_FUNC(virNetDevBandwidth, virNetDevBandwidthFree); - -+typedef enum { -+ VIR_NETDEV_BANDWIDTH_SET_HIERARCHICAL_CLASS = (1 << 0), -+ VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED = (1 << 1), -+} virNetDevBandwidthSetFlags; -+ - int virNetDevBandwidthSet(const char *ifname, - const virNetDevBandwidth *bandwidth, -- bool hierarchical_class, -- bool swapped) -+ unsigned int flags) - G_GNUC_WARN_UNUSED_RESULT; -+ - int virNetDevBandwidthClear(const char *ifname); - int virNetDevBandwidthCopy(virNetDevBandwidth **dest, - const virNetDevBandwidth *src) -diff --git a/tests/virnetdevbandwidthtest.c b/tests/virnetdevbandwidthtest.c -index f7c38faa2e..6529ff4026 100644 ---- a/tests/virnetdevbandwidthtest.c -+++ b/tests/virnetdevbandwidthtest.c -@@ -82,8 +82,14 @@ testVirNetDevBandwidthSet(const void *data) - if (virNetDevOpenvswitchInterfaceSetQos(iface, band, info->uuid, true) < 0) - return -1; - } else { -+ unsigned int flags = VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -+ -+ if (info->hierarchical_class) -+ flags |= VIR_NETDEV_BANDWIDTH_SET_HIERARCHICAL_CLASS; -+ - exp_cmd = info->exp_cmd_tc; -- if (virNetDevBandwidthSet(iface, band, info->hierarchical_class, true) < 0) -+ -+ if (virNetDevBandwidthSet(iface, band, flags) < 0) - return -1; - } - --- -2.47.1 - diff --git a/fedora-41/SOURCES/0005-util-make-it-optional-to-clear-existing-tc-qdiscs-fi.patch b/fedora-41/SOURCES/0005-util-make-it-optional-to-clear-existing-tc-qdiscs-fi.patch deleted file mode 100644 index 0768150..0000000 --- a/fedora-41/SOURCES/0005-util-make-it-optional-to-clear-existing-tc-qdiscs-fi.patch +++ /dev/null @@ -1,185 +0,0 @@ -From 490f58382dca2a415a5f16b6133f298d853bb379 Mon Sep 17 00:00:00 2001 -From: Laine Stump -Date: Mon, 25 Nov 2024 22:24:45 -0500 -Subject: [PATCH 5/9] util: make it optional to clear existing tc - qdiscs/filters in virNetDevBandwidthSet() - -virNetDevBandwidthSet() always clears all existing qdiscs and their -subordinate filters before adding all the new qdiscs/filters. This is -normally exactly what we want, but there is one case (the network -driver) where the Qdisc added by virNetDevBandwidthSet() may already -be in use by the nftables backend (which will add a rule to fix the -checksum of dhcp packets); in that case, we *don't* want -virNetDevBandwidthSet() to clear out the qdisc that was already added -for nftables, and none of the bandwidth filters have been added yet, -so there already aren't any "old" filters that need to be removed -either - it is safe to just skip virNetDevBandwidthClear() in this -case. - -To allow the network driver to set bandwidth without first clearing -it, this patch adds the flag VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL to the -virNetDevBandwidthSetFlags enum, and recognizes it in -virNetDevBandwidthSet() - if the flag is set, then -virNetDevBandwidth() will call virNetDevBandwidthClear() just as it -always has. But if the flag isn't set it *won't* call -virNetDevBandwidthClear(). - -As suggested above, VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL is set for all -calls to virNetdevBandwidthSet() except for two places in the network -driver. - -Signed-off-by: Laine Stump -Reviewed-by: Michal Privoznik ---- - src/lxc/lxc_driver.c | 2 +- - src/lxc/lxc_process.c | 2 +- - src/qemu/qemu_command.c | 2 +- - src/qemu/qemu_driver.c | 2 +- - src/qemu/qemu_hotplug.c | 4 ++-- - src/util/virnetdevbandwidth.c | 21 ++++++++++++++++++++- - src/util/virnetdevbandwidth.h | 1 + - tests/virnetdevbandwidthtest.c | 3 ++- - 8 files changed, 29 insertions(+), 8 deletions(-) - -diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c -index b693980dbb..81581c74df 100644 ---- a/src/lxc/lxc_driver.c -+++ b/src/lxc/lxc_driver.c -@@ -3570,7 +3570,7 @@ lxcDomainAttachDeviceNetLive(virLXCDriver *driver, - actualBandwidth = virDomainNetGetActualBandwidth(net); - if (actualBandwidth) { - if (virNetDevSupportsBandwidth(actualType)) { -- unsigned int flags = 0; -+ unsigned int flags = VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL; - - if (!virDomainNetTypeSharesHostView(net)) - flags |= VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c -index 0e689fbb70..081ce03a57 100644 ---- a/src/lxc/lxc_process.c -+++ b/src/lxc/lxc_process.c -@@ -605,7 +605,7 @@ virLXCProcessSetupInterfaces(virLXCDriver *driver, - actualBandwidth = virDomainNetGetActualBandwidth(net); - if (actualBandwidth) { - if (virNetDevSupportsBandwidth(type)) { -- unsigned int flags = 0; -+ unsigned int flags = VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL; - - if (!virDomainNetTypeSharesHostView(net)) - flags |= VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c -index b4815e5e71..ed54fd4c5b 100644 ---- a/src/qemu/qemu_command.c -+++ b/src/qemu/qemu_command.c -@@ -8841,7 +8841,7 @@ qemuBuildInterfaceCommandLine(virQEMUDriver *driver, - !virDomainNetTypeSharesHostView(net)) < 0) - goto cleanup; - } else { -- unsigned int flags = 0; -+ unsigned int flags = VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL; - - if (!virDomainNetTypeSharesHostView(net)) - flags |= VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c -index 14929616e5..9549065b1f 100644 ---- a/src/qemu/qemu_driver.c -+++ b/src/qemu/qemu_driver.c -@@ -9942,7 +9942,7 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, - goto endjob; - } - } else { -- unsigned int bwflags = 0; -+ unsigned int bwflags = VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL; - - if (!virDomainNetTypeSharesHostView(net)) - bwflags |= VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c -index d5e7e99359..ceda4119cd 100644 ---- a/src/qemu/qemu_hotplug.c -+++ b/src/qemu/qemu_hotplug.c -@@ -1280,7 +1280,7 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver, - !virDomainNetTypeSharesHostView(net)) < 0) - goto cleanup; - } else { -- int flags = 0; -+ int flags = VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL; - - if (!virDomainNetTypeSharesHostView(net)) - flags |= VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -@@ -4088,7 +4088,7 @@ qemuDomainChangeNet(virQEMUDriver *driver, - !virDomainNetTypeSharesHostView(newdev)) < 0) - goto cleanup; - } else { -- int flags = 0; -+ int flags = VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL; - - if (!virDomainNetTypeSharesHostView(newdev)) - flags |= VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c -index 1baad849c6..9c48844c5d 100644 ---- a/src/util/virnetdevbandwidth.c -+++ b/src/util/virnetdevbandwidth.c -@@ -196,6 +196,21 @@ virNetDevBandwidthManipulateFilter(const char *ifname, - * interface (so domain's RX/TX is host's RX/TX), and for some - * it's swapped (domain's RX/TX is hosts's TX/RX). - * -+ * VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL -+ * If VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL is set, then the root -+ * qdisc is deleted before adding any new qdisc/class/filter, -+ * which causes any pre-existing filters to also be deleted. If -+ * not set, then it's assumed that there are no existing rules (or -+ * that those already there need to be kept). The caller should -+ * set this flag for an existing interface that is having its -+ * bandwidth settings modified, but can leave it unset if the -+ * interface was newly created and this is the first time -+ * bandwidth has been set, but someone else might have already -+ * added the qdisc (e.g. this is the case when the network driver -+ * is setting bandwidth for a virtual network bridge device - the -+ * nftables backend may have already added qdisc handle 1:0 and a -+ * filter, and we don't want to delete them) -+ * - * Return 0 on success, -1 otherwise. - */ - int -@@ -238,7 +253,11 @@ virNetDevBandwidthSet(const char *ifname, - tx = bandwidth->out; - } - -- virNetDevBandwidthClear(ifname); -+ /* Only if the caller requests, clear everything including root -+ * qdisc and all filters before adding everything. -+ */ -+ if (flags & VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL) -+ virNetDevBandwidthClear(ifname); - - if (tx && tx->average) { - average = g_strdup_printf("%llukbps", tx->average); -diff --git a/src/util/virnetdevbandwidth.h b/src/util/virnetdevbandwidth.h -index 80dc654486..744aa4c826 100644 ---- a/src/util/virnetdevbandwidth.h -+++ b/src/util/virnetdevbandwidth.h -@@ -42,6 +42,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(virNetDevBandwidth, virNetDevBandwidthFree); - typedef enum { - VIR_NETDEV_BANDWIDTH_SET_HIERARCHICAL_CLASS = (1 << 0), - VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED = (1 << 1), -+ VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL = (1 << 2), - } virNetDevBandwidthSetFlags; - - int virNetDevBandwidthSet(const char *ifname, -diff --git a/tests/virnetdevbandwidthtest.c b/tests/virnetdevbandwidthtest.c -index 6529ff4026..6d5c847ad7 100644 ---- a/tests/virnetdevbandwidthtest.c -+++ b/tests/virnetdevbandwidthtest.c -@@ -82,7 +82,8 @@ testVirNetDevBandwidthSet(const void *data) - if (virNetDevOpenvswitchInterfaceSetQos(iface, band, info->uuid, true) < 0) - return -1; - } else { -- unsigned int flags = VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED; -+ unsigned int flags = VIR_NETDEV_BANDWIDTH_SET_DIR_SWAPPED | -+ VIR_NETDEV_BANDWIDTH_SET_CLEAR_ALL; - - if (info->hierarchical_class) - flags |= VIR_NETDEV_BANDWIDTH_SET_HIERARCHICAL_CLASS; --- -2.47.1 - diff --git a/fedora-41/SOURCES/0006-util-put-the-command-that-adds-a-tx-filter-qdisc-int.patch b/fedora-41/SOURCES/0006-util-put-the-command-that-adds-a-tx-filter-qdisc-int.patch deleted file mode 100644 index 19e32fe..0000000 --- a/fedora-41/SOURCES/0006-util-put-the-command-that-adds-a-tx-filter-qdisc-int.patch +++ /dev/null @@ -1,98 +0,0 @@ -From faebbbbfa3b1bd4120852b3f416c8073ab82d5c5 Mon Sep 17 00:00:00 2001 -From: Laine Stump -Date: Mon, 25 Nov 2024 22:24:46 -0500 -Subject: [PATCH 6/9] util: put the command that adds a tx filter qdisc into a - separate function - -virNetDevBandwidthSet() adds a queue discipline (qdisc) for each -interface that it will need to add tc transmit filters to, and the -filters are then attached to the qdisc. - -There are other circumstances where some other function will need to -add tc transmit filters to an interface (in particular an upcoming -patch to the network driver nftables backend that will use a tc tx -filter to fix the checksum of dhcp packets), so that function will -also need a qdisc for the tx filter. To assure both always use exactly -the same qdisc, this patch puts the command that adds the tx filter -qdisc into a separate helper function that can (and will) be called -from either place - -Signed-off-by: Laine Stump -Reviewed-by: Michal Privoznik ---- - src/libvirt_private.syms | 1 + - src/util/virnetdevbandwidth.c | 30 +++++++++++++++++++++++++----- - src/util/virnetdevbandwidth.h | 3 +++ - 3 files changed, 29 insertions(+), 5 deletions(-) - -diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms -index d15d6a6a9d..0211cee967 100644 ---- a/src/libvirt_private.syms -+++ b/src/libvirt_private.syms -@@ -2859,6 +2859,7 @@ virNetDevVFInterfaceStats; - - - # util/virnetdevbandwidth.h -+virNetDevBandWidthAddTxFilterParentQdisc; - virNetDevBandwidthClear; - virNetDevBandwidthCopy; - virNetDevBandwidthEqual; -diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c -index 9c48844c5d..90eebe6576 100644 ---- a/src/util/virnetdevbandwidth.c -+++ b/src/util/virnetdevbandwidth.c -@@ -266,11 +266,7 @@ virNetDevBandwidthSet(const char *ifname, - if (tx->burst) - burst = g_strdup_printf("%llukb", tx->burst); - -- cmd = virCommandNew(TC); -- virCommandAddArgList(cmd, "qdisc", "add", "dev", ifname, "root", -- "handle", "1:", "htb", "default", -- hierarchical_class ? "2" : "1", NULL); -- if (virCommandRun(cmd, NULL) < 0) -+ if (virNetDevBandWidthAddTxFilterParentQdisc(ifname, hierarchical_class) < 0) - goto cleanup; - - /* If we are creating a hierarchical class, all non guaranteed traffic -@@ -794,3 +790,27 @@ virNetDevBandwidthSetRootQDisc(const char *ifname, - - return 0; - } -+ -+/** -+ * virNetDevBandwidthAddTxFilterParentQdisc: -+ * @ifname: name of interface that needs a qdisc to attach tx filters to -+ * @hierarchical_class: true if hierarchical classes will be used on this interface -+ * -+ * Add a root Qdisc (Queueing Discipline) for attaching Tx filters to -+ * @ifname. -+ * -+ * returns 0 on success, -1 on failure -+ */ -+int -+virNetDevBandWidthAddTxFilterParentQdisc(const char *ifname, -+ bool hierarchical_class) -+{ -+ g_autoptr(virCommand) cmd = NULL; -+ -+ cmd = virCommandNew(TC); -+ virCommandAddArgList(cmd, "qdisc", "add", "dev", ifname, "root", -+ "handle", "1:", "htb", "default", -+ hierarchical_class ? "2" : "1", NULL); -+ -+ return virCommandRun(cmd, NULL); -+} -diff --git a/src/util/virnetdevbandwidth.h b/src/util/virnetdevbandwidth.h -index 744aa4c826..65c1500637 100644 ---- a/src/util/virnetdevbandwidth.h -+++ b/src/util/virnetdevbandwidth.h -@@ -84,3 +84,6 @@ int virNetDevBandwidthUpdateFilter(const char *ifname, - int virNetDevBandwidthSetRootQDisc(const char *ifname, - const char *qdisc) - G_NO_INLINE; -+ -+int virNetDevBandWidthAddTxFilterParentQdisc(const char *ifname, -+ bool hierarchical_class); --- -2.47.1 - diff --git a/fedora-41/SOURCES/0007-util-don-t-re-add-the-qdisc-used-for-tx-filters-if-i.patch b/fedora-41/SOURCES/0007-util-don-t-re-add-the-qdisc-used-for-tx-filters-if-i.patch deleted file mode 100644 index b968409..0000000 --- a/fedora-41/SOURCES/0007-util-don-t-re-add-the-qdisc-used-for-tx-filters-if-i.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 73c0fb19ce5b816ee81ede691252855c75391c9a Mon Sep 17 00:00:00 2001 -From: Laine Stump -Date: Mon, 25 Nov 2024 22:24:47 -0500 -Subject: [PATCH 7/9] util: don't re-add the qdisc used for tx filters if it - already exists - -There will soon be two separate users of tc on virtual networks, and -both will use the "qdisc root handle 1: htb" to add tx filters. One or the -other could get the first chance to add the qdisc, and then if at a -later time the other decides to use it, we need to prevent the 2nd -user from attempting to re-add the qdisc (because that just generates -an error). - -We do this by running "tc qdisc show dev $bridge handle 1:" then -checking if the output of that command contains both "qdisc" and " 1: -".[*] If it does then the qdisc has already been added. If not then we -need to add it now. - -[*]As of this writing, the output more exactly starts with "qdisc -htb 1: root", but our comparison is made purposefully generous to -increase the chances that it will continue to work properly if tc -modifies the format of its output. - -Signed-off-by: Laine Stump -Reviewed-by: Michal Privoznik ---- - src/util/virnetdevbandwidth.c | 35 ++++++++++++++++++++++++++++------ - tests/virnetdevbandwidthtest.c | 3 +++ - 2 files changed, 32 insertions(+), 6 deletions(-) - -diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c -index 90eebe6576..5c6a65528c 100644 ---- a/src/util/virnetdevbandwidth.c -+++ b/src/util/virnetdevbandwidth.c -@@ -805,12 +805,35 @@ int - virNetDevBandWidthAddTxFilterParentQdisc(const char *ifname, - bool hierarchical_class) - { -- g_autoptr(virCommand) cmd = NULL; -+ g_autoptr(virCommand) testCmd = NULL; -+ g_autofree char *testResult = NULL; - -- cmd = virCommandNew(TC); -- virCommandAddArgList(cmd, "qdisc", "add", "dev", ifname, "root", -- "handle", "1:", "htb", "default", -- hierarchical_class ? "2" : "1", NULL); -+ /* first check it the qdisc with handle 1: was already added for -+ * this interface by someone else -+ */ -+ testCmd = virCommandNew(TC); -+ virCommandAddArgList(testCmd, "qdisc", "show", "dev", ifname, -+ "handle", "1:", NULL); -+ virCommandSetOutputBuffer(testCmd, &testResult); - -- return virCommandRun(cmd, NULL); -+ if (virCommandRun(testCmd, NULL) < 0) -+ return -1; -+ -+ /* output will be something like: "qdisc htb 1: root refcnt ..." -+ * if the qdisc was already added. We just search for "qdisc" and -+ * " 1: " anywhere in the output to allow for tc changing its -+ * output format. -+ */ -+ if (!(testResult && strstr(testResult, "qdisc") && strstr(testResult, " 1: "))) { -+ /* didn't find qdisc in output, so we need to add one */ -+ g_autoptr(virCommand) addCmd = virCommandNew(TC); -+ -+ virCommandAddArgList(addCmd, "qdisc", "add", "dev", ifname, "root", -+ "handle", "1:", "htb", "default", -+ hierarchical_class ? "2" : "1", NULL); -+ -+ return virCommandRun(addCmd, NULL); -+ } -+ -+ return 0; - } -diff --git a/tests/virnetdevbandwidthtest.c b/tests/virnetdevbandwidthtest.c -index 6d5c847ad7..31aa7f469d 100644 ---- a/tests/virnetdevbandwidthtest.c -+++ b/tests/virnetdevbandwidthtest.c -@@ -147,6 +147,7 @@ mymain(void) - "", - TC " qdisc del dev eth0 root\n" - TC " qdisc del dev eth0 ingress\n" -+ TC " qdisc show dev eth0 handle 1:\n" - TC " qdisc add dev eth0 root handle 1: htb default 1\n" - TC " class add dev eth0 parent 1: classid 1:1 htb rate 1024kbps quantum 87\n" - TC " qdisc add dev eth0 parent 1:1 handle 2: sfq perturb 10\n" -@@ -177,6 +178,7 @@ mymain(void) - "", - TC " qdisc del dev eth0 root\n" - TC " qdisc del dev eth0 ingress\n" -+ TC " qdisc show dev eth0 handle 1:\n" - TC " qdisc add dev eth0 root handle 1: htb default 1\n" - TC " class add dev eth0 parent 1: classid 1:1 htb rate 1kbps ceil 2kbps burst 4kb quantum 1\n" - TC " qdisc add dev eth0 parent 1:1 handle 2: sfq perturb 10\n" -@@ -199,6 +201,7 @@ mymain(void) - "", - TC " qdisc del dev eth0 root\n" - TC " qdisc del dev eth0 ingress\n" -+ TC " qdisc show dev eth0 handle 1:\n" - TC " qdisc add dev eth0 root handle 1: htb default 1\n" - TC " class add dev eth0 parent 1: classid 1:1 htb rate 4294967295kbps quantum 366503875\n" - TC " qdisc add dev eth0 parent 1:1 handle 2: sfq perturb 10\n" --- -2.47.1 - diff --git a/fedora-41/SOURCES/0008-util-add-new-tc-layer-for-virFirewallCmd-objects.patch b/fedora-41/SOURCES/0008-util-add-new-tc-layer-for-virFirewallCmd-objects.patch deleted file mode 100644 index aa2ceaf..0000000 --- a/fedora-41/SOURCES/0008-util-add-new-tc-layer-for-virFirewallCmd-objects.patch +++ /dev/null @@ -1,171 +0,0 @@ -From dac9cb9030ac03d18f59884864a0a253e3c9f8f1 Mon Sep 17 00:00:00 2001 -From: Laine Stump -Date: Mon, 25 Nov 2024 22:24:48 -0500 -Subject: [PATCH 8/9] util: add new "tc" layer for virFirewallCmd objects - -If the layer of a virFirewallCmd is "tc", then the "tc" utility will -be executed using the arguments that had been added to the -virFirewallCmd - -tc layer doesn't support auto-rollback command creation (any rollback -needs to be added manually with virFirewallAddRollbackCmd()), and also -tc layer isn't supported by the iptables backend (it would have been -straightforward to add, but the iptables backend doesn't need it, and -I didn't want to take the chance of causing a regression in that -code for no good reason). - -Signed-off-by: Laine Stump -Signed-off-by: Michal Privoznik -Reviewed-by: Michal Privoznik ---- - src/network/network_nftables.c | 1 + - src/util/virfirewall.c | 66 +++++++++++++++++++++------------- - src/util/virfirewall.h | 1 + - src/util/virfirewalld.c | 1 + - 4 files changed, 44 insertions(+), 25 deletions(-) - -diff --git a/src/network/network_nftables.c b/src/network/network_nftables.c -index 268d1f12ca..cc184105c3 100644 ---- a/src/network/network_nftables.c -+++ b/src/network/network_nftables.c -@@ -73,6 +73,7 @@ VIR_ENUM_IMPL(nftablesLayer, - "", - "ip", - "ip6", -+ "", - ); - - -diff --git a/src/util/virfirewall.c b/src/util/virfirewall.c -index 811b787ecc..9389bcf541 100644 ---- a/src/util/virfirewall.c -+++ b/src/util/virfirewall.c -@@ -47,6 +47,7 @@ VIR_ENUM_IMPL(virFirewallLayer, - "ethernet", - "ipv4", - "ipv6", -+ "tc", - ); - - typedef struct _virFirewallGroup virFirewallGroup; -@@ -57,6 +58,7 @@ VIR_ENUM_IMPL(virFirewallLayerCommand, - EBTABLES, - IPTABLES, - IP6TABLES, -+ TC, - ); - - struct _virFirewallCmd { -@@ -591,6 +593,7 @@ virFirewallCmdIptablesApply(virFirewall *firewall, - case VIR_FIREWALL_LAYER_IPV6: - virCommandAddArg(cmd, "-w"); - break; -+ case VIR_FIREWALL_LAYER_TC: - case VIR_FIREWALL_LAYER_LAST: - break; - } -@@ -672,39 +675,52 @@ virFirewallCmdNftablesApply(virFirewall *firewall G_GNUC_UNUSED, - size_t i; - int status; - -- cmd = virCommandNew(NFT); -+ if (fwCmd->layer == VIR_FIREWALL_LAYER_TC) { - -- if ((virFirewallTransactionGetFlags(firewall) & VIR_FIREWALL_TRANSACTION_AUTO_ROLLBACK) && -- fwCmd->argsLen > 1) { -- /* skip any leading options to get to command verb */ -- for (i = 0; i < fwCmd->argsLen - 1; i++) { -- if (fwCmd->args[i][0] != '-') -- break; -- } -+ /* for VIR_FIREWALL_LAYER_TC, we run the 'tc' (traffic control) command with -+ * the supplied args. -+ */ -+ cmd = virCommandNew(TC); - -- if (i + 1 < fwCmd->argsLen && -- VIR_NFTABLES_ARG_IS_CREATE(fwCmd->args[i])) { -+ /* NB: RAW commands don't support auto-rollback command creation */ - -- cmdIdx = i; -- objectType = fwCmd->args[i + 1]; -+ } else { - -- /* we currently only handle auto-rollback for rules, -- * chains, and tables, and those all can be "rolled -- * back" by a delete command using the handle that is -- * returned when "-ae" is added to the add/insert -- * command. -- */ -- if (STREQ_NULLABLE(objectType, "rule") || -- STREQ_NULLABLE(objectType, "chain") || -- STREQ_NULLABLE(objectType, "table")) { -+ cmd = virCommandNew(NFT); - -- needRollback = true; -- /* this option to nft instructs it to add the -- * "handle" of the created object to stdout -+ if ((virFirewallTransactionGetFlags(firewall) & VIR_FIREWALL_TRANSACTION_AUTO_ROLLBACK) && -+ fwCmd->argsLen > 1) { -+ /* skip any leading options to get to command verb */ -+ for (i = 0; i < fwCmd->argsLen - 1; i++) { -+ if (fwCmd->args[i][0] != '-') -+ break; -+ } -+ -+ if (i + 1 < fwCmd->argsLen && -+ VIR_NFTABLES_ARG_IS_CREATE(fwCmd->args[i])) { -+ -+ cmdIdx = i; -+ objectType = fwCmd->args[i + 1]; -+ -+ /* we currently only handle auto-rollback for rules, -+ * chains, and tables, and those all can be "rolled -+ * back" by a delete command using the handle that is -+ * returned when "-ae" is added to the add/insert -+ * command. - */ -- virCommandAddArg(cmd, "-ae"); -+ if (STREQ_NULLABLE(objectType, "rule") || -+ STREQ_NULLABLE(objectType, "chain") || -+ STREQ_NULLABLE(objectType, "table")) { -+ -+ needRollback = true; -+ /* this option to nft instructs it to add the -+ * "handle" of the created object to stdout -+ */ -+ virCommandAddArg(cmd, "-ae"); -+ } - } - } -+ - } - - for (i = 0; i < fwCmd->argsLen; i++) -diff --git a/src/util/virfirewall.h b/src/util/virfirewall.h -index bce51259d2..d42e60884b 100644 ---- a/src/util/virfirewall.h -+++ b/src/util/virfirewall.h -@@ -39,6 +39,7 @@ typedef enum { - VIR_FIREWALL_LAYER_ETHERNET, - VIR_FIREWALL_LAYER_IPV4, - VIR_FIREWALL_LAYER_IPV6, -+ VIR_FIREWALL_LAYER_TC, - - VIR_FIREWALL_LAYER_LAST, - } virFirewallLayer; -diff --git a/src/util/virfirewalld.c b/src/util/virfirewalld.c -index 827e201dbb..124523c420 100644 ---- a/src/util/virfirewalld.c -+++ b/src/util/virfirewalld.c -@@ -43,6 +43,7 @@ VIR_LOG_INIT("util.firewalld"); - VIR_ENUM_DECL(virFirewallLayerFirewallD); - VIR_ENUM_IMPL(virFirewallLayerFirewallD, - VIR_FIREWALL_LAYER_LAST, -+ "", - "eb", - "ipv4", - "ipv6", --- -2.47.1 - diff --git a/fedora-41/SOURCES/0009-network-add-tc-filter-rule-to-nftables-backend-to-fi.patch b/fedora-41/SOURCES/0009-network-add-tc-filter-rule-to-nftables-backend-to-fi.patch deleted file mode 100644 index 603110d..0000000 --- a/fedora-41/SOURCES/0009-network-add-tc-filter-rule-to-nftables-backend-to-fi.patch +++ /dev/null @@ -1,687 +0,0 @@ -From b1e2318a0d609fcdff04fcf88953ea87cdd02b95 Mon Sep 17 00:00:00 2001 -From: Laine Stump -Date: Mon, 25 Nov 2024 22:24:49 -0500 -Subject: [PATCH 9/9] network: add tc filter rule to nftables backend to fix - checksum of DHCP responses - -Please see the commit log for commit v10.9.0-rc1-1-g42ab0148dd for the -history and explanation of the problem that this patch is fixing. - -A shorter explanation is that when a guest is connected to a libvirt -virtual network using a virtio-net adapter with in-kernel "vhost-net" -packet processing enabled, it will fail to acquire an IP address from -a DHCP seever running on the host. - -In commit v10.9.0-rc1-1-g42ab0148dd we tried fixing this by *zeroing -out* the checksums of these packets with an nftables rule (nftables -can't recompute the checksum, but it can set it to 0) . This -*appeared* to work initially, but it turned out that zeroing the -checksum ends up breaking dhcp packets on *non* virtio/vhost-net guest -interfaces. That attempt was reverted in commit v10.9.0-rc2. - -Fortunately, there is an existing way to recompute the checksum of a -packet as it leaves an interface - the "tc" (traffic control) utility -that libvirt already uses for bandwidth management. This patch uses a -tc filter rule to match dhcp response packets on the bridge and -recompute their checksum. - -The filter rule must be attached to a tc qdisc, which may also have a -filter attached for bandwidth management (in the element -of the network config). Not only must we add the qdisc only once -(which was already handled by the patch two prior to this one), but -also the filter rule for checksum fixing and the filter rule for -bandwidth management must be different priorities so they don't clash; -this is solved by adding the checksum-fix filter with "priority 2", -while the bandwidth management filter remains "priority 1" (both will -always be evaluated anyway, it's just a matter of which is evaluated -first). - -So far this method has worked with every different guest we could -throw at it, including several that failed with the previous method. - -Fixes: b89c4991daa0ee9371f10937fab3b03c5ffdabc6 -Reported-by: Rich Jones -Reported-by: Andrea Bolognani -Fix-Suggested-by: Eric Garver -Fix-Suggested-by: Phil Sutter -Signed-off-by: Laine Stump -Reviewed-by: Michal Privoznik ---- - src/network/network_nftables.c | 68 +++++++++++++++++++ - .../forward-dev-linux.nftables | 40 +++++++++++ - .../isolated-linux.nftables | 40 +++++++++++ - .../nat-default-linux.nftables | 40 +++++++++++ - .../nat-ipv6-linux.nftables | 40 +++++++++++ - .../nat-ipv6-masquerade-linux.nftables | 40 +++++++++++ - .../nat-many-ips-linux.nftables | 40 +++++++++++ - .../nat-no-dhcp-linux.nftables | 40 +++++++++++ - .../nat-port-range-ipv6-linux.nftables | 40 +++++++++++ - .../nat-port-range-linux.nftables | 40 +++++++++++ - .../nat-tftp-linux.nftables | 40 +++++++++++ - .../route-default-linux.nftables | 40 +++++++++++ - 12 files changed, 508 insertions(+) - -diff --git a/src/network/network_nftables.c b/src/network/network_nftables.c -index cc184105c3..748edb0273 100644 ---- a/src/network/network_nftables.c -+++ b/src/network/network_nftables.c -@@ -29,6 +29,7 @@ - - #include "internal.h" - #include "virfirewalld.h" -+#include "vircommand.h" - #include "virerror.h" - #include "virlog.h" - #include "virhash.h" -@@ -924,6 +925,67 @@ nftablesAddIPSpecificFirewallRules(virFirewall *fw, - } - - -+/** -+ * nftablesAddUdpChecksumFixWithTC: -+ * -+ * Add a tc filter rule to @ifname (the bridge device of this network) -+ * that will recompute the checksum of udp packets output from @iface with -+ * destination port @port. -+ * -+ * Normally the checksum should be filled by some part of the basic -+ * network stack, but there are cases (e.g. DHCP response packets sent -+ * from virtualization host to a QEMU guest when the guest NIC uses -+ * vhost-net packet processing) when the host (sender) thinks that -+ * packet checksums will be computed elsewhere (and so leaves a -+ * partially computed checksum in the packet header) while the guest -+ * (receiver) thinks that the checksum has already been fully -+ * computed; in the meantime none of the code in between has actually -+ * finished computing the checksum. -+ * -+ * An example of this is DHCP response packets from host to guest. If -+ * the checksum of each of these packets isn't properly computed, then -+ * many guests (e.g. FreeBSD) will drop them with reason BAD CHECKSUM; -+ * this tc filter rule will fix the ip and udp checksums, and the -+ * FreeBSD dhcp client will happily accept the packet. -+ * -+ * (NB: if you're wondering how the tc qdisc and filter are removed -+ * when the network is destroyed, the answer is that the kernel -+ * automatically (and properly) removes them for us, so we don't need -+ * to worry about keeping track/deleting as we do with nftables rules) -+ */ -+static int -+nftablesAddUdpChecksumFixWithTC(virFirewall *fw, -+ const char *iface, -+ int port) -+{ -+ g_autofree char *portstr = g_strdup_printf("%d", port); -+ -+ /* this will add the qdisc (that the filter below is attached to) -+ * unless it already exists -+ */ -+ if (virNetDevBandWidthAddTxFilterParentQdisc(iface, true) < 0) -+ return -1; -+ -+ /* add a filter to catch all udp packets with dst "port" and -+ * recompute their checksum -+ */ -+ virFirewallAddCmd(fw, VIR_FIREWALL_LAYER_TC, -+ "filter", "add", "dev", iface, -+ "prio", "2", "protocol", "ip", "parent", "1:", -+ "u32", "match", "ip", "dport", portstr, "ffff", -+ "action", "csum", "ip", "and", "udp", -+ NULL); -+ -+ virFirewallAddRollbackCmd(fw, VIR_FIREWALL_LAYER_TC, -+ "filter", "del", "dev", iface, -+ "prio", "2", "protocol", "ip", "parent", "1:", -+ "u32", "match", "ip", "dport", portstr, "ffff", -+ "action", "csum", "ip", "and", "udp", -+ NULL); -+ return 0; -+} -+ -+ - /* nftablesAddFirewallrules: - * - * @def - the network that needs an nftables firewall added -@@ -944,6 +1006,12 @@ nftablesAddFirewallRules(virNetworkDef *def, virFirewall **fwRemoval) - - virFirewallStartTransaction(fw, VIR_FIREWALL_TRANSACTION_AUTO_ROLLBACK); - -+ /* add the tc filter rule needed to fixup the checksum of dhcp -+ * response packets going from host to guest. -+ */ -+ if (nftablesAddUdpChecksumFixWithTC(fw, def->bridge, 68) < 0) -+ return -1; -+ - nftablesAddGeneralFirewallRules(fw, def); - - for (i = 0; -diff --git a/tests/networkxml2firewalldata/forward-dev-linux.nftables b/tests/networkxml2firewalldata/forward-dev-linux.nftables -index 8badb74beb..6772383b37 100644 ---- a/tests/networkxml2firewalldata/forward-dev-linux.nftables -+++ b/tests/networkxml2firewalldata/forward-dev-linux.nftables -@@ -1,3 +1,43 @@ -+tc \ -+qdisc \ -+show \ -+dev \ -+virbr0 \ -+handle \ -+1: -+tc \ -+qdisc \ -+add \ -+dev \ -+virbr0 \ -+root \ -+handle \ -+1: \ -+htb \ -+default \ -+2 -+tc \ -+filter \ -+add \ -+dev \ -+virbr0 \ -+prio \ -+2 \ -+protocol \ -+ip \ -+parent \ -+1: \ -+u32 \ -+match \ -+ip \ -+dport \ -+68 \ -+ffff \ -+action \ -+csum \ -+ip \ -+and \ -+udp - nft \ - -ae insert \ - rule \ -diff --git a/tests/networkxml2firewalldata/isolated-linux.nftables b/tests/networkxml2firewalldata/isolated-linux.nftables -index d1b4dac178..546a18b75a 100644 ---- a/tests/networkxml2firewalldata/isolated-linux.nftables -+++ b/tests/networkxml2firewalldata/isolated-linux.nftables -@@ -1,3 +1,43 @@ -+tc \ -+qdisc \ -+show \ -+dev \ -+virbr0 \ -+handle \ -+1: -+tc \ -+qdisc \ -+add \ -+dev \ -+virbr0 \ -+root \ -+handle \ -+1: \ -+htb \ -+default \ -+2 -+tc \ -+filter \ -+add \ -+dev \ -+virbr0 \ -+prio \ -+2 \ -+protocol \ -+ip \ -+parent \ -+1: \ -+u32 \ -+match \ -+ip \ -+dport \ -+68 \ -+ffff \ -+action \ -+csum \ -+ip \ -+and \ -+udp - nft \ - -ae insert \ - rule \ -diff --git a/tests/networkxml2firewalldata/nat-default-linux.nftables b/tests/networkxml2firewalldata/nat-default-linux.nftables -index 28508292f9..08623c1381 100644 ---- a/tests/networkxml2firewalldata/nat-default-linux.nftables -+++ b/tests/networkxml2firewalldata/nat-default-linux.nftables -@@ -1,3 +1,43 @@ -+tc \ -+qdisc \ -+show \ -+dev \ -+virbr0 \ -+handle \ -+1: -+tc \ -+qdisc \ -+add \ -+dev \ -+virbr0 \ -+root \ -+handle \ -+1: \ -+htb \ -+default \ -+2 -+tc \ -+filter \ -+add \ -+dev \ -+virbr0 \ -+prio \ -+2 \ -+protocol \ -+ip \ -+parent \ -+1: \ -+u32 \ -+match \ -+ip \ -+dport \ -+68 \ -+ffff \ -+action \ -+csum \ -+ip \ -+and \ -+udp - nft \ - -ae insert \ - rule \ -diff --git a/tests/networkxml2firewalldata/nat-ipv6-linux.nftables b/tests/networkxml2firewalldata/nat-ipv6-linux.nftables -index d8a9ba706d..3fd6b94eef 100644 ---- a/tests/networkxml2firewalldata/nat-ipv6-linux.nftables -+++ b/tests/networkxml2firewalldata/nat-ipv6-linux.nftables -@@ -1,3 +1,43 @@ -+tc \ -+qdisc \ -+show \ -+dev \ -+virbr0 \ -+handle \ -+1: -+tc \ -+qdisc \ -+add \ -+dev \ -+virbr0 \ -+root \ -+handle \ -+1: \ -+htb \ -+default \ -+2 -+tc \ -+filter \ -+add \ -+dev \ -+virbr0 \ -+prio \ -+2 \ -+protocol \ -+ip \ -+parent \ -+1: \ -+u32 \ -+match \ -+ip \ -+dport \ -+68 \ -+ffff \ -+action \ -+csum \ -+ip \ -+and \ -+udp - nft \ - -ae insert \ - rule \ -diff --git a/tests/networkxml2firewalldata/nat-ipv6-masquerade-linux.nftables b/tests/networkxml2firewalldata/nat-ipv6-masquerade-linux.nftables -index a7f09cda59..2811e098d1 100644 ---- a/tests/networkxml2firewalldata/nat-ipv6-masquerade-linux.nftables -+++ b/tests/networkxml2firewalldata/nat-ipv6-masquerade-linux.nftables -@@ -1,3 +1,43 @@ -+tc \ -+qdisc \ -+show \ -+dev \ -+virbr0 \ -+handle \ -+1: -+tc \ -+qdisc \ -+add \ -+dev \ -+virbr0 \ -+root \ -+handle \ -+1: \ -+htb \ -+default \ -+2 -+tc \ -+filter \ -+add \ -+dev \ -+virbr0 \ -+prio \ -+2 \ -+protocol \ -+ip \ -+parent \ -+1: \ -+u32 \ -+match \ -+ip \ -+dport \ -+68 \ -+ffff \ -+action \ -+csum \ -+ip \ -+and \ -+udp - nft \ - -ae insert \ - rule \ -diff --git a/tests/networkxml2firewalldata/nat-many-ips-linux.nftables b/tests/networkxml2firewalldata/nat-many-ips-linux.nftables -index b826fe6134..5409d5b552 100644 ---- a/tests/networkxml2firewalldata/nat-many-ips-linux.nftables -+++ b/tests/networkxml2firewalldata/nat-many-ips-linux.nftables -@@ -1,3 +1,43 @@ -+tc \ -+qdisc \ -+show \ -+dev \ -+virbr0 \ -+handle \ -+1: -+tc \ -+qdisc \ -+add \ -+dev \ -+virbr0 \ -+root \ -+handle \ -+1: \ -+htb \ -+default \ -+2 -+tc \ -+filter \ -+add \ -+dev \ -+virbr0 \ -+prio \ -+2 \ -+protocol \ -+ip \ -+parent \ -+1: \ -+u32 \ -+match \ -+ip \ -+dport \ -+68 \ -+ffff \ -+action \ -+csum \ -+ip \ -+and \ -+udp - nft \ - -ae insert \ - rule \ -diff --git a/tests/networkxml2firewalldata/nat-no-dhcp-linux.nftables b/tests/networkxml2firewalldata/nat-no-dhcp-linux.nftables -index d8a9ba706d..3fd6b94eef 100644 ---- a/tests/networkxml2firewalldata/nat-no-dhcp-linux.nftables -+++ b/tests/networkxml2firewalldata/nat-no-dhcp-linux.nftables -@@ -1,3 +1,43 @@ -+tc \ -+qdisc \ -+show \ -+dev \ -+virbr0 \ -+handle \ -+1: -+tc \ -+qdisc \ -+add \ -+dev \ -+virbr0 \ -+root \ -+handle \ -+1: \ -+htb \ -+default \ -+2 -+tc \ -+filter \ -+add \ -+dev \ -+virbr0 \ -+prio \ -+2 \ -+protocol \ -+ip \ -+parent \ -+1: \ -+u32 \ -+match \ -+ip \ -+dport \ -+68 \ -+ffff \ -+action \ -+csum \ -+ip \ -+and \ -+udp - nft \ - -ae insert \ - rule \ -diff --git a/tests/networkxml2firewalldata/nat-port-range-ipv6-linux.nftables b/tests/networkxml2firewalldata/nat-port-range-ipv6-linux.nftables -index ceaed6fa40..d74417cdb3 100644 ---- a/tests/networkxml2firewalldata/nat-port-range-ipv6-linux.nftables -+++ b/tests/networkxml2firewalldata/nat-port-range-ipv6-linux.nftables -@@ -1,3 +1,43 @@ -+tc \ -+qdisc \ -+show \ -+dev \ -+virbr0 \ -+handle \ -+1: -+tc \ -+qdisc \ -+add \ -+dev \ -+virbr0 \ -+root \ -+handle \ -+1: \ -+htb \ -+default \ -+2 -+tc \ -+filter \ -+add \ -+dev \ -+virbr0 \ -+prio \ -+2 \ -+protocol \ -+ip \ -+parent \ -+1: \ -+u32 \ -+match \ -+ip \ -+dport \ -+68 \ -+ffff \ -+action \ -+csum \ -+ip \ -+and \ -+udp - nft \ - -ae insert \ - rule \ -diff --git a/tests/networkxml2firewalldata/nat-port-range-linux.nftables b/tests/networkxml2firewalldata/nat-port-range-linux.nftables -index 1dc37a26ec..b55bb287a9 100644 ---- a/tests/networkxml2firewalldata/nat-port-range-linux.nftables -+++ b/tests/networkxml2firewalldata/nat-port-range-linux.nftables -@@ -1,3 +1,43 @@ -+tc \ -+qdisc \ -+show \ -+dev \ -+virbr0 \ -+handle \ -+1: -+tc \ -+qdisc \ -+add \ -+dev \ -+virbr0 \ -+root \ -+handle \ -+1: \ -+htb \ -+default \ -+2 -+tc \ -+filter \ -+add \ -+dev \ -+virbr0 \ -+prio \ -+2 \ -+protocol \ -+ip \ -+parent \ -+1: \ -+u32 \ -+match \ -+ip \ -+dport \ -+68 \ -+ffff \ -+action \ -+csum \ -+ip \ -+and \ -+udp - nft \ - -ae insert \ - rule \ -diff --git a/tests/networkxml2firewalldata/nat-tftp-linux.nftables b/tests/networkxml2firewalldata/nat-tftp-linux.nftables -index 28508292f9..08623c1381 100644 ---- a/tests/networkxml2firewalldata/nat-tftp-linux.nftables -+++ b/tests/networkxml2firewalldata/nat-tftp-linux.nftables -@@ -1,3 +1,43 @@ -+tc \ -+qdisc \ -+show \ -+dev \ -+virbr0 \ -+handle \ -+1: -+tc \ -+qdisc \ -+add \ -+dev \ -+virbr0 \ -+root \ -+handle \ -+1: \ -+htb \ -+default \ -+2 -+tc \ -+filter \ -+add \ -+dev \ -+virbr0 \ -+prio \ -+2 \ -+protocol \ -+ip \ -+parent \ -+1: \ -+u32 \ -+match \ -+ip \ -+dport \ -+68 \ -+ffff \ -+action \ -+csum \ -+ip \ -+and \ -+udp - nft \ - -ae insert \ - rule \ -diff --git a/tests/networkxml2firewalldata/route-default-linux.nftables b/tests/networkxml2firewalldata/route-default-linux.nftables -index 282c9542a5..76d6902517 100644 ---- a/tests/networkxml2firewalldata/route-default-linux.nftables -+++ b/tests/networkxml2firewalldata/route-default-linux.nftables -@@ -1,3 +1,43 @@ -+tc \ -+qdisc \ -+show \ -+dev \ -+virbr0 \ -+handle \ -+1: -+tc \ -+qdisc \ -+add \ -+dev \ -+virbr0 \ -+root \ -+handle \ -+1: \ -+htb \ -+default \ -+2 -+tc \ -+filter \ -+add \ -+dev \ -+virbr0 \ -+prio \ -+2 \ -+protocol \ -+ip \ -+parent \ -+1: \ -+u32 \ -+match \ -+ip \ -+dport \ -+68 \ -+ffff \ -+action \ -+csum \ -+ip \ -+and \ -+udp - nft \ - -ae insert \ - rule \ --- -2.47.1 - diff --git a/fedora-41/SOURCES/0010-network-permit-forward-mode-open-when-a-network-has-.patch b/fedora-41/SOURCES/0010-network-permit-forward-mode-open-when-a-network-has-.patch deleted file mode 100644 index b50a2b4..0000000 --- a/fedora-41/SOURCES/0010-network-permit-forward-mode-open-when-a-network-has-.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 114c0ec656e879ab4d67919914bb24cf5993106d Mon Sep 17 00:00:00 2001 -Message-ID: <114c0ec656e879ab4d67919914bb24cf5993106d.1734201785.git.crobinso@redhat.com> -From: Laine Stump -Date: Mon, 2 Sep 2024 16:13:08 -0400 -Subject: [PATCH] network: permit when a network has no - IP address -Content-type: text/plain - -The whole point of is to supress libvirt from -adding any firewall rules for a network, and someone might want to -create a network with no IP address (i.e. they don't want the guests -to have connectivity to the host via this interface) and no firewall -rules (they don't want any, or they want to add their own). So there's -no reason to fail when a network has and also -has no IP address. - -Kind-of-Resolves: https://gitlab.com/libvirt/libvirt/-/issues/588 -Signed-off-by: Laine Stump -Reviewed-by: Martin Kletzander -Signed-off-by: Cole Robinson ---- - src/conf/network_conf.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c -index 5cf419acf1..320e1b089a 100644 ---- a/src/conf/network_conf.c -+++ b/src/conf/network_conf.c -@@ -1789,7 +1789,6 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt, - - case VIR_NETWORK_FORWARD_ROUTE: - case VIR_NETWORK_FORWARD_NAT: -- case VIR_NETWORK_FORWARD_OPEN: - /* It's pointless to specify L3 forwarding without specifying - * the network we're on. - */ -@@ -1806,8 +1805,10 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt, - def->name); - return NULL; - } -+ break; - -- if (def->forward.type == VIR_NETWORK_FORWARD_OPEN && def->forward.nifs) { -+ case VIR_NETWORK_FORWARD_OPEN: -+ if (def->forward.nifs) { - /* an open network by definition can't place any restrictions - * on what traffic is allowed or where it goes, so specifying - * a forwarding device is nonsensical. --- -2.47.1 - diff --git a/fedora-41/SOURCES/0011-qemu-snapshot-delete-disk-image-only-if-parent-snaps.patch b/fedora-41/SOURCES/0011-qemu-snapshot-delete-disk-image-only-if-parent-snaps.patch deleted file mode 100644 index e3cc6ee..0000000 --- a/fedora-41/SOURCES/0011-qemu-snapshot-delete-disk-image-only-if-parent-snaps.patch +++ /dev/null @@ -1,64 +0,0 @@ -From d51179fa82448f4720f1645f0b7100df80508cc4 Mon Sep 17 00:00:00 2001 -From: Pavel Hrdina -Date: Thu, 9 Jan 2025 16:23:44 +0100 -Subject: [PATCH] qemu: snapshot: delete disk image only if parent snapshot is - external -Content-type: text/plain - -When we are deleting external snapshot that is not active we only need -to delete overlay disk image of the parent snapshot. This works -correctly even if parent snapshot is external and active as it will have -another overlay created when user reverted to that snapshot. - -In case the parent snapshot is internal there are no overlay disk images -created as everything is stored internally within the disk image. In -this case we would delete the actual disk image storing internal -snapshots and most likely the original disk image as well resulting in -data loss once the VM is shutoff. - -Fixes: https://gitlab.com/libvirt/libvirt/-/issues/734 -Signed-off-by: Pavel Hrdina -Reviewed-by: Peter Krempa ---- - src/qemu/qemu_snapshot.c | 14 ++++++++------ - 1 file changed, 8 insertions(+), 6 deletions(-) - -diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c -index 18b2e478f6..80cd54bf33 100644 ---- a/src/qemu/qemu_snapshot.c -+++ b/src/qemu/qemu_snapshot.c -@@ -3144,6 +3144,8 @@ qemuSnapshotDeleteExternalPrepareData(virDomainObj *vm, - return -1; - } - -+ data->parentSnap = qemuSnapshotFindParentSnapForDisk(snap, data->snapDisk); -+ - if (data->merge) { - virStorageSource *snapDiskSrc = NULL; - -@@ -3185,8 +3187,6 @@ qemuSnapshotDeleteExternalPrepareData(virDomainObj *vm, - qemuSnapshotGetDisksWithBackingStore(vm, snap, data); - } - -- data->parentSnap = qemuSnapshotFindParentSnapForDisk(snap, data->snapDisk); -- - if (data->parentSnap && !virDomainSnapshotIsExternal(data->parentSnap)) { - virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", - _("deleting external snapshot that has internal snapshot as parent not supported")); -@@ -3642,10 +3642,12 @@ qemuSnapshotDiscardExternal(virDomainObj *vm, - if (!data->job) - goto error; - } else { -- if (virStorageSourceInit(data->parentDomDisk->src) < 0 || -- virStorageSourceUnlink(data->parentDomDisk->src) < 0) { -- VIR_WARN("Failed to remove snapshot image '%s'", -- data->snapDisk->name); -+ if (data->parentSnap && virDomainSnapshotIsExternal(data->parentSnap)) { -+ if (virStorageSourceInit(data->parentDomDisk->src) < 0 || -+ virStorageSourceUnlink(data->parentDomDisk->src) < 0) { -+ VIR_WARN("Failed to remove snapshot image '%s'", -+ data->snapDisk->name); -+ } - } - } - } diff --git a/fedora-41/SOURCES/libvirt-10.6.0.tar.xz b/fedora-41/SOURCES/libvirt-10.6.0.tar.xz deleted file mode 100644 index f114012..0000000 --- a/fedora-41/SOURCES/libvirt-10.6.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a495b2a26faca841ac0073c7dd7f60857ca81adac9047dac5f698fd75f1342cd -size 9481992 diff --git a/fedora-41/SOURCES/zfs-2.3.4.tar.gz b/fedora-41/SOURCES/zfs-2.3.4.tar.gz deleted file mode 100644 index 66373a8..0000000 --- a/fedora-41/SOURCES/zfs-2.3.4.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:960dadef24223edf16578de75ab471acdf4119ec8e1402408e8c789577ed305e -size 34377346 diff --git a/fedora-41/SOURCES/zfs-2.3.5.tar.gz b/fedora-41/SOURCES/zfs-2.3.5.tar.gz deleted file mode 100644 index b50a9b1..0000000 --- a/fedora-41/SOURCES/zfs-2.3.5.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:931b78933e365c66ec4695cd0899b31fbe0f4f837fb1bb4144ff2ab19dbada8b -size 34379058 diff --git a/fedora-41/SOURCES/zfs-2.4.0.tar.gz b/fedora-41/SOURCES/zfs-2.4.0.tar.gz deleted file mode 100644 index bd2cc6e..0000000 --- a/fedora-41/SOURCES/zfs-2.4.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aacf01a3f75b3a9835321eace7f3c54c7e866c3df04deafa98084cc5541978f9 -size 34476233 diff --git a/fedora-41/SPECS/libvirt.spec b/fedora-41/SPECS/libvirt.spec deleted file mode 100644 index 9b7adb3..0000000 --- a/fedora-41/SPECS/libvirt.spec +++ /dev/null @@ -1,2888 +0,0 @@ -# -*- rpm-spec -*- - -# This spec file assumes you are building on a Fedora or RHEL version -# that's still supported by the vendor. It may work on other distros -# or versions, but no effort will be made to ensure that going forward. -%define min_rhel 8 -%define min_fedora 37 - -%define arches_qemu_kvm %{ix86} x86_64 %{power64} %{arm} aarch64 s390x riscv64 -%if 0%{?rhel} - %if 0%{?rhel} > 8 - %define arches_qemu_kvm x86_64 aarch64 s390x - %else - %define arches_qemu_kvm x86_64 %{power64} aarch64 s390x - %endif -%endif - -%define arches_64bit x86_64 %{power64} aarch64 s390x riscv64 -%define arches_x86 %{ix86} x86_64 - -%define arches_systemtap_64bit %{arches_64bit} -%define arches_dmidecode %{arches_x86} -%define arches_xen %{arches_x86} aarch64 -%if 0%{?fedora} - %define arches_xen x86_64 aarch64 -%endif -%define arches_vbox %{arches_x86} -%define arches_ceph %{arches_64bit} -%define arches_zfs %{arches_x86} %{power64} %{arm} aarch64 -%define arches_numactl %{arches_x86} %{power64} aarch64 s390x -%define arches_numad %{arches_x86} %{power64} aarch64 - -# The hypervisor drivers that run in libvirtd -%define with_qemu 0%{!?_without_qemu:1} -%define with_lxc 0%{!?_without_lxc:1} -%define with_libxl 0%{!?_without_libxl:1} -%define with_vbox 0%{!?_without_vbox:1} - -%ifarch %{arches_qemu_kvm} - %define with_qemu_kvm %{with_qemu} -%else - %define with_qemu_kvm 0 -%endif - -%define with_qemu_tcg %{with_qemu} - -# RHEL disables TCG on all architectures -%if 0%{?rhel} - %define with_qemu_tcg 0 -%endif - -%if ! %{with_qemu_tcg} && ! %{with_qemu_kvm} - %define with_qemu 0 -%endif - -# Then the hypervisor drivers that run outside libvirtd, in libvirt.so -%define with_openvz 0%{!?_without_openvz:1} -%define with_vmware 0%{!?_without_vmware:1} -%define with_esx 0%{!?_without_esx:1} -%define with_hyperv 0%{!?_without_hyperv:1} - -# Then the secondary host drivers, which run inside libvirtd -%define with_storage_rbd 0%{!?_without_storage_rbd:1} - -%define with_storage_gluster 0%{!?_without_storage_gluster:1} -%if 0%{?rhel} - # Glusterfs has been dropped in RHEL-9, and before that - # was only enabled on arches where KVM exists - %if 0%{?rhel} > 8 - %define with_storage_gluster 0 - %else - %ifnarch %{arches_qemu_kvm} - %define with_storage_gluster 0 - %endif - %endif -%endif - -%define with_storage_zfs 1 - -%define with_storage_iscsi_direct 0%{!?_without_storage_iscsi_direct:1} -# libiscsi has been dropped in RHEL-9 -%if 0%{?rhel} > 8 - %define with_storage_iscsi_direct 0 -%endif - -# 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 -%define with_wireshark 0 -%define with_libssh 0 -%define with_dmidecode 0 - -# Finally set the OS / architecture specific special cases - -# Architecture-dependent features -%ifnarch %{arches_xen} - %define with_libxl 0 -%endif -%ifnarch %{arches_vbox} - %define with_vbox 0 -%endif -%ifnarch %{arches_numactl} - %define with_numactl 0 -%endif -%ifnarch %{arches_zfs} - %define with_storage_zfs 0 -%endif -%ifnarch %{arches_ceph} - %define with_storage_rbd 0 -%endif - -# RHEL doesn't ship many hypervisor drivers -%if 0%{?rhel} - %define with_openvz 0 - %define with_vbox 0 - %define with_vmware 0 - %define with_libxl 0 - %define with_hyperv 0 - %define with_lxc 0 -%endif - -%define with_firewalld_zone 0%{!?_without_firewalld_zone:1} - -%if 0%{?rhel} && 0%{?rhel} < 9 - %define with_netcf 0%{!?_without_netcf:1} -%endif - -# fuse is used to provide virtualized /proc for LXC -%if %{with_lxc} - %define with_fuse 0%{!?_without_fuse:1} -%endif - -# Enable sanlock library for lock management with QEMU -# Sanlock is available only on arches where kvm is available for RHEL -%if 0%{?fedora} - %define with_sanlock 0%{!?_without_sanlock:1} -%endif -%if 0%{?rhel} - %ifarch %{arches_qemu_kvm} - %define with_sanlock 0%{!?_without_sanlock:1} - %endif -%endif - -# Enable libssh2 transport for new enough distros -%if 0%{?fedora} - %define with_libssh2 0%{!?_without_libssh2:1} -%endif - -# Enable wireshark plugins for all distros -%define with_wireshark 0%{!?_without_wireshark:1} -%define wireshark_plugindir %(pkg-config --variable plugindir wireshark)/epan - -# Enable libssh transport for all distros -%define with_libssh 0%{!?_without_libssh:1} - -%if %{with_qemu} || %{with_lxc} -# numad is used to manage the CPU and memory placement dynamically, -# it's not available on many non-x86 architectures. - %ifarch %{arches_numad} - %define with_numad 0%{!?_without_numad:1} - %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 - -%define with_modular_daemons 0 -%if 0%{?fedora} || 0%{?rhel} >= 9 - %define with_modular_daemons 1 -%endif - -# Prefer nftables for future OS releases but keep using iptables -# for existing ones -%if 0%{?rhel} >= 10 || 0%{?fedora} >= 41 - %define prefer_nftables 1 - %define firewall_backend_priority nftables,iptables -%else - %define prefer_nftables 0 - %define firewall_backend_priority iptables,nftables -%endif - - - -# Force QEMU to run as non-root -%define qemu_user qemu -%define qemu_group qemu - -# Locations for QEMU data -%define qemu_moddir %{_libdir}/qemu -%define qemu_datadir %{_datadir}/qemu - -# Native / MinGW builds -%define with_native 0%{!?_without_native:1} - -%define with_mingw32 0 -%define with_mingw64 0 - -%if 0%{?fedora} - %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 -# compiler warning into errors without being worried about frequent -# changes in reported warnings -%if 0%{?rhel} - %define enable_werror -Dwerror=true -%else - %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. -# If the user has customized their sysconfig file, -# the RPM upgrade path will rename it to .rpmsave -# because the file is no longer managed by RPM. -# To prevent a regression we rename it back after the -# transaction to preserve the user's modifications -%define libvirt_sysconfig_pre() \ - for sc in %{?*} ; do \ - test -f "%{_sysconfdir}/sysconfig/${sc}.rpmsave" || continue ; \ - mv -v "%{_sysconfdir}/sysconfig/${sc}.rpmsave" "%{_sysconfdir}/sysconfig/${sc}.rpmsave.old" ; \ - done \ - %{nil} -%define libvirt_sysconfig_posttrans() \ - for sc in %{?*} ; do \ - test -f "%{_sysconfdir}/sysconfig/${sc}.rpmsave" || continue ; \ - mv -v "%{_sysconfdir}/sysconfig/${sc}.rpmsave" "%{_sysconfdir}/sysconfig/${sc}" ; \ - done \ - %{nil} - -Summary: Library providing a simple virtualization API -Name: libvirt -Version: 10.6.0 -Release: 7%{?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 "\.0$" >/dev/null; echo $?) == 1 - %define mainturl stable_updates/ -%endif -Source: https://download.libvirt.org/%{?mainturl}libvirt-%{version}.tar.xz - -# Fix `virsh domifaddr --source=arp` on kernel 6.10 (bz #2302245) -Patch0001: 0001-virarptable-Properly-calculate-rtattr-length.patch -Patch0002: 0002-virarptable-Fix-check-for-message-length.patch -Patch0003: 0003-virarptable-End-parsing-earlier-in-case-of-NLMSG_DON.patch - -# Fix DHCP response checksum when using nftables firewall -Patch0004: 0004-util-use-a-single-flags-arg-for-virNetDevBandwidthSe.patch -Patch0005: 0005-util-make-it-optional-to-clear-existing-tc-qdiscs-fi.patch -Patch0006: 0006-util-put-the-command-that-adds-a-tx-filter-qdisc-int.patch -Patch0007: 0007-util-don-t-re-add-the-qdisc-used-for-tx-filters-if-i.patch -Patch0008: 0008-util-add-new-tc-layer-for-virFirewallCmd-objects.patch -Patch0009: 0009-network-add-tc-filter-rule-to-nftables-backend-to-fi.patch - -# Permit forward mode=open when network has no IP (bz 2255266) -Patch: 0010-network-permit-forward-mode-open-when-a-network-has-.patch - -# Fix potential dataloss on snapshot deletion -Patch11: 0011-qemu-snapshot-delete-disk-image-only-if-parent-snaps.patch - -Requires: libvirt-daemon = %{version}-%{release} -Requires: libvirt-daemon-config-network = %{version}-%{release} -Requires: libvirt-daemon-config-nwfilter = %{version}-%{release} -%if %{with_libxl} -Requires: libvirt-daemon-driver-libxl = %{version}-%{release} -%endif -%if %{with_lxc} -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 -Obsoletes: libvirt-daemon-uml <= 5.0.0 -%if %{with_vbox} -Requires: libvirt-daemon-driver-vbox = %{version}-%{release} -%endif -Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} -Requires: libvirt-daemon-driver-interface = %{version}-%{release} -Requires: libvirt-daemon-driver-secret = %{version}-%{release} -Requires: libvirt-daemon-driver-storage = %{version}-%{release} -Requires: libvirt-daemon-driver-network = %{version}-%{release} -Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} -Requires: libvirt-client = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} - -# All build-time requirements. Run-time requirements are -# listed against each sub-RPM -BuildRequires: python3-docutils -BuildRequires: meson >= 0.56.0 -BuildRequires: ninja-build -BuildRequires: git -BuildRequires: perl-interpreter -BuildRequires: python3 -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 -BuildRequires: glib2-devel >= 2.58 -BuildRequires: libxml2-devel -BuildRequires: readline-devel -BuildRequires: pkgconfig(bash-completion) >= 2.0 -BuildRequires: libtasn1-devel -BuildRequires: gnutls-devel -BuildRequires: libattr-devel -# For pool-build probing for existing pools -BuildRequires: libblkid-devel >= 2.17 -# for augparse, optionally used in testing -BuildRequires: augeas -BuildRequires: systemd-devel >= 185 -BuildRequires: libpciaccess-devel >= 0.10.9 -BuildRequires: yajl-devel - %if %{with_sanlock} -BuildRequires: sanlock-devel >= 2.4 - %endif -BuildRequires: libpcap-devel >= 1.5.0 -BuildRequires: libnl3-devel -BuildRequires: libselinux-devel -# For modprobe -BuildRequires: kmod -BuildRequires: cyrus-sasl-devel -BuildRequires: polkit >= 0.112 -# For mount/umount in FS driver -BuildRequires: util-linux - %if %{with_qemu} -# For managing ACLs -BuildRequires: libacl-devel -# From QEMU RPMs, used by virstoragetest -BuildRequires: /usr/bin/qemu-img - %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} -# For pool type=iscsi-direct -BuildRequires: libiscsi-devel - %endif -# For disk driver -BuildRequires: parted-devel -# For Multipath support -BuildRequires: device-mapper-devel - %if %{with_storage_rbd} -BuildRequires: librados-devel -BuildRequires: librbd-devel - %endif - %if %{with_storage_gluster} -BuildRequires: glusterfs-api-devel >= 3.4.1 -BuildRequires: glusterfs-devel >= 3.4.1 - %endif - %if %{with_numactl} -# For QEMU/LXC numa info -BuildRequires: numactl-devel - %endif -BuildRequires: libcap-ng-devel >= 0.5.0 - %if %{with_fuse} -BuildRequires: fuse-devel >= 2.8.6 - %endif - %if %{with_libssh2} -BuildRequires: libssh2-devel >= 1.3.0 - %endif - %if %{with_netcf} -BuildRequires: netcf-devel >= 0.2.2 - %endif - %if %{with_esx} -BuildRequires: libcurl-devel - %endif - %if %{with_hyperv} -BuildRequires: libwsman-devel >= 2.6.3 - %endif -BuildRequires: audit-libs-devel -BuildRequires: systemtap-sdt-devel -BuildRequires: /usr/bin/dtrace -# For mount/umount in FS driver -BuildRequires: util-linux -# For showmount in FS driver (netfs discovery) -BuildRequires: nfs-utils - %if %{with_numad} -BuildRequires: numad - %endif - %if %{with_wireshark} -BuildRequires: wireshark-devel - %endif - %if %{with_libssh} -BuildRequires: libssh-devel >= 0.8.1 - %endif -BuildRequires: libtirpc-devel - %if %{with_firewalld_zone} -# Needed for the firewalld_reload macro -BuildRequires: firewalld-filesystem - %endif -%endif - -%if %{with_mingw32} -BuildRequires: mingw32-filesystem -BuildRequires: mingw32-gcc -BuildRequires: mingw32-binutils -BuildRequires: mingw32-glib2 >= 2.48 -BuildRequires: mingw32-gnutls -BuildRequires: mingw32-gettext -BuildRequires: mingw32-libxml2 -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-gnutls -BuildRequires: mingw64-gettext -BuildRequires: mingw64-libxml2 -BuildRequires: mingw64-portablexdr -BuildRequires: mingw64-dlfcn -BuildRequires: mingw64-libssh2 -BuildRequires: mingw64-curl -%endif - -%description -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 - -%description docs -Includes the API reference for the libvirt C library, and a complete -copy of the libvirt.org website documentation. - -%package daemon -Summary: Server side daemon and supporting files for libvirt library - -# All runtime requirements for the libvirt package (runtime requrements -# for subpackages are listed later in those subpackages) - -# The client side, i.e. shared libs are in a subpackage -Requires: libvirt-libs = %{version}-%{release} -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-daemon-lock = %{version}-%{release} -Requires: libvirt-daemon-plugin-lockd = %{version}-%{release} -Requires: libvirt-daemon-log = %{version}-%{release} -Requires: libvirt-daemon-proxy = %{version}-%{release} - -%description daemon -Server side daemon required to manage the virtualization capabilities -of recent versions of Linux. Requires a hypervisor specific sub-RPM -for specific drivers. - -%package daemon-common -Summary: Files and utilities used by daemons -Requires: libvirt-libs = %{version}-%{release} -# The libvirt-guests.sh script requires virsh from libvirt-client subpackage, -# but not every deployment wants to use libvirt-guests service. Using -# Recommends here will install libvirt-client by default (if available), but -# RPM won't complain if the package is unavailable, masked, or removed later. -Recommends: libvirt-client = %{version}-%{release} -# for /sbin/ip -Requires: iproute -# for /sbin/tc -Requires: iproute-tc -Requires: polkit >= 0.112 - %if %{with_dmidecode} -# For virConnectGetSysinfo -Requires: dmidecode - %endif -# For service management -Requires(posttrans): /usr/bin/systemctl -Requires(preun): /usr/bin/systemctl -# libvirtd depends on 'messagebus' service -Requires: dbus -# For uid creation during pre -Requires(pre): shadow-utils -# Needed by /usr/libexec/libvirt-guests.sh script. - %if 0%{?fedora} -Requires: gettext-runtime - %else -Requires: gettext - %endif - -# Ensure smooth upgrades -Obsoletes: libvirt-admin < 7.3.0 -Provides: libvirt-admin = %{version}-%{release} -Obsoletes: libvirt-bash-completion < 7.3.0 - -%description daemon-common -Miscellaneous files and utilities used by other libvirt daemons - -%package daemon-lock -Summary: Server side daemon for managing locks -Requires: libvirt-libs = %{version}-%{release} - -%description daemon-lock -Server side daemon used to manage locks held against virtual machine -resources - -%package daemon-plugin-lockd -Summary: lockd client plugin for virtlockd -Requires: libvirt-libs = %{version}-%{release} -Requires: libvirt-daemon-lock = %{version}-%{release} - -%description daemon-plugin-lockd -A client-side plugin that implements disk locking using POSIX fcntl advisory -locks via communication with the virtlockd daemon - -%package daemon-log -Summary: Server side daemon for managing logs -Requires: libvirt-libs = %{version}-%{release} - -%description daemon-log -Server side daemon used to manage logs from virtual machine consoles - -%package daemon-proxy -Summary: Server side daemon providing libvirtd proxy -Requires: libvirt-libs = %{version}-%{release} -# netcat is needed on the server side so that clients that have -# libvirt < 6.9.0 can connect, but newer versions will prefer -# virt-ssh-helper. Making this a Recommends means that it gets -# installed by default, but can still be removed if compatibility -# with old clients is not required -Recommends: /usr/bin/nc - -%description daemon-proxy -Server side daemon providing functionality previously provided by -the monolithic libvirtd - -%package daemon-config-network -Summary: Default configuration files for the libvirtd daemon - -Requires: libvirt-daemon-driver-network = %{version}-%{release} - -%description daemon-config-network -Default configuration files for setting up NAT based networking - -%package daemon-config-nwfilter -Summary: Network filter configuration files for the libvirtd daemon - -Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} - -%description daemon-config-nwfilter -Network filter configuration files for cleaning guest traffic - -%package daemon-driver-network -Summary: Network driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: dnsmasq >= 2.41 - %if %{prefer_nftables} -Requires: nftables - %else -Requires: iptables - %endif - -%description daemon-driver-network -The network driver plugin for the libvirtd daemon, providing -an implementation of the virtual network APIs using the Linux -bridge capabilities. - -%package daemon-driver-nwfilter -Summary: Nwfilter driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: iptables -Requires: ebtables - -%description daemon-driver-nwfilter -The nwfilter driver plugin for the libvirtd daemon, providing -an implementation of the firewall APIs using the ebtables, -iptables and ip6tables capabilities - -%package daemon-driver-nodedev -Summary: Nodedev driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -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 - -%description daemon-driver-nodedev -The nodedev driver plugin for the libvirtd daemon, providing -an implementation of the node device APIs using the udev -capabilities. - -%package daemon-driver-interface -Summary: Interface driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} - %if %{with_netcf} -Requires: netcf-libs >= 0.2.2 - %endif - -%description daemon-driver-interface -The interface driver plugin for the libvirtd daemon, providing -an implementation of the host network interface APIs. - -%package daemon-driver-secret -Summary: Secret driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} - -%description daemon-driver-secret -The secret driver plugin for the libvirtd daemon, providing -an implementation of the secret key APIs. - -%package daemon-driver-storage-core -Summary: Storage driver plugin including base backends for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: nfs-utils -# For mkfs -Requires: util-linux -# For storage wiping with different algorithms -Requires: scrub - %if %{with_qemu} -# From QEMU RPMs -Requires: /usr/bin/qemu-img - %endif - %if !%{with_storage_rbd} -Obsoletes: libvirt-daemon-driver-storage-rbd < 5.2.0 - %endif -Obsoletes: libvirt-daemon-driver-storage-sheepdog < 8.8.0 - -%description daemon-driver-storage-core -The storage driver plugin for the libvirtd daemon, providing -an implementation of the storage APIs using files, local disks, LVM, SCSI, -iSCSI, and multipath storage. - -%package daemon-driver-storage-logical -Summary: Storage driver plugin for lvm volumes -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: lvm2 - -%description daemon-driver-storage-logical -The storage driver backend adding implementation of the storage APIs for block -volumes using lvm. - -%package daemon-driver-storage-disk -Summary: Storage driver plugin for disk -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: parted -Requires: device-mapper - -%description daemon-driver-storage-disk -The storage driver backend adding implementation of the storage APIs for block -volumes using the host disks. - -%package daemon-driver-storage-scsi -Summary: Storage driver plugin for local scsi devices -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} - -%description daemon-driver-storage-scsi -The storage driver backend adding implementation of the storage APIs for scsi -host devices. - -%package daemon-driver-storage-iscsi -Summary: Storage driver plugin for iscsi -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: iscsi-initiator-utils - -%description daemon-driver-storage-iscsi -The storage driver backend adding implementation of the storage APIs for iscsi -volumes using the host iscsi stack. - - %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} -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 - -%package daemon-driver-storage-mpath -Summary: Storage driver plugin for multipath volumes -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: device-mapper - -%description daemon-driver-storage-mpath -The storage driver backend adding implementation of the storage APIs for -multipath storage using device mapper. - - %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} -Requires: glusterfs-client >= 2.0.1 - %endif - %if 0%{?fedora} || 0%{?with_storage_gluster} -Requires: /usr/sbin/gluster - %endif - -%description daemon-driver-storage-gluster -The storage driver backend adding implementation of the storage APIs for gluster -volumes using libgfapi. - %endif - - %if %{with_storage_rbd} -%package daemon-driver-storage-rbd -Summary: Storage driver plugin for rbd -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -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 - - %if %{with_storage_zfs} -%package daemon-driver-storage-zfs -Summary: Storage driver plugin for ZFS -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -# Support any conforming implementation of zfs -Requires: /sbin/zfs -Requires: /sbin/zpool - -%description daemon-driver-storage-zfs -The storage driver backend adding implementation of the storage APIs for -ZFS volumes. - %endif - -%package daemon-driver-storage -Summary: Storage driver plugin including all backends for the libvirtd daemon -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-daemon-driver-storage-disk = %{version}-%{release} -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} -Requires: libvirt-daemon-driver-storage-iscsi-direct = %{version}-%{release} - %endif - %if %{with_storage_gluster} -Requires: libvirt-daemon-driver-storage-gluster = %{version}-%{release} - %endif - %if %{with_storage_rbd} -Requires: libvirt-daemon-driver-storage-rbd = %{version}-%{release} - %endif - %if %{with_storage_zfs} -Requires: libvirt-daemon-driver-storage-zfs = %{version}-%{release} - %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} -%package daemon-driver-qemu -Summary: QEMU driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-daemon-log = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: /usr/bin/qemu-img -# For image compression -Requires: gzip -Requires: bzip2 -Requires: lzop -Requires: xz -Requires: zstd -Requires: systemd-container -Requires: swtpm-tools - %if %{with_numad} -Requires: numad - %endif - %if 0%{?fedora} || 0%{?rhel} >= 9 -Recommends: passt -Recommends: passt-selinux - %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 - - %if %{with_lxc} -%package daemon-driver-lxc -Summary: LXC driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -# There really is a hard cross-driver dependency here -Requires: libvirt-daemon-driver-network = %{version}-%{release} -Requires: systemd-container -# for modprobe of nbd driver -Requires: module-init-tools - %if %{with_numad} -Requires: numad - %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 - - %if %{with_vbox} -%package daemon-driver-vbox -Summary: VirtualBox driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} - -%description daemon-driver-vbox -The vbox driver plugin for the libvirtd daemon, providing -an implementation of the hypervisor driver APIs using -VirtualBox - %endif - - %if %{with_libxl} -%package daemon-driver-libxl -Summary: Libxl driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Obsoletes: libvirt-daemon-driver-xen < 4.3.0 - -%description daemon-driver-libxl -The Libxl driver plugin for the libvirtd daemon, providing -an implementation of the hypervisor driver APIs using -Libxl - %endif - - %if %{with_qemu_tcg} -%package daemon-qemu -Summary: Server side daemon & driver required to run QEMU guests - - %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 -Requires: libvirt-daemon = %{version}-%{release} - %endif -Requires: libvirt-daemon-driver-qemu = %{version}-%{release} -Requires: libvirt-daemon-driver-interface = %{version}-%{release} -Requires: libvirt-daemon-driver-network = %{version}-%{release} -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} -Requires: libvirt-ssh-proxy = %{version}-%{release} -Requires: qemu - -%description daemon-qemu -Server side daemon and driver required to manage the virtualization -capabilities of the QEMU TCG emulators - %endif - - %if %{with_qemu_kvm} -%package daemon-kvm -Summary: Server side daemon & driver required to run KVM guests - - %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 -Requires: libvirt-daemon = %{version}-%{release} - %endif -Requires: libvirt-daemon-driver-qemu = %{version}-%{release} -Requires: libvirt-daemon-driver-interface = %{version}-%{release} -Requires: libvirt-daemon-driver-network = %{version}-%{release} -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} -Requires: libvirt-ssh-proxy = %{version}-%{release} -Requires: qemu-kvm - -%description daemon-kvm -Server side daemon and driver required to manage the virtualization -capabilities of the KVM hypervisor - %endif - - %if %{with_lxc} -%package daemon-lxc -Summary: Server side daemon & driver required to run LXC guests - - %if %{with_modular_daemons} -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-daemon-proxy = %{version}-%{release} -Recommends: libvirt-daemon = %{version}-%{release} - %else -Requires: libvirt-daemon = %{version}-%{release} - %endif -Requires: libvirt-daemon-driver-lxc = %{version}-%{release} -Requires: libvirt-daemon-driver-interface = %{version}-%{release} -Requires: libvirt-daemon-driver-network = %{version}-%{release} -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} - -%description daemon-lxc -Server side daemon and driver required to manage the virtualization -capabilities of LXC - %endif - - %if %{with_libxl} -%package daemon-xen -Summary: Server side daemon & driver required to run XEN guests - - %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 -Requires: libvirt-daemon = %{version}-%{release} - %endif -Requires: libvirt-daemon-driver-libxl = %{version}-%{release} -Requires: libvirt-daemon-driver-interface = %{version}-%{release} -Requires: libvirt-daemon-driver-network = %{version}-%{release} -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} -Requires: xen - -%description daemon-xen -Server side daemon and driver required to manage the virtualization -capabilities of XEN - %endif - - %if %{with_vbox} -%package daemon-vbox -Summary: Server side daemon & driver required to run VirtualBox guests - - %if %{with_modular_daemons} -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-daemon-proxy = %{version}-%{release} -Recommends: libvirt-daemon = %{version}-%{release} - %else -Requires: libvirt-daemon = %{version}-%{release} - %endif -Requires: libvirt-daemon-driver-vbox = %{version}-%{release} -Requires: libvirt-daemon-driver-interface = %{version}-%{release} -Requires: libvirt-daemon-driver-network = %{version}-%{release} -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} - -%description daemon-vbox -Server side daemon and driver required to manage the virtualization -capabilities of VirtualBox - %endif - -%package client -Summary: Client side utilities of the libvirt library -Requires: libvirt-libs = %{version}-%{release} - -# Ensure smooth upgrades -Obsoletes: libvirt-bash-completion < 7.3.0 - -%description client -The client binaries needed to access the virtualization -capabilities of recent versions of Linux (and other OSes). - -%package client-qemu -Summary: Additional client side utilities for QEMU -Requires: libvirt-libs = %{version}-%{release} -Requires: python3-libvirt >= 3.7.0 -Requires: python3-cryptography -Requires: python3-lxml - -%description client-qemu -The additional client binaries are used to interact -with some QEMU specific features of libvirt. - -%package libs -Summary: Client side libraries -# Needed by default sasl.conf - no onerous extra deps, since -# 100's of other things on a system already pull in krb5-libs -Requires: cyrus-sasl-gssapi - -%description libs -Shared libraries for accessing the libvirt daemon. - - %if %{with_wireshark} -%package wireshark -Summary: Wireshark dissector plugin for libvirt RPC transactions -Requires: wireshark -Requires: libvirt-libs = %{version}-%{release} - -%description wireshark -Wireshark dissector plugin for better analysis of libvirt RPC traffic. - %endif - - %if %{with_lxc} -%package login-shell -Summary: Login shell for connecting users to an LXC container -Requires: libvirt-libs = %{version}-%{release} - -%description login-shell -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 - -%package devel -Summary: Libraries, includes, etc. to compile with the libvirt library -Requires: libvirt-libs = %{version}-%{release} -Requires: pkgconfig - -%description devel -Include header files & development libraries for the libvirt C library. - - %if %{with_sanlock} -%package daemon-plugin-sanlock -Summary: Sanlock lock manager plugin for QEMU driver -Requires: sanlock >= 2.4 -#for virt-sanlock-cleanup require augeas -Requires: augeas -Requires: libvirt-libs = %{version}-%{release} -Obsoletes: libvirt-lock-sanlock < 9.1.0 -Provides: libvirt-lock-sanlock = %{version}-%{release} - -%description daemon-plugin-sanlock -Includes the Sanlock lock manager plugin for the QEMU -driver - %endif - -%package nss -Summary: Libvirt plugin for Name Service Switch -Requires: libvirt-daemon-driver-network = %{version}-%{release} - -%description nss -Libvirt plugin for NSS for translating domain names into IP addresses. -%endif - -%package ssh-proxy -Summary: Libvirt SSH proxy -Requires: libvirt-libs = %{version}-%{release} - -%description ssh-proxy -Allows SSH into domains via VSOCK without need for network. - -%if %{with_mingw32} -%package -n mingw32-libvirt -Summary: %{summary} -Obsoletes: mingw32-libvirt-static < 7.0.0 -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 -BuildArch: noarch - -%description -n mingw64-libvirt -MinGW Windows libvirt virtualization library. - -%{?mingw64_debug_package} -%endif - -%prep -%autosetup -S git_am - -%build -%if 0%{?fedora} >= %{min_fedora} || 0%{?rhel} >= %{min_rhel} - %define supported_platform 1 -%else - %define supported_platform 0 -%endif - -%if ! %{supported_platform} -echo "This RPM requires either Fedora >= %{min_fedora} or RHEL >= %{min_rhel}" -exit 1 -%endif - -%if %{with_qemu} - %define arg_qemu -Ddriver_qemu=enabled -%else - %define arg_qemu -Ddriver_qemu=disabled -%endif - -%if %{with_openvz} - %define arg_openvz -Ddriver_openvz=enabled -%else - %define arg_openvz -Ddriver_openvz=disabled -%endif - -%if %{with_lxc} - %define arg_lxc -Ddriver_lxc=enabled - %define arg_login_shell -Dlogin_shell=enabled -%else - %define arg_lxc -Ddriver_lxc=disabled - %define arg_login_shell -Dlogin_shell=disabled -%endif - -%if %{with_vbox} - %define arg_vbox -Ddriver_vbox=enabled -%else - %define arg_vbox -Ddriver_vbox=disabled -%endif - -%if %{with_libxl} - %define arg_libxl -Ddriver_libxl=enabled -%else - %define arg_libxl -Ddriver_libxl=disabled -%endif - -%if %{with_esx} - %define arg_esx -Ddriver_esx=enabled -Dcurl=enabled -%else - %define arg_esx -Ddriver_esx=disabled -Dcurl=disabled -%endif - -%if %{with_hyperv} - %define arg_hyperv -Ddriver_hyperv=enabled -Dopenwsman=enabled -%else - %define arg_hyperv -Ddriver_hyperv=disabled -Dopenwsman=disabled -%endif - -%if %{with_vmware} - %define arg_vmware -Ddriver_vmware=enabled -%else - %define arg_vmware -Ddriver_vmware=disabled -%endif - -%if %{with_storage_rbd} - %define arg_storage_rbd -Dstorage_rbd=enabled -%else - %define arg_storage_rbd -Dstorage_rbd=disabled -%endif - -%if %{with_storage_gluster} - %define arg_storage_gluster -Dstorage_gluster=enabled -Dglusterfs=enabled -%else - %define arg_storage_gluster -Dstorage_gluster=disabled -Dglusterfs=disabled -%endif - -%if %{with_storage_zfs} - %define arg_storage_zfs -Dstorage_zfs=enabled -%else - %define arg_storage_zfs -Dstorage_zfs=disabled -%endif - -%if %{with_numactl} - %define arg_numactl -Dnumactl=enabled -%else - %define arg_numactl -Dnumactl=disabled -%endif - -%if %{with_numad} - %define arg_numad -Dnumad=enabled -%else - %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 - %define arg_fuse -Dfuse=disabled -%endif - -%if %{with_sanlock} - %define arg_sanlock -Dsanlock=enabled -%else - %define arg_sanlock -Dsanlock=disabled -%endif - -%if %{with_firewalld_zone} - %define arg_firewalld_zone -Dfirewalld_zone=enabled -%else - %define arg_firewalld_zone -Dfirewalld_zone=disabled -%endif - -%if %{with_netcf} - %define arg_netcf -Dnetcf=enabled -%else - %define arg_netcf -Dnetcf=disabled -%endif - -%if %{with_wireshark} - %define arg_wireshark -Dwireshark_dissector=enabled -%else - %define arg_wireshark -Dwireshark_dissector=disabled -%endif - -%if %{with_storage_iscsi_direct} - %define arg_storage_iscsi_direct -Dstorage_iscsi_direct=enabled -Dlibiscsi=enabled -%else - %define arg_storage_iscsi_direct -Dstorage_iscsi_direct=disabled -Dlibiscsi=disabled -%endif - -%if %{with_libssh} - %define arg_libssh -Dlibssh=enabled -%else - %define arg_libssh -Dlibssh=disabled -%endif - -%if %{with_libssh2} - %define arg_libssh2 -Dlibssh2=enabled -%else - %define arg_libssh2 -Dlibssh2=disabled -%endif - -%if %{with_modular_daemons} - %define arg_remote_mode -Dremote_default_mode=direct -%else - %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} -%define arg_packager -Dpackager="%{who}, %{when}, %{where}" -%define arg_packager_version -Dpackager_version="%{release}" -%define arg_selinux_mount -Dselinux_mount="/sys/fs/selinux" - -# place macros above and build commands below this comment - -export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec) - -%if %{with_native} -%meson \ - -Drunstatedir=%{_rundir} \ - -Dinitconfdir=%{_sysconfdir}/sysconfig \ - -Dunitdir=%{_unitdir} \ - -Dsysusersdir=%{_sysusersdir} \ - %{?arg_qemu} \ - %{?arg_openvz} \ - %{?arg_lxc} \ - %{?arg_vbox} \ - %{?arg_libxl} \ - -Dsasl=enabled \ - -Dpolkit=enabled \ - -Ddriver_libvirtd=enabled \ - -Ddriver_remote=enabled \ - -Ddriver_test=enabled \ - %{?arg_esx} \ - %{?arg_hyperv} \ - %{?arg_vmware} \ - -Ddriver_vz=disabled \ - -Ddriver_bhyve=disabled \ - -Ddriver_ch=disabled \ - %{?arg_remote_mode} \ - -Ddriver_interface=enabled \ - -Ddriver_network=enabled \ - -Dstorage_fs=enabled \ - -Dstorage_lvm=enabled \ - -Dstorage_iscsi=enabled \ - %{?arg_storage_iscsi_direct} \ - -Dstorage_scsi=enabled \ - -Dstorage_disk=enabled \ - -Dstorage_mpath=enabled \ - %{?arg_storage_rbd} \ - %{?arg_storage_gluster} \ - %{?arg_storage_zfs} \ - -Dstorage_vstorage=disabled \ - %{?arg_numactl} \ - %{?arg_numad} \ - -Dcapng=enabled \ - %{?arg_fuse} \ - %{?arg_netcf} \ - -Dnls=enabled \ - -Dselinux=enabled \ - %{?arg_selinux_mount} \ - -Dapparmor=disabled \ - -Dapparmor_profiles=disabled \ - -Dsecdriver_apparmor=disabled \ - -Dudev=enabled \ - -Dyajl=enabled \ - %{?arg_sanlock} \ - -Dlibpcap=enabled \ - %{?arg_nbdkit} \ - %{?arg_nbdkit_config_default} \ - -Dlibnl=enabled \ - -Daudit=enabled \ - -Ddtrace=enabled \ - -Dfirewalld=enabled \ - %{?arg_firewalld_zone} \ - %{?arg_wireshark} \ - %{?arg_libssh} \ - %{?arg_libssh2} \ - -Dpm_utils=disabled \ - -Dnss=enabled \ - %{arg_packager} \ - %{arg_packager_version} \ - -Dqemu_user=%{qemu_user} \ - -Dqemu_group=%{qemu_group} \ - -Dqemu_moddir=%{qemu_moddir} \ - -Dqemu_datadir=%{qemu_datadir} \ - -Dtls_priority=%{tls_priority} \ - -Dsysctl_config=enabled \ - %{?arg_userfaultfd_sysctl} \ - -Dssh_proxy=enabled \ - %{?enable_werror} \ - -Dexpensive_tests=enabled \ - -Dinit_script=systemd \ - -Dfirewall_backend_priority=%{firewall_backend_priority} \ - -Ddocs=enabled \ - -Dtests=enabled \ - -Drpath=disabled \ - %{?arg_login_shell} - -%meson_build -%endif - -%if %{with_mingw32} || %{with_mingw64} -%mingw_meson \ - --auto-features=enabled \ - -Ddriver_remote=enabled \ - -Ddriver_test=enabled \ - -Ddriver_esx=enabled \ - -Dcurl=enabled \ - -Ddocs=enabled \ - -Dapparmor=disabled \ - -Dapparmor_profiles=disabled \ - -Dattr=disabled \ - -Daudit=disabled \ - -Dbash_completion=disabled \ - -Dblkid=disabled \ - -Dcapng=disabled \ - -Ddriver_bhyve=disabled \ - -Ddriver_hyperv=disabled \ - -Ddriver_interface=disabled \ - -Ddriver_libvirtd=disabled \ - -Ddriver_libxl=disabled \ - -Ddriver_lxc=disabled \ - -Ddriver_network=disabled \ - -Ddriver_openvz=disabled \ - -Ddriver_qemu=disabled \ - -Ddriver_secrets=disabled \ - -Ddriver_vbox=disabled \ - -Ddriver_vmware=disabled \ - -Ddriver_vz=disabled \ - -Ddtrace=disabled \ - -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=enabled \ - -Dnss=disabled \ - -Dnumactl=disabled \ - -Dnumad=disabled \ - -Dopenwsman=disabled \ - -Dpciaccess=disabled \ - -Dpm_utils=disabled \ - -Dpolkit=disabled \ - -Dreadline=disabled \ - -Drpath=disabled \ - -Dsanlock=disabled \ - -Dsasl=disabled \ - -Dsecdriver_apparmor=disabled \ - -Dsecdriver_selinux=disabled \ - -Dselinux=disabled \ - -Dstorage_dir=disabled \ - -Dstorage_disk=disabled \ - -Dstorage_fs=disabled \ - -Dstorage_gluster=disabled \ - -Dstorage_iscsi_direct=disabled \ - -Dstorage_iscsi=disabled \ - -Dstorage_lvm=disabled \ - -Dstorage_mpath=disabled \ - -Dstorage_rbd=disabled \ - -Dstorage_scsi=disabled \ - -Dstorage_vstorage=disabled \ - -Dstorage_zfs=disabled \ - -Dsysctl_config=disabled \ - -Duserfaultfd_sysctl=disabled \ - -Dssh_proxy=disabled \ - -Dtests=disabled \ - -Dudev=disabled \ - -Dwireshark_dissector=disabled \ - -Dyajl=disabled \ - %{?enable_werror} -%mingw_ninja -%endif - -%install -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 -# because if the admin wants to delete the default network completely, we don't -# want to end up re-incarnating it on every RPM upgrade. -install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/ -cp $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml \ - $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/default.xml -# libvirt saves this file with mode 0600 -chmod 0600 $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml - -# nwfilter files are installed in /usr/share/libvirt and copied to /etc in %%post -# to avoid verification errors on changed files in /etc -install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/libvirt/nwfilter/ -cp -a $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml \ - $RPM_BUILD_ROOT%{_datadir}/libvirt/nwfilter/ -# libvirt saves these files with mode 600 -chmod 600 $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml - - %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 -rm -f $RPM_BUILD_ROOT%{_sysusersdir}/libvirt-qemu.conf - %endif -%find_lang %{name} - - %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 - - %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 - - %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} -rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/lxc.conf -rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.lxc - %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 - -# Copied into libvirt-docs subpackage eventually -mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt libvirt-docs - - %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} -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_mingw32} || %{with_mingw64} -%mingw_ninja_install -%endif - -%if %{with_mingw32} -rm -rf $RPM_BUILD_ROOT%{mingw32_sysconfdir}/libvirt/nwfilter -rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/doc/* -rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/gtk-doc/* -rm -rf $RPM_BUILD_ROOT%{mingw32_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} - -%endif - -%check - -%if %{with_native} -# Building on slow archs, like emulated s390x in Fedora copr, requires -# raising the test timeout -export VIR_TEST_DEBUG=1 -%meson_test --no-suite syntax-check --timeout-multiplier 10 -%endif - -%define libvirt_rpmstatedir %{_localstatedir}/lib/rpm-state/libvirt - -# Mark units such that presets will later be applied to them. Meant -# to be called during %pre. Units that already exist on the system -# will not be marked, with the assumption that presets have already -# been applied at some point in the past. This makes it safe to call -# this macro for all units each time %pre runs. -%define libvirt_systemd_schedule_preset() \ - mkdir -p %{libvirt_rpmstatedir} || : \ - for unit in %{?*}; do \ - if ! test -e %{_unitdir}/$unit; then \ - touch %{libvirt_rpmstatedir}/preset-$unit || : \ - fi \ - done \ - %{nil} - -# Apply presets for units that have previously been marked. Meant to -# be called during %posttrans. Note that foo.service must be passed -# as the first argument, before all the various foo*.socket -# associated with it, for things to work correctly. This is necessary -# because Also=foo.socket is usually present in foo.service's -# [Install] section, and we want that configuration to take -# precedence over foo.socket's own presets. -%define libvirt_systemd_perform_preset() \ - %{?7:%{error:Too many arguments}} \ - for unit in %{?2} %{?3} %{?4} %{?5} %{?6} %1; do \ - if test -e %{libvirt_rpmstatedir}/preset-$unit; then \ - /usr/bin/systemctl --no-reload preset $unit || : \ - fi \ - rm -f %{libvirt_rpmstatedir}/preset-$unit \ - done \ - rmdir %{libvirt_rpmstatedir} 2>/dev/null || : \ - %{nil} - -# Mark a single unit for restart. Meant to be called during %pre. -%define libvirt_systemd_schedule_restart() \ - mkdir -p %{libvirt_rpmstatedir} || : \ - touch %{libvirt_rpmstatedir}/restart-%1 || : \ - %{nil} - -# Restart a unit that was previously marked. Meant to be called -# during %posttrans. If systemd is not running, no action will be -# performed. -%define libvirt_systemd_perform_restart() \ - if test -d /run/systemd/system && \ - test -e %{libvirt_rpmstatedir}/restart-%1; then \ - /usr/bin/systemctl try-restart %1 >/dev/null 2>&1 || : \ - fi \ - rm -f %{libvirt_rpmstatedir}/restart-%1 \ - rmdir %{libvirt_rpmstatedir} 2>/dev/null || : \ - %{nil} - -# Mark a single unit for reload. Meant to be called during %pre. -%define libvirt_systemd_schedule_reload() \ - mkdir -p %{libvirt_rpmstatedir} || : \ - touch %{libvirt_rpmstatedir}/reload-%1 || : \ - %{nil} - -# Reload a unit that was previously marked. Meant to be called during -# %posttrans. If systemd is not running, no action will be performed. -%define libvirt_systemd_perform_reload() \ - if test -d /run/systemd/system && \ - test -e %{libvirt_rpmstatedir}/reload-%1; then \ - /usr/bin/systemctl try-reload-or-restart %1 >/dev/null 2>&1 || : \ - fi \ - rm -f %{libvirt_rpmstatedir}/reload-%1 \ - rmdir %{libvirt_rpmstatedir} 2>/dev/null || : \ - %{nil} - -# Disable a single unit, optionally stopping it if systemd is -# running. Meant to be called during %preun. -%define libvirt_systemd_disable() \ - if test -d /run/systemd/system; then \ - /usr/bin/systemctl --no-reload disable --now %{?*} || : \ - else \ - /usr/bin/systemctl --no-reload disable %{?*} || : \ - fi \ - %{nil} - -# %pre implementation for services that should be restarted on -# upgrade. Note that foo.service must be passed as the first -# argument, before all the various foo*.socket associated with it. -%define libvirt_systemd_restart_pre() \ - %libvirt_systemd_schedule_preset %{?*} \ - %libvirt_systemd_schedule_restart %1 \ - %{nil} - -# %pre implementation for services that should be reloaded on -# upgrade. Note that foo.service must be passed as the first -# argument, before all the various foo*.socket associated with it. -%define libvirt_systemd_reload_pre() \ - %libvirt_systemd_schedule_preset %{?*} \ - %libvirt_systemd_schedule_reload %1 \ - %{nil} - -# %pre implementation for services that should be neither restarted -# nor reloaded on upgrade. -%define libvirt_systemd_noaction_pre() \ - %libvirt_systemd_schedule_preset %{?*} \ - %{nil} - -# %posttrans implementation for all services. We can use a single -# macro to cover all scenarios, because each operation will only be -# performed if it had previously been scheduled. Note that -# foo.service must be passed as the first argument, before all the -# various foo*.socket associated with it. -%define libvirt_systemd_posttrans() \ - %libvirt_systemd_perform_preset %{?*} \ - %libvirt_systemd_perform_reload %1 \ - %libvirt_systemd_perform_restart %1 \ - %{nil} - -# %preun implementation for all services. -%define libvirt_systemd_preun() \ - if [ $1 -lt 1 ]; then \ - %libvirt_systemd_disable %{?*} \ - fi \ - %{nil} - -# For daemons with only UNIX sockets - -%define libvirt_systemd_unix_pre() %libvirt_systemd_restart_pre %1.service %1.socket %1-ro.socket %1-admin.socket -%define libvirt_systemd_unix_posttrans() %libvirt_systemd_posttrans %1.service %1.socket %1-ro.socket %1-admin.socket -%define libvirt_systemd_unix_preun() %libvirt_systemd_preun %1.service %1.socket %1-ro.socket %1-admin.socket - -# For daemons with UNIX and INET sockets -%define libvirt_systemd_inet_pre() %libvirt_systemd_restart_pre %1.service %1.socket %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket -%define libvirt_systemd_inet_posttrans() %libvirt_systemd_posttrans %1.service %1.socket %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket -%define libvirt_systemd_inet_preun() %libvirt_systemd_preun %1.service %1.socket %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket - -# For daemons with only UNIX sockets and no unprivileged read-only access -%define libvirt_systemd_privileged_pre() %libvirt_systemd_reload_pre %1.service %1.socket %1-admin.socket -%define libvirt_systemd_privileged_posttrans() %libvirt_systemd_posttrans %1.service %1.socket %1-admin.socket -%define libvirt_systemd_privileged_preun() %libvirt_systemd_preun %1.service %1.socket %1-admin.socket - -# For one-shot daemons that have no associated sockets and should never be restarted -%define libvirt_systemd_oneshot_pre() %libvirt_systemd_noaction_pre %1.service -%define libvirt_systemd_oneshot_posttrans() %libvirt_systemd_posttrans %1.service -%define libvirt_systemd_oneshot_preun() %libvirt_systemd_preun %1.service - -# For packages that install configuration for other daemons -%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 - -%posttrans daemon -%libvirt_sysconfig_posttrans libvirtd -%libvirt_systemd_inet_posttrans libvirtd - -%preun daemon -%libvirt_systemd_inet_preun libvirtd - -%pre daemon-common -%libvirt_sysconfig_pre libvirt-guests -%libvirt_systemd_oneshot_pre libvirt-guests -# 'libvirt' group is just to allow password-less polkit access to libvirt -# daemons. The uid number is irrelevant, so we use dynamic allocation. -getent group libvirt >/dev/null || groupadd -r libvirt -exit 0 - -%posttrans daemon-common -%libvirt_sysconfig_posttrans libvirt-guests -%libvirt_systemd_oneshot_posttrans libvirt-guests - -%preun daemon-common -%libvirt_systemd_oneshot_preun libvirt-guests - -%pre daemon-lock -%libvirt_sysconfig_pre virtlockd -%libvirt_systemd_privileged_pre virtlockd - -%posttrans daemon-lock -%libvirt_sysconfig_posttrans virtlockd -%libvirt_systemd_privileged_posttrans virtlockd - -%preun daemon-lock -%libvirt_systemd_privileged_preun virtlockd - -%pre daemon-log -%libvirt_sysconfig_pre virtlogd -%libvirt_systemd_privileged_pre virtlogd - -%posttrans daemon-log -%libvirt_sysconfig_posttrans virtlogd -%libvirt_systemd_privileged_posttrans virtlogd - -%preun daemon-log -%libvirt_systemd_privileged_preun virtlogd - -%pre daemon-proxy -%libvirt_sysconfig_pre virtproxyd -%libvirt_systemd_inet_pre virtproxyd - -%posttrans daemon-proxy -%libvirt_sysconfig_posttrans virtproxyd -%libvirt_systemd_inet_posttrans virtproxyd - -%preun daemon-proxy -%libvirt_systemd_inet_preun virtproxyd - -%pre daemon-driver-network -%libvirt_sysconfig_pre virtnetworkd -%libvirt_systemd_unix_pre virtnetworkd - -%post daemon-driver-network - %if %{with_firewalld_zone} - %firewalld_reload - %endif - -%posttrans daemon-driver-network -%libvirt_sysconfig_posttrans virtnetworkd -%libvirt_systemd_unix_posttrans virtnetworkd - -%preun daemon-driver-network -%libvirt_systemd_unix_preun virtnetworkd - -%postun daemon-driver-network - %if %{with_firewalld_zone} - %firewalld_reload - %endif - -%pre daemon-driver-nwfilter -%libvirt_sysconfig_pre virtnwfilterd -%libvirt_systemd_unix_pre virtnwfilterd - -%posttrans daemon-driver-nwfilter -%libvirt_sysconfig_posttrans virtnwfilterd -%libvirt_systemd_unix_posttrans virtnwfilterd - -%preun daemon-driver-nwfilter -%libvirt_systemd_unix_preun virtnwfilterd - -%pre daemon-driver-nodedev -%libvirt_sysconfig_pre virtnodedevd -%libvirt_systemd_unix_pre virtnodedevd - -%posttrans daemon-driver-nodedev -%libvirt_sysconfig_posttrans virtnodedevd -%libvirt_systemd_unix_posttrans virtnodedevd - -%preun daemon-driver-nodedev -%libvirt_systemd_unix_preun virtnodedevd - -%pre daemon-driver-interface -%libvirt_sysconfig_pre virtinterfaced -%libvirt_systemd_unix_pre virtinterfaced - -%posttrans daemon-driver-interface -%libvirt_sysconfig_posttrans virtinterfaced -%libvirt_systemd_unix_posttrans virtinterfaced - -%preun daemon-driver-interface -%libvirt_systemd_unix_preun virtinterfaced - -%pre daemon-driver-secret -%libvirt_sysconfig_pre virtsecretd -%libvirt_systemd_unix_pre virtsecretd - -%posttrans daemon-driver-secret -%libvirt_sysconfig_posttrans virtsecretd -%libvirt_systemd_unix_posttrans virtsecretd - -%preun daemon-driver-secret -%libvirt_systemd_unix_preun virtsecretd - -%pre daemon-driver-storage-core -%libvirt_sysconfig_pre virtstoraged -%libvirt_systemd_unix_pre virtstoraged - -%posttrans daemon-driver-storage-core -%libvirt_sysconfig_posttrans virtstoraged -%libvirt_systemd_unix_posttrans virtstoraged - -%preun daemon-driver-storage-core -%libvirt_systemd_unix_preun virtstoraged - - %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://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' || : - fi -fi -exit 0 - -%posttrans daemon-driver-qemu -%libvirt_sysconfig_posttrans virtqemud -%libvirt_systemd_unix_posttrans virtqemud - -%preun daemon-driver-qemu -%libvirt_systemd_unix_preun virtqemud - %endif - - %if %{with_lxc} -%pre daemon-driver-lxc -%libvirt_sysconfig_pre virtlxcd -%libvirt_systemd_unix_pre virtlxcd - -%posttrans daemon-driver-lxc -%libvirt_sysconfig_posttrans virtlxcd -%libvirt_systemd_unix_posttrans virtlxcd - -%preun daemon-driver-lxc -%libvirt_systemd_unix_preun virtlxcd - %endif - - %if %{with_vbox} -%pre daemon-driver-vbox -%libvirt_sysconfig_pre virtvboxd -%libvirt_systemd_unix_pre virtvboxd - -%posttrans daemon-driver-vbox -%libvirt_sysconfig_posttrans virtvboxd -%libvirt_systemd_unix_posttrans virtvboxd - -%preun daemon-driver-vbox -%libvirt_systemd_unix_preun virtvboxd - %endif - - %if %{with_libxl} -%pre daemon-driver-libxl -%libvirt_sysconfig_pre virtxend -%libvirt_systemd_unix_pre virtxend - -%posttrans daemon-driver-libxl -%libvirt_sysconfig_posttrans virtxend -%libvirt_systemd_unix_posttrans virtxend - -%preun daemon-driver-libxl -%libvirt_systemd_unix_preun virtxend - %endif - -%pre daemon-config-network -%libvirt_systemd_config_pre libvirtd -%libvirt_systemd_config_pre virtnetworkd - -%post daemon-config-network -if test $1 -eq 1 && test ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ; then - # see if the network used by default network creates a conflict, - # and try to resolve it - # NB: 192.168.122.0/24 is used in the default.xml template file; - # do not modify any of those values here without also modifying - # them in the template. - orig_sub=122 - sub=${orig_sub} - nl=' -' - routes="${nl}$(ip route show | cut -d' ' -f1)${nl}" - case ${routes} in - *"${nl}192.168.${orig_sub}.0/24${nl}"*) - # there was a match, so we need to look for an unused subnet - for new_sub in $(seq 124 254); do - case ${routes} in - *"${nl}192.168.${new_sub}.0/24${nl}"*) - ;; - *) - sub=$new_sub - break; - ;; - esac - done - ;; - *) - ;; - esac - - sed -e "s/${orig_sub}/${sub}/g" \ - < %{_datadir}/libvirt/networks/default.xml \ - > %{_sysconfdir}/libvirt/qemu/networks/default.xml - ln -s ../default.xml %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml - # libvirt saves this file with mode 0600 - chmod 0600 %{_sysconfdir}/libvirt/qemu/networks/default.xml -fi - -%posttrans daemon-config-network -%libvirt_systemd_config_posttrans libvirtd -%libvirt_systemd_config_posttrans virtnetworkd - -%pre daemon-config-nwfilter -%libvirt_systemd_config_pre libvirtd -%libvirt_systemd_config_pre virtnwfilterd - -%post daemon-config-nwfilter -for datadir_file in %{_datadir}/libvirt/nwfilter/*.xml; do - sysconfdir_file=%{_sysconfdir}/libvirt/nwfilter/$(basename "$datadir_file") - if [ ! -f "$sysconfdir_file" ]; then - # libvirt saves these files with mode 600 - install -m 0600 "$datadir_file" "$sysconfdir_file" - fi -done - -%posttrans daemon-config-nwfilter -%libvirt_systemd_config_posttrans libvirtd -%libvirt_systemd_config_posttrans virtnwfilterd - - %if %{with_lxc} -%pre login-shell -getent group virtlogin >/dev/null || groupadd -r virtlogin -exit 0 - %endif -%endif - -%if %{with_native} -%files - -%files docs -%doc AUTHORS.rst NEWS.rst README.rst -%doc libvirt-docs/* - -%files daemon -%{_unitdir}/libvirtd.service -%{_unitdir}/libvirtd.socket -%{_unitdir}/libvirtd-ro.socket -%{_unitdir}/libvirtd-admin.socket -%{_unitdir}/libvirtd-tcp.socket -%{_unitdir}/libvirtd-tls.socket -%config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf -%config(noreplace) %{_prefix}/lib/sysctl.d/60-libvirtd.conf -%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd -%{_datadir}/augeas/lenses/libvirtd.aug -%{_datadir}/augeas/lenses/tests/test_libvirtd.aug -%attr(0755, root, root) %{_sbindir}/libvirtd -%{_mandir}/man8/libvirtd.8* - -%files daemon-common -%{_unitdir}/virt-guest-shutdown.target -%{_unitdir}/libvirt-guests.service -%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf -%dir %{_datadir}/libvirt/ -%ghost %dir %{_rundir}/libvirt/ -%ghost %dir %{_rundir}/libvirt/common/ -%dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/ -%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/images/ -%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/filesystems/ -%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/boot/ -%dir %attr(0711, root, root) %{_localstatedir}/cache/libvirt/ -%dir %attr(0755, root, root) %{_libdir}/libvirt/ -%dir %attr(0755, root, root) %{_libdir}/libvirt/connection-driver/ -%dir %attr(0755, root, root) %{_libdir}/libvirt/storage-backend/ -%dir %attr(0755, root, root) %{_libdir}/libvirt/storage-file/ -%{_datadir}/polkit-1/actions/org.libvirt.unix.policy -%{_datadir}/polkit-1/actions/org.libvirt.api.policy -%{_datadir}/polkit-1/rules.d/50-libvirt.rules -%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/ -%attr(0755, root, root) %{_libexecdir}/libvirt_iohelper -%attr(0755, root, root) %{_bindir}/virt-ssh-helper -%attr(0755, root, root) %{_libexecdir}/libvirt-guests.sh -%{_mandir}/man1/virt-admin.1* -%{_mandir}/man1/virt-host-validate.1* -%{_mandir}/man8/virt-ssh-helper.8* -%{_mandir}/man8/libvirt-guests.8* -%{_bindir}/virt-host-validate -%{_bindir}/virt-admin -%{_datadir}/bash-completion/completions/virt-admin - -%files daemon-lock -%{_unitdir}/virtlockd.service -%{_unitdir}/virtlockd.socket -%{_unitdir}/virtlockd-admin.socket -%config(noreplace) %{_sysconfdir}/libvirt/virtlockd.conf -%{_datadir}/augeas/lenses/virtlockd.aug -%{_datadir}/augeas/lenses/tests/test_virtlockd.aug -%{_datadir}/augeas/lenses/libvirt_lockd.aug - %if %{with_qemu} -%{_datadir}/augeas/lenses/tests/test_libvirt_lockd.aug - %endif -%attr(0755, root, root) %{_sbindir}/virtlockd -%{_mandir}/man8/virtlockd.8* - -%files daemon-plugin-lockd -%dir %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/ -%attr(0755, root, root) %{_libdir}/libvirt/lock-driver/lockd.so - -%files daemon-log -%{_unitdir}/virtlogd.service -%{_unitdir}/virtlogd.socket -%{_unitdir}/virtlogd-admin.socket -%config(noreplace) %{_sysconfdir}/libvirt/virtlogd.conf -%{_datadir}/augeas/lenses/virtlogd.aug -%{_datadir}/augeas/lenses/tests/test_virtlogd.aug -%attr(0755, root, root) %{_sbindir}/virtlogd -%{_mandir}/man8/virtlogd.8* - -%files daemon-proxy -%{_unitdir}/virtproxyd.service -%{_unitdir}/virtproxyd.socket -%{_unitdir}/virtproxyd-ro.socket -%{_unitdir}/virtproxyd-admin.socket -%{_unitdir}/virtproxyd-tcp.socket -%{_unitdir}/virtproxyd-tls.socket -%config(noreplace) %{_sysconfdir}/libvirt/virtproxyd.conf -%{_datadir}/augeas/lenses/virtproxyd.aug -%{_datadir}/augeas/lenses/tests/test_virtproxyd.aug -%attr(0755, root, root) %{_sbindir}/virtproxyd -%{_mandir}/man8/virtproxyd.8* - -%files daemon-config-network -%dir %{_datadir}/libvirt/networks/ -%{_datadir}/libvirt/networks/default.xml -%ghost %{_sysconfdir}/libvirt/qemu/networks/default.xml -%ghost %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml - -%files daemon-config-nwfilter -%dir %{_datadir}/libvirt/nwfilter/ -%{_datadir}/libvirt/nwfilter/*.xml -%ghost %{_sysconfdir}/libvirt/nwfilter/*.xml - -%files daemon-driver-interface -%config(noreplace) %{_sysconfdir}/libvirt/virtinterfaced.conf -%{_datadir}/augeas/lenses/virtinterfaced.aug -%{_datadir}/augeas/lenses/tests/test_virtinterfaced.aug -%{_unitdir}/virtinterfaced.service -%{_unitdir}/virtinterfaced.socket -%{_unitdir}/virtinterfaced-ro.socket -%{_unitdir}/virtinterfaced-admin.socket -%attr(0755, root, root) %{_sbindir}/virtinterfaced -%ghost %dir %{_rundir}/libvirt/interface/ -%{_libdir}/libvirt/connection-driver/libvirt_driver_interface.so -%{_mandir}/man8/virtinterfaced.8* - -%files daemon-driver-network -%config(noreplace) %{_sysconfdir}/libvirt/virtnetworkd.conf -%{_datadir}/augeas/lenses/virtnetworkd.aug -%{_datadir}/augeas/lenses/tests/test_virtnetworkd.aug -%config(noreplace) %{_sysconfdir}/libvirt/network.conf -%{_datadir}/augeas/lenses/libvirtd_network.aug -%{_datadir}/augeas/lenses/tests/test_libvirtd_network.aug -%{_unitdir}/virtnetworkd.service -%{_unitdir}/virtnetworkd.socket -%{_unitdir}/virtnetworkd-ro.socket -%{_unitdir}/virtnetworkd-admin.socket -%attr(0755, root, root) %{_sbindir}/virtnetworkd -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/autostart -%ghost %dir %{_rundir}/libvirt/network/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/network/ -%dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/dnsmasq/ -%attr(0755, root, root) %{_libexecdir}/libvirt_leaseshelper -%{_libdir}/libvirt/connection-driver/libvirt_driver_network.so -%{_mandir}/man8/virtnetworkd.8* - %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 - -%files daemon-driver-nodedev -%config(noreplace) %{_sysconfdir}/libvirt/virtnodedevd.conf -%{_datadir}/augeas/lenses/virtnodedevd.aug -%{_datadir}/augeas/lenses/tests/test_virtnodedevd.aug -%{_unitdir}/virtnodedevd.service -%{_unitdir}/virtnodedevd.socket -%{_unitdir}/virtnodedevd-ro.socket -%{_unitdir}/virtnodedevd-admin.socket -%attr(0755, root, root) %{_sbindir}/virtnodedevd -%ghost %dir %{_rundir}/libvirt/nodedev/ -%{_libdir}/libvirt/connection-driver/libvirt_driver_nodedev.so -%{_mandir}/man8/virtnodedevd.8* - -%files daemon-driver-nwfilter -%config(noreplace) %{_sysconfdir}/libvirt/virtnwfilterd.conf -%{_datadir}/augeas/lenses/virtnwfilterd.aug -%{_datadir}/augeas/lenses/tests/test_virtnwfilterd.aug -%{_unitdir}/virtnwfilterd.service -%{_unitdir}/virtnwfilterd.socket -%{_unitdir}/virtnwfilterd-ro.socket -%{_unitdir}/virtnwfilterd-admin.socket -%attr(0755, root, root) %{_sbindir}/virtnwfilterd -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/ -%ghost %dir %{_rundir}/libvirt/network/ -%ghost %dir %{_rundir}/libvirt/nwfilter-binding/ -%ghost %dir %{_rundir}/libvirt/nwfilter/ -%{_libdir}/libvirt/connection-driver/libvirt_driver_nwfilter.so -%{_mandir}/man8/virtnwfilterd.8* - -%files daemon-driver-secret -%config(noreplace) %{_sysconfdir}/libvirt/virtsecretd.conf -%{_datadir}/augeas/lenses/virtsecretd.aug -%{_datadir}/augeas/lenses/tests/test_virtsecretd.aug -%{_unitdir}/virtsecretd.service -%{_unitdir}/virtsecretd.socket -%{_unitdir}/virtsecretd-ro.socket -%{_unitdir}/virtsecretd-admin.socket -%attr(0755, root, root) %{_sbindir}/virtsecretd -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/secrets/ -%ghost %dir %{_rundir}/libvirt/secrets/ -%{_libdir}/libvirt/connection-driver/libvirt_driver_secret.so -%{_mandir}/man8/virtsecretd.8* - -%files daemon-driver-storage - -%files daemon-driver-storage-core -%config(noreplace) %{_sysconfdir}/libvirt/virtstoraged.conf -%{_datadir}/augeas/lenses/virtstoraged.aug -%{_datadir}/augeas/lenses/tests/test_virtstoraged.aug -%{_unitdir}/virtstoraged.service -%{_unitdir}/virtstoraged.socket -%{_unitdir}/virtstoraged-ro.socket -%{_unitdir}/virtstoraged-admin.socket -%attr(0755, root, root) %{_sbindir}/virtstoraged -%attr(0755, root, root) %{_libexecdir}/libvirt_parthelper -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/storage/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/storage/autostart/ -%ghost %dir %{_rundir}/libvirt/storage/ -%{_libdir}/libvirt/connection-driver/libvirt_driver_storage.so -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_fs.so -%{_libdir}/libvirt/storage-file/libvirt_storage_file_fs.so -%{_mandir}/man8/virtstoraged.8* - -%files daemon-driver-storage-disk -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_disk.so - -%files daemon-driver-storage-logical -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_logical.so - -%files daemon-driver-storage-scsi -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_scsi.so - -%files daemon-driver-storage-iscsi -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_iscsi.so - - %if %{with_storage_iscsi_direct} -%files daemon-driver-storage-iscsi-direct -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_iscsi-direct.so - %endif - -%files daemon-driver-storage-mpath -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_mpath.so - - %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 - - %if %{with_storage_rbd} -%files daemon-driver-storage-rbd -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_rbd.so - %endif - - %if %{with_storage_zfs} -%files daemon-driver-storage-zfs -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_zfs.so - %endif - - %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 -%{_unitdir}/virtqemud.socket -%{_unitdir}/virtqemud-ro.socket -%{_unitdir}/virtqemud-admin.socket -%attr(0755, root, root) %{_sbindir}/virtqemud -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/autostart/ -%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/qemu/ -%config(noreplace) %{_sysconfdir}/libvirt/qemu.conf -%config(noreplace) %{_sysconfdir}/libvirt/qemu-lockd.conf -%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.qemu -%ghost %dir %{_rundir}/libvirt/qemu/ -%ghost %dir %{_rundir}/libvirt/qemu/dbus/ -%ghost %dir %{_rundir}/libvirt/qemu/passt/ -%ghost %dir %{_rundir}/libvirt/qemu/slirp/ -%ghost %dir %{_rundir}/libvirt/qemu/swtpm/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/checkpoint/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/dump/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/nvram/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/ram/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/save/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/snapshot/ -%dir %attr(0750, root, root) %{_localstatedir}/cache/libvirt/qemu/ -%{_datadir}/augeas/lenses/libvirtd_qemu.aug -%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug -%{_libdir}/libvirt/connection-driver/libvirt_driver_qemu.so -%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/swtpm/ -%dir %attr(0730, tss, tss) %{_localstatedir}/log/swtpm/libvirt/qemu/ -%{_bindir}/virt-qemu-run -%{_mandir}/man1/virt-qemu-run.1* -%{_mandir}/man8/virtqemud.8* -%{_sysusersdir}/libvirt-qemu.conf - %endif - - %if %{with_lxc} -%files daemon-driver-lxc -%config(noreplace) %{_sysconfdir}/libvirt/virtlxcd.conf -%{_datadir}/augeas/lenses/virtlxcd.aug -%{_datadir}/augeas/lenses/tests/test_virtlxcd.aug -%{_unitdir}/virtlxcd.service -%{_unitdir}/virtlxcd.socket -%{_unitdir}/virtlxcd-ro.socket -%{_unitdir}/virtlxcd-admin.socket -%attr(0755, root, root) %{_sbindir}/virtlxcd -%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/lxc/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/lxc/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/lxc/autostart/ -%config(noreplace) %{_sysconfdir}/libvirt/lxc.conf -%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.lxc -%ghost %dir %{_rundir}/libvirt/lxc/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/lxc/ -%{_datadir}/augeas/lenses/libvirtd_lxc.aug -%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug -%attr(0755, root, root) %{_libexecdir}/libvirt_lxc -%{_libdir}/libvirt/connection-driver/libvirt_driver_lxc.so -%{_mandir}/man8/virtlxcd.8* - %endif - - %if %{with_libxl} -%files daemon-driver-libxl -%config(noreplace) %{_sysconfdir}/libvirt/virtxend.conf -%{_datadir}/augeas/lenses/virtxend.aug -%{_datadir}/augeas/lenses/tests/test_virtxend.aug -%{_unitdir}/virtxend.service -%{_unitdir}/virtxend.socket -%{_unitdir}/virtxend-ro.socket -%{_unitdir}/virtxend-admin.socket -%attr(0755, root, root) %{_sbindir}/virtxend -%config(noreplace) %{_sysconfdir}/libvirt/libxl.conf -%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.libxl -%config(noreplace) %{_sysconfdir}/libvirt/libxl-lockd.conf -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/libxl/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/libxl/autostart/ -%{_datadir}/augeas/lenses/libvirtd_libxl.aug -%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug -%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/libxl/ -%ghost %dir %{_rundir}/libvirt/libxl/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/channel/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/channel/target/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/dump/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/save/ -%{_libdir}/libvirt/connection-driver/libvirt_driver_libxl.so -%{_mandir}/man8/virtxend.8* - %endif - - %if %{with_vbox} -%files daemon-driver-vbox -%config(noreplace) %{_sysconfdir}/libvirt/virtvboxd.conf -%{_datadir}/augeas/lenses/virtvboxd.aug -%{_datadir}/augeas/lenses/tests/test_virtvboxd.aug -%{_unitdir}/virtvboxd.service -%{_unitdir}/virtvboxd.socket -%{_unitdir}/virtvboxd-ro.socket -%{_unitdir}/virtvboxd-admin.socket -%attr(0755, root, root) %{_sbindir}/virtvboxd -%{_libdir}/libvirt/connection-driver/libvirt_driver_vbox.so -%{_mandir}/man8/virtvboxd.8* - %endif - - %if %{with_qemu_tcg} -%files daemon-qemu - %endif - - %if %{with_qemu_kvm} -%files daemon-kvm - %endif - - %if %{with_lxc} -%files daemon-lxc - %endif - - %if %{with_libxl} -%files daemon-xen - %endif - - %if %{with_vbox} -%files daemon-vbox - %endif - - %if %{with_sanlock} -%files daemon-plugin-sanlock - %if %{with_qemu} -%config(noreplace) %{_sysconfdir}/libvirt/qemu-sanlock.conf - %endif - %if %{with_libxl} -%config(noreplace) %{_sysconfdir}/libvirt/libxl-sanlock.conf - %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 -%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug -%dir %attr(0770, root, sanlock) %{_localstatedir}/lib/libvirt/sanlock -%{_sbindir}/virt-sanlock-cleanup -%{_mandir}/man8/virt-sanlock-cleanup.8* -%attr(0755, root, root) %{_libexecdir}/libvirt_sanlock_helper - %endif - -%files client -%{_mandir}/man1/virsh.1* -%{_mandir}/man1/virt-xml-validate.1* -%{_mandir}/man1/virt-pki-query-dn.1* -%{_mandir}/man1/virt-pki-validate.1* -%{_mandir}/man7/virkey*.7* -%{_bindir}/virsh -%{_bindir}/virt-xml-validate -%{_bindir}/virt-pki-query-dn -%{_bindir}/virt-pki-validate -%{_datadir}/bash-completion/completions/virsh - - %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 - -%files libs -f %{name}.lang -%license COPYING COPYING.LESSER -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/ -%config(noreplace) %{_sysconfdir}/libvirt/libvirt.conf -%config(noreplace) %{_sysconfdir}/libvirt/libvirt-admin.conf -%{_libdir}/libvirt.so.* -%{_libdir}/libvirt-qemu.so.* -%{_libdir}/libvirt-lxc.so.* -%{_libdir}/libvirt-admin.so.* -%dir %{_datadir}/libvirt/ -%dir %{_datadir}/libvirt/schemas/ -%{_datadir}/systemtap/tapset/libvirt_probes*.stp -%{_datadir}/systemtap/tapset/libvirt_functions.stp - %if %{with_qemu} -%{_datadir}/systemtap/tapset/libvirt_qemu_probes*.stp - %endif -%{_datadir}/libvirt/schemas/*.rng -%{_datadir}/libvirt/cpu_map/*.xml -%{_datadir}/libvirt/test-screenshot.png - - %if %{with_wireshark} -%files wireshark -%{wireshark_plugindir}/libvirt.so - %endif - -%files nss -%{_libdir}/libnss_libvirt.so.2 -%{_libdir}/libnss_libvirt_guest.so.2 - -%files ssh-proxy -%config(noreplace) %{_sysconfdir}/ssh/ssh_config.d/30-libvirt-ssh-proxy.conf -%{_libexecdir}/libvirt-ssh-proxy - - %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 - -%files devel -%{_libdir}/libvirt.so -%{_libdir}/libvirt-admin.so -%{_libdir}/libvirt-qemu.so -%{_libdir}/libvirt-lxc.so -%dir %{_includedir}/libvirt -%{_includedir}/libvirt/virterror.h -%{_includedir}/libvirt/libvirt.h -%{_includedir}/libvirt/libvirt-admin.h -%{_includedir}/libvirt/libvirt-common.h -%{_includedir}/libvirt/libvirt-domain.h -%{_includedir}/libvirt/libvirt-domain-checkpoint.h -%{_includedir}/libvirt/libvirt-domain-snapshot.h -%{_includedir}/libvirt/libvirt-event.h -%{_includedir}/libvirt/libvirt-host.h -%{_includedir}/libvirt/libvirt-interface.h -%{_includedir}/libvirt/libvirt-network.h -%{_includedir}/libvirt/libvirt-nodedev.h -%{_includedir}/libvirt/libvirt-nwfilter.h -%{_includedir}/libvirt/libvirt-secret.h -%{_includedir}/libvirt/libvirt-storage.h -%{_includedir}/libvirt/libvirt-stream.h -%{_includedir}/libvirt/libvirt-qemu.h -%{_includedir}/libvirt/libvirt-lxc.h -%{_libdir}/pkgconfig/libvirt.pc -%{_libdir}/pkgconfig/libvirt-admin.pc -%{_libdir}/pkgconfig/libvirt-qemu.pc -%{_libdir}/pkgconfig/libvirt-lxc.pc -%dir %{_datadir}/libvirt/api/ -%{_datadir}/libvirt/api/libvirt-api.xml -%{_datadir}/libvirt/api/libvirt-admin-api.xml -%{_datadir}/libvirt/api/libvirt-qemu-api.xml -%{_datadir}/libvirt/api/libvirt-lxc-api.xml -%endif - -%if %{with_mingw32} -%files -n mingw32-libvirt -f mingw32-libvirt.lang -%dir %{mingw32_sysconfdir}/libvirt/ -%config(noreplace) %{mingw32_sysconfdir}/libvirt/libvirt.conf -%config(noreplace) %{mingw32_sysconfdir}/libvirt/libvirt-admin.conf -%{mingw32_bindir}/libvirt-0.dll -%{mingw32_bindir}/virsh.exe -%{mingw32_bindir}/virt-admin.exe -%{mingw32_bindir}/virt-xml-validate -%{mingw32_bindir}/virt-pki-query-dn.exe -%{mingw32_bindir}/virt-pki-validate.exe -%{mingw32_bindir}/libvirt-lxc-0.dll -%{mingw32_bindir}/libvirt-qemu-0.dll -%{mingw32_bindir}/libvirt-admin-0.dll -%{mingw32_libdir}/libvirt.dll.a -%{mingw32_libdir}/pkgconfig/libvirt.pc -%{mingw32_libdir}/pkgconfig/libvirt-qemu.pc -%{mingw32_libdir}/pkgconfig/libvirt-lxc.pc -%{mingw32_libdir}/pkgconfig/libvirt-admin.pc -%{mingw32_libdir}/libvirt-lxc.dll.a -%{mingw32_libdir}/libvirt-qemu.dll.a -%{mingw32_libdir}/libvirt-admin.dll.a -%dir %{mingw32_datadir}/libvirt/ -%dir %{mingw32_datadir}/libvirt/schemas/ -%{mingw32_datadir}/libvirt/schemas/*.rng -%dir %{mingw32_datadir}/libvirt/api/ -%{mingw32_datadir}/libvirt/api/libvirt-api.xml -%{mingw32_datadir}/libvirt/api/libvirt-lxc-api.xml -%{mingw32_datadir}/libvirt/api/libvirt-qemu-api.xml -%{mingw32_datadir}/libvirt/api/libvirt-admin-api.xml -%{mingw32_datadir}/libvirt/cpu_map/*.xml -%{mingw32_datadir}/libvirt/test-screenshot.png -%dir %{mingw32_includedir}/libvirt -%{mingw32_includedir}/libvirt/libvirt.h -%{mingw32_includedir}/libvirt/libvirt-common.h -%{mingw32_includedir}/libvirt/libvirt-domain.h -%{mingw32_includedir}/libvirt/libvirt-domain-checkpoint.h -%{mingw32_includedir}/libvirt/libvirt-domain-snapshot.h -%{mingw32_includedir}/libvirt/libvirt-event.h -%{mingw32_includedir}/libvirt/libvirt-host.h -%{mingw32_includedir}/libvirt/libvirt-interface.h -%{mingw32_includedir}/libvirt/libvirt-network.h -%{mingw32_includedir}/libvirt/libvirt-nodedev.h -%{mingw32_includedir}/libvirt/libvirt-nwfilter.h -%{mingw32_includedir}/libvirt/libvirt-secret.h -%{mingw32_includedir}/libvirt/libvirt-storage.h -%{mingw32_includedir}/libvirt/libvirt-stream.h -%{mingw32_includedir}/libvirt/virterror.h -%{mingw32_includedir}/libvirt/libvirt-lxc.h -%{mingw32_includedir}/libvirt/libvirt-qemu.h -%{mingw32_includedir}/libvirt/libvirt-admin.h -%{mingw32_mandir}/man1/virsh.1* -%{mingw32_mandir}/man1/virt-admin.1* -%{mingw32_mandir}/man1/virt-xml-validate.1* -%{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 -%config(noreplace) %{mingw64_sysconfdir}/libvirt/libvirt-admin.conf -%{mingw64_bindir}/libvirt-0.dll -%{mingw64_bindir}/virsh.exe -%{mingw64_bindir}/virt-admin.exe -%{mingw64_bindir}/virt-xml-validate -%{mingw64_bindir}/virt-pki-query-dn.exe -%{mingw64_bindir}/virt-pki-validate.exe -%{mingw64_bindir}/libvirt-lxc-0.dll -%{mingw64_bindir}/libvirt-qemu-0.dll -%{mingw64_bindir}/libvirt-admin-0.dll -%{mingw64_libdir}/libvirt.dll.a -%{mingw64_libdir}/pkgconfig/libvirt.pc -%{mingw64_libdir}/pkgconfig/libvirt-qemu.pc -%{mingw64_libdir}/pkgconfig/libvirt-lxc.pc -%{mingw64_libdir}/pkgconfig/libvirt-admin.pc -%{mingw64_libdir}/libvirt-lxc.dll.a -%{mingw64_libdir}/libvirt-qemu.dll.a -%{mingw64_libdir}/libvirt-admin.dll.a -%dir %{mingw64_datadir}/libvirt/ -%dir %{mingw64_datadir}/libvirt/schemas/ -%{mingw64_datadir}/libvirt/schemas/*.rng -%dir %{mingw64_datadir}/libvirt/api/ -%{mingw64_datadir}/libvirt/api/libvirt-api.xml -%{mingw64_datadir}/libvirt/api/libvirt-lxc-api.xml -%{mingw64_datadir}/libvirt/api/libvirt-qemu-api.xml -%{mingw64_datadir}/libvirt/api/libvirt-admin-api.xml -%{mingw64_datadir}/libvirt/cpu_map/*.xml -%{mingw64_datadir}/libvirt/test-screenshot.png -%dir %{mingw64_includedir}/libvirt -%{mingw64_includedir}/libvirt/libvirt.h -%{mingw64_includedir}/libvirt/libvirt-common.h -%{mingw64_includedir}/libvirt/libvirt-domain.h -%{mingw64_includedir}/libvirt/libvirt-domain-checkpoint.h -%{mingw64_includedir}/libvirt/libvirt-domain-snapshot.h -%{mingw64_includedir}/libvirt/libvirt-event.h -%{mingw64_includedir}/libvirt/libvirt-host.h -%{mingw64_includedir}/libvirt/libvirt-interface.h -%{mingw64_includedir}/libvirt/libvirt-network.h -%{mingw64_includedir}/libvirt/libvirt-nodedev.h -%{mingw64_includedir}/libvirt/libvirt-nwfilter.h -%{mingw64_includedir}/libvirt/libvirt-secret.h -%{mingw64_includedir}/libvirt/libvirt-storage.h -%{mingw64_includedir}/libvirt/libvirt-stream.h -%{mingw64_includedir}/libvirt/virterror.h -%{mingw64_includedir}/libvirt/libvirt-lxc.h -%{mingw64_includedir}/libvirt/libvirt-qemu.h -%{mingw64_includedir}/libvirt/libvirt-admin.h -%{mingw64_mandir}/man1/virsh.1* -%{mingw64_mandir}/man1/virt-admin.1* -%{mingw64_mandir}/man1/virt-xml-validate.1* -%{mingw64_mandir}/man1/virt-pki-query-dn.1* -%{mingw64_mandir}/man1/virt-pki-validate.1* -%{mingw64_mandir}/man7/virkey*.7* -%endif - - -%changelog -* Wed Mar 05 2025 Cole Robinson - 10.6.0-7 -- Fix potential dataloss on snapshot deletion - -* Sat Dec 14 2024 Cole Robinson - 10.6.0-6 -- Fix DHCP response checksum when using nftables firewall -- Permit forward mode=open when network has no IP (bz 2255266) - -* Tue Sep 24 2024 Cole Robinson - 10.6.0-5 -- Rebuild for new wireshark - -* Wed Sep 18 2024 David Abdurachmanov - 10.6.0-4 -- Add riscv64 to arches_qemu_kvm - -* Thu Sep 12 2024 Dennis Gilmore - 10.6.0-3 -- rebuild for updated wireshark - -* Tue Aug 27 2024 Cole Robinson - 10.6.0-2 -- Fix `virsh domifaddr --source=arp` on kernel 6.10 (bz #2302245) -- Add new systemtap-sdt-dtrace to build deps - -* Tue Aug 06 2024 Cole Robinson - 10.6.0-1 -- Update to version 10.6.0 - -* Mon Aug 05 2024 Richard W.M. Jones - 10.5.0-3 -- Rebuild for Xen 4.19.0 - -* Thu Jul 18 2024 Fedora Release Engineering - 10.5.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Thu Jul 4 2024 Daniel P. Berrangé - 10.5.0-1 -- Rebase to 10.5.0 release - -* Wed Jun 5 2024 Daniel P. Berrangé - 10.4.0-2 -- Fix leak of GSource handle -- Fix leak of udev reference (rhbz #2266017) - -* Wed Jun 5 2024 Daniel P. Berrangé - 10.4.0-1 -- Update to version 10.4.0 -- Change virtual network backend from iptables to nftables -- Introduce SSH VSOCK proxy - -* Thu May 2 2024 Daniel P. Berrangé - 10.3.0-1 -- Update to version 10.3.0 - -* Sat Apr 06 2024 Cole Robinson - 10.2.0-2 -- Rebuild for new libiscsi - -* Fri Apr 05 2024 Cole Robinson - 10.2.0-1 -- Update to version 10.2.0 - -* Fri Mar 01 2024 Cole Robinson - 10.1.0-1 -- Update to version 10.1.0 - -* Mon Feb 19 2024 Cole Robinson - 10.0.0-4 -- Rebuild for wireshark soname bump - -* Thu Jan 25 2024 Fedora Release Engineering - 10.0.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 10.0.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Tue Jan 16 2024 Cole Robinson - 10.0.0-1 -- Update to version 10.0.0 - -* Wed Jan 03 2024 Jonathan Wright - 9.10.0-4 -- conf: fix regression for default input bus - -* Fri Dec 8 2023 Richard W.M. Jones - 9.10.0-3 -- Bump and rebuild for xen 4.18.0, third attempt - -* Tue Dec 05 2023 Adam Williamson - 9.10.0-2 -- Rebuild for xen 4.18.0 again - -* Sat Dec 02 2023 Cole Robinson - 9.10.0-1 -- Update to version 9.10.0 - -* Thu Nov 30 2023 Richard W.M. Jones - 9.9.0-3 -- Bump and rebuild for xen 4.18.0 - -* Mon Nov 06 2023 Cole Robinson - 9.9.0-2 -- Fix crash with snapshot restore (bz #2247754) - -* Wed Nov 01 2023 Cole Robinson - 9.9.0-1 -- Update to version 9.9.0 - -* Thu Oct 05 2023 Cole Robinson - 9.8.0-1 -- Update to version 9.8.0 - -* Fri Sep 1 2023 Daniel P. Berrangé - 9.7.0-1 -- Update to version 9.7.0 - -* Tue Aug 01 2023 Cole Robinson - 9.6.0-1 -- Update to version 9.6.0 - -* Thu Jul 20 2023 Fedora Release Engineering - 9.5.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Wed Jul 05 2023 Cole Robinson - 9.5.0-1 -- Update to version 9.5.0 - -* Wed Jun 28 2023 Cole Robinson - 9.4.0-1 -- Update to version 9.4.0 - -* Tue May 23 2023 Cole Robinson - 9.3.0-2 -- Drop numad usage, it is removed from f39 - -* Tue May 02 2023 Cole Robinson - 9.3.0-1 -- Update to version 9.3.0 - -* Wed Apr 05 2023 Cole Robinson - 9.2.0-1 -- Update to version 9.2.0 - -* Wed Mar 01 2023 Cole Robinson - 9.1.0-1 -- Update to version 9.1.0 - -* Thu Jan 19 2023 Fedora Release Engineering - 9.0.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Mon Jan 16 2023 Cole Robinson - 9.0.0-1 -- Update to version 9.0.0 - -* Tue Jan 03 2023 Richard W.M. Jones - 8.10.0-2 -- Rebuild for xen-4.17.0 - -* Sat Dec 03 2022 Cole Robinson - 8.10.0-1 -- Update to version 8.10.0 - -* Thu Nov 03 2022 Cole Robinson - 8.9.0-1 -- Update to version 8.9.0 - -* Mon Oct 24 2022 Cole Robinson - 8.8.0-2 -- Rebuild for wireshark soname bump - -* Tue Oct 04 2022 Cole Robinson - 8.8.0-1 -- Update to version 8.8.0 - -* Fri Sep 9 2022 Jens Petersen - 8.7.0-2 -- F37 libvirt-daemon: depend on gettext-runtime instead of gettext (#2117209) - -* Tue Sep 06 2022 Cole Robinson - 8.7.0-1 -- Update to version 8.7.0 - -* Tue Aug 9 2022 Daniel P. Berrangé - 8.1.0-3 -- Pull in mingw sub-packages - -* Thu Aug 04 2022 Cole Robinson - 8.6.0-2 -- Use upstream 'glibc fix' commits - -* Mon Aug 01 2022 Cole Robinson - 8.6.0-1 -- Update to version 8.6.0 - -* Thu Jul 21 2022 Cole Robinson - 8.5.0-1 -- Update to version 8.5.0 - -* Sat Jun 11 2022 Cole Robinson - 8.4.0-2 -- Adjust for Xen dropping 32bit arches - -* Thu Jun 02 2022 Cole Robinson - 8.4.0-1 -- Update to version 8.4.0 - -* Mon May 02 2022 Cole Robinson - 8.3.0-1 -- Update to version 8.3.0 - -* Fri Apr 01 2022 Cole Robinson - 8.2.0-1 -- Update to version 8.2.0 - -* Thu Mar 3 2022 Daniel P. Berrangé - 8.1.0-2 -- Fix crash undefining VM without loader (rhbz#2060412) - -* Tue Mar 01 2022 Cole Robinson - 8.1.0-1 -- Update to version 8.1.0 - -* Tue Feb 22 2022 Richard W.M. Jones - 8.0.0-3 -- Include upstream patch which fixes virt-install bug. - -* Thu Jan 20 2022 Fedora Release Engineering - 8.0.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Fri Jan 14 2022 Cole Robinson - 8.0.0-1 -- Update to version 8.0.0 - -* Tue Jan 11 2022 Richard W.M. Jones - 7.10.0-2 -- Bump release and rebuild for new xen - -* Wed Dec 1 2021 Daniel P. Berrangé - 7.10.0-1 -- Update to 7.10.0 release - -* Tue Nov 2 2021 Daniel P. Berrangé - 7.9.0-1 -- Update to 7.9.0 release - -* Thu Oct 28 2021 Richard W.M. Jones - 7.8.0-2 -- Bump and rebuild for fixed glusterfs on arm (RHBZ#2018182) - -* Fri Oct 1 2021 Daniel P. Berrangé - 7.8.0-1 -- Update to 7.8.0 release - -* Thu Sep 2 2021 Daniel P. Berrangé - 7.7.0-1 -- Update to 7.7.0 release - -* Tue Aug 31 2021 Daniel P. Berrangé - 7.6.0-3 -- Fix repeated word in scriptlet name -- Fix deps on virtlockd/virtlogd socket units -- Fix test failure with newer QEMU - -* Wed Aug 4 2021 Daniel P. Berrangé - 7.6.0-2 -- Switch to use modular daemons by default - -* Mon Aug 2 2021 Daniel P. Berrangé - 7.6.0-1 -- Update to 7.6.0 release - -* Wed Jul 28 2021 Richard W.M. Jones - 7.5.0-3 -- Add fix for discard + copy-on-read affecting virt-v2v (RHBZ#1986509) - -* Thu Jul 22 2021 Fedora Release Engineering - 7.5.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Thu Jul 01 2021 Cole Robinson - 7.5.0-1 -- Update to version 7.5.0 - -* Mon Jun 07 2021 Cole Robinson - 7.4.0-2 -- Rebuild for xen 4.14 - -* Tue Jun 01 2021 Cole Robinson - 7.4.0-1 -- Update to version 7.4.0 - -* Tue May 4 2021 Daniel P. Berrangé - 7.3.0-1 -- Update to 7.3.0 release -- Remove libvirt-admin & libvirt-bash-completion subpackages - -* Mon Apr 05 2021 Cole Robinson - 7.2.0-1 -- Update to version 7.2.0 - -* Tue Mar 9 2021 Richard W.M. Jones - 7.1.0-2 -- Bump and rebuild for libwsman_client.so.4 -> .5 - -* Mon Mar 01 2021 Cole Robinson - 7.1.0-1 -- Update to version 7.1.0 - -* Wed Feb 03 2021 Cole Robinson - 7.0.0-4 -- Increase meson test timeout to fix builds on s390x copr - -* Tue Feb 02 2021 Laine Stump - 7.0.0-3 -- disable netcf in build - -* Tue Jan 26 2021 Fedora Release Engineering - 7.0.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Fri Jan 15 2021 Daniel P. Berrangé - 7.0.0-1 -- Rebase to 7.0.0 release diff --git a/fedora-41/SPECS/zfs-dkms.spec b/fedora-41/SPECS/zfs-dkms.spec deleted file mode 100644 index 67b2cf2..0000000 --- a/fedora-41/SPECS/zfs-dkms.spec +++ /dev/null @@ -1,168 +0,0 @@ -%{?!packager: %define packager Brian Behlendorf } - -%if ! 0%{?rhel}%{?fedora}%{?mageia}%{?suse_version}%{?openEuler} -%define not_rpm 1 -%endif - -# Exclude input files from mangling -%global __brp_mangle_shebangs_exclude_from ^/usr/src/.*$ - -%define module zfs -%define mkconf scripts/dkms.mkconf - -Name: %{module}-dkms - -Version: 2.4.0 -Release: 1%{?dist} -Summary: Kernel module(s) (dkms) - -Group: System Environment/Kernel -License: CDDL -URL: https://github.com/openzfs/zfs -Source0: %{module}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildArch: noarch - -Requires: dkms >= 2.2.0.3 -Requires(pre): dkms >= 2.2.0.3 -Requires(post): dkms >= 2.2.0.3 -Requires(preun): dkms >= 2.2.0.3 -Requires: gcc, make, perl, diffutils -Requires(post): gcc, make, perl, diffutils - -# Hold back kernel upgrades if kernel is not supported by ZFS -%if 0%{?rhel}%{?fedora}%{?mageia}%{?suse_version}%{?openEuler} -Requires: kernel-devel >= 4.18, kernel-devel <= 6.18.999 -Requires(post): kernel-devel >= 4.18, kernel-devel <= 6.18.999 -Conflicts: kernel-devel < 4.18, kernel-devel > 6.18.999 -Requires: kernel-uname-r >= 4.18, kernel-uname-r <= 6.18.999 -Requires(post): kernel-uname-r >= 4.18, kernel-uname-r <= 6.18.999 -Conflicts: kernel-uname-r < 4.18, kernel-uname-r > 6.18.999 - -Obsoletes: spl-dkms <= %{version} -%endif -Provides: %{module}-kmod = %{version} -AutoReqProv: no - -%if (0%{?fedora}%{?suse_version}%{?openEuler}) || (0%{?rhel} && 0%{?rhel} < 9) -# We don't directly use it, but if this isn't installed, rpmbuild as root can -# crash+corrupt rpmdb -# See issue #12071 -BuildRequires: ncompress -%endif - -%description -This package contains the dkms ZFS kernel modules. - -%prep -%setup -q -n %{module}-%{version} - -%build -%{mkconf} -n %{module} -v %{version} -f dkms.conf - -%install -if [ "$RPM_BUILD_ROOT" != "/" ]; then - rm -rf $RPM_BUILD_ROOT -fi -mkdir -p $RPM_BUILD_ROOT/usr/src/ -cp -rf ${RPM_BUILD_DIR}/%{module}-%{version} $RPM_BUILD_ROOT/usr/src/ - -%clean -if [ "$RPM_BUILD_ROOT" != "/" ]; then - rm -rf $RPM_BUILD_ROOT -fi - -%files -%defattr(-,root,root) -/usr/src/%{module}-%{version} - -%pre -echo "Running pre installation script: $0. Parameters: $*" -# We don't want any other versions lingering around in dkms. -# Tests with 'dnf' showed that in case of reinstall, or upgrade -# the preun scriptlet removed the version we are trying to install. -# Because of this, find all zfs dkms sources in /var/lib/dkms and -# remove them, if we find a matching version in dkms. - -dkms_root=/var/lib/dkms -if [ -d ${dkms_root}/%{module} ]; then - cd ${dkms_root}/%{module} - for x in [[:digit:]]*; do - [ -d "$x" ] || continue - otherver="$x" - opath="${dkms_root}/%{module}/${otherver}" - if [ "$otherver" != %{version} ]; then - # This is a workaround for a broken 'dkms status', we caused in a previous version. - # One day it might be not needed anymore, but it does not hurt to keep it. - if dkms status -m %{module} -v "$otherver" 2>&1 | grep "${opath}/source/dkms.conf does not exist" - then - echo "ERROR: dkms status is broken!" >&2 - if [ -L "${opath}/source" -a ! -d "${opath}/source" ] - then - echo "Trying to fix it by removing the symlink: ${opath}/source" >&2 - echo "You should manually remove ${opath}" >&2 - rm -f "${opath}/source" || echo "Removal failed!" >&2 - fi - fi - if [ `dkms status -m %{module} -v "$otherver" | grep -c %{module}` -gt 0 ]; then - echo "Removing old %{module} dkms modules version $otherver from all kernels." - dkms remove -m %{module} -v "$otherver" --all ||: - fi - fi - done - cd ${dkms_root} -fi - -# Uninstall this version of zfs dkms modules before installation of the package. -if [ `dkms status -m %{module} -v %{version} | grep -c %{module}` -gt 0 ]; then - echo "Removing %{module} dkms modules version %{version} from all kernels." - dkms remove -m %{module} -v %{version} --all ||: -fi - -%post -echo "Running post installation script: $0. Parameters: $*" -# Add the module to dkms, as reccommended in the dkms man page. -# This is generally rpm specfic. -# But this also may help, if we have a broken 'dkms status'. -# Because, if the sources are available and only the symlink pointing -# to them is missing, this will resolve the situation -echo "Adding %{module} dkms modules version %{version} to dkms." -dkms add -m %{module} -v %{version} %{!?not_rpm:--rpm_safe_upgrade} ||: - -# After installing the package, dkms install this zfs version for the current kernel. -# Force the overwriting of old modules to avoid diff warnings in dkms status. -# Or in case of a downgrade to overwrite newer versions. -# Or if some other backed up versions have been restored before. -echo "Installing %{module} dkms modules version %{version} for the current kernel." -dkms install --force -m %{module} -v %{version} ||: - -%preun -dkms_root="/var/lib/dkms/%{module}/%{version}" -echo "Running pre uninstall script: $0. Parameters: $*" -# In case of upgrade we do nothing. See above comment in pre hook. -if [ "$1" = "1" -o "$1" = "upgrade" ] ; then - echo "This is an upgrade. Skipping pre uninstall action." - exit 0 -fi - -# Check if we uninstall the package. In that case remove the dkms modules. -# '0' is the value for the first parameter for rpm packages. -# 'remove' or 'purge' are the possible names for deb packages. -if [ "$1" = "0" -o "$1" = "remove" -o "$1" = "purge" ] ; then - if [ `dkms status -m %{module} -v %{version} | grep -c %{module}` -gt 0 ]; then - echo "Removing %{module} dkms modules version %{version} from all kernels." - dkms remove -m %{module} -v %{version} --all %{!?not_rpm:--rpm_safe_upgrade} && exit 0 - fi - # If removing the modules failed, it might be because of the broken 'dkms status'. - if dkms status -m %{module} -v %{version} 2>&1 | grep "${dkms_root}/source/dkms.conf does not exist" - then - echo "ERROR: dkms status is broken!" >&2 - echo "You should manually remove ${dkms_root}" >&2 - echo "WARNING: installed modules in /lib/modules/`uname -r`/extra could not be removed automatically!" >&2 - fi -else - echo "Script parameter $1 did not match any removal condition." -fi - -exit 0 - diff --git a/fedora-41/SPECS/zfs.spec b/fedora-41/SPECS/zfs.spec deleted file mode 100644 index b976cf2..0000000 --- a/fedora-41/SPECS/zfs.spec +++ /dev/null @@ -1,606 +0,0 @@ -%global _sbindir /sbin -%global _libdir /%{_lib} - -# Set the default udev directory based on distribution. -%if %{undefined _udevdir} -%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler} -%global _udevdir %{_prefix}/lib/udev -%else -%global _udevdir /lib/udev -%endif -%endif - -# Set the default udevrule directory based on distribution. -%if %{undefined _udevruledir} -%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler} -%global _udevruledir %{_prefix}/lib/udev/rules.d -%else -%global _udevruledir /lib/udev/rules.d -%endif -%endif - -# Set the default _bashcompletiondir directory based on distribution. -%if %{undefined _bashcompletiondir} -%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler} -%global _bashcompletiondir /etc/bash_completion.d -%else -%global _bashcompletiondir /usr/share/bash-completion -%endif -%endif - -# Set the default dracut directory based on distribution. -%if %{undefined _dracutdir} -%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler} -%global _dracutdir %{_prefix}/lib/dracut -%else -%global _dracutdir %{_prefix}/share/dracut -%endif -%endif - -%if %{undefined _initconfdir} -%global _initconfdir /etc/sysconfig -%endif - -%if %{undefined _unitdir} -%global _unitdir %{_prefix}/lib/systemd/system -%endif - -%if %{undefined _presetdir} -%global _presetdir %{_prefix}/lib/systemd/system-preset -%endif - -%if %{undefined _modulesloaddir} -%global _modulesloaddir %{_prefix}/lib/modules-load.d -%endif - -%if %{undefined _systemdgeneratordir} -%global _systemdgeneratordir %{_prefix}/lib/systemd/system-generators -%endif - -%if %{undefined _pkgconfigdir} -%global _pkgconfigdir %{_prefix}/%{_lib}/pkgconfig -%endif - -%bcond_with debug -%bcond_with debuginfo -%bcond_with asan -%bcond_with ubsan -%bcond_with systemd -%bcond_with pam -%bcond_without pyzfs - -# Generic enable switch for systemd -%if %{with systemd} -%define _systemd 1 -%endif - -# Distros below support systemd -%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler} -%define _systemd 1 -%endif - -# When not specified default to distribution provided version. -%if %{undefined __use_python} -%define __python /usr/bin/python3 -%define __python_pkg_version 3 -%else -%define __python %{__use_python} -%define __python_pkg_version %{__use_python_pkg_version} -%endif -%define __python_sitelib %(%{__python} -Esc " -import sysconfig; -if hasattr(sysconfig, 'get_default_scheme'): - scheme = sysconfig.get_default_scheme() -else: - scheme = sysconfig._get_default_scheme() -if scheme == 'posix_local': - scheme = 'posix_prefix' -prefix = '%{_prefix}' -if prefix == 'NONE': - prefix = '%{ac_default_prefix}' -sitedir = sysconfig.get_path('purelib', scheme, vars={'base': prefix}) -print(sitedir);" 2>/dev/null || %{__python} -Esc "from distutils import sysconfig; print(sysconfig.get_python_lib(0,0))") - -Name: zfs -Version: 2.4.0 -Release: 1%{?dist} -Summary: Commands to control the kernel modules and libraries - -Group: System Environment/Kernel -License: CDDL -URL: https://github.com/openzfs/zfs -Source0: %{name}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -Requires: libzpool7%{?_isa} = %{version}-%{release} -Requires: libnvpair3%{?_isa} = %{version}-%{release} -Requires: libuutil3%{?_isa} = %{version}-%{release} -Requires: libzfs7%{?_isa} = %{version}-%{release} -Requires: %{name}-kmod = %{version} -Provides: %{name}-kmod-common = %{version}-%{release} -Obsoletes: spl <= %{version} - -# zfs-fuse provides the same commands and man pages that OpenZFS does. -# Renaming those on either side would conflict with all available documentation. -Conflicts: zfs-fuse - -%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler} -BuildRequires: gcc, make -BuildRequires: zlib-devel -BuildRequires: libuuid-devel -BuildRequires: libblkid-devel -BuildRequires: libudev-devel -BuildRequires: libattr-devel -BuildRequires: openssl-devel -%if 0%{?fedora}%{?suse_version}%{?openEuler} || 0%{?rhel} >= 8 || 0%{?centos} >= 8 -BuildRequires: libtirpc-devel -%endif - -%if (0%{?fedora}%{?suse_version}%{?openEuler}) || (0%{?rhel} && 0%{?rhel} < 9) -# We don't directly use it, but if this isn't installed, rpmbuild as root can -# crash+corrupt rpmdb -# See issue #12071 -BuildRequires: ncompress -%endif - -Requires: openssl -%if 0%{?_systemd} -BuildRequires: systemd -%endif - -%endif - -%if 0%{?_systemd} -Requires(post): systemd -Requires(preun): systemd -Requires(postun): systemd -%endif - -# The zpool iostat/status -c scripts call some utilities like lsblk and iostat -Requires: util-linux -Requires: sysstat - -%description -This package contains the core ZFS command line utilities. - -%package -n libzpool7 -Summary: Native ZFS pool library for Linux -Group: System Environment/Kernel -Obsoletes: libzpool2 <= %{version} -Obsoletes: libzpool4 <= %{version} -Obsoletes: libzpool5 <= %{version} -Obsoletes: libzpool6 <= %{version} - -%description -n libzpool7 -This package contains the zpool library, which provides support -for managing zpools - -%if %{defined ldconfig_scriptlets} -%ldconfig_scriptlets -n libzpool7 -%else -%post -n libzpool7 -p /sbin/ldconfig -%postun -n libzpool7 -p /sbin/ldconfig -%endif - -%package -n libnvpair3 -Summary: Solaris name-value library for Linux -Group: System Environment/Kernel -Obsoletes: libnvpair1 <= %{version} - -%description -n libnvpair3 -This package contains routines for packing and unpacking name-value -pairs. This functionality is used to portably transport data across -process boundaries, between kernel and user space, and can be used -to write self describing data structures on disk. - -%if %{defined ldconfig_scriptlets} -%ldconfig_scriptlets -n libnvpair3 -%else -%post -n libnvpair3 -p /sbin/ldconfig -%postun -n libnvpair3 -p /sbin/ldconfig -%endif - -%package -n libuutil3 -Summary: Solaris userland utility library for Linux -Group: System Environment/Kernel -Obsoletes: libuutil1 <= %{version} - -%description -n libuutil3 -This library provides a variety of compatibility functions for OpenZFS: - * libspl: The Solaris Porting Layer userland library, which provides APIs - that make it possible to run Solaris user code in a Linux environment - with relatively minimal modification. - * libavl: The Adelson-Velskii Landis balanced binary tree manipulation - library. - * libefi: The Extensible Firmware Interface library for GUID disk - partitioning. - * libshare: NFS, SMB, and iSCSI service integration for ZFS. - -%if %{defined ldconfig_scriptlets} -%ldconfig_scriptlets -n libuutil3 -%else -%post -n libuutil3 -p /sbin/ldconfig -%postun -n libuutil3 -p /sbin/ldconfig -%endif - -# The library version is encoded in the package name. When updating the -# version information it is important to add an obsoletes line below for -# the previous version of the package. -%package -n libzfs7 -Summary: Native ZFS filesystem library for Linux -Group: System Environment/Kernel -Obsoletes: libzfs2 <= %{version} -Obsoletes: libzfs4 <= %{version} -Obsoletes: libzfs5 <= %{version} -Obsoletes: libzfs6 <= %{version} - -%description -n libzfs7 -This package provides support for managing ZFS filesystems - -%if %{defined ldconfig_scriptlets} -%ldconfig_scriptlets -n libzfs7 -%else -%post -n libzfs7 -p /sbin/ldconfig -%postun -n libzfs7 -p /sbin/ldconfig -%endif - -%package -n libzfs7-devel -Summary: Development headers -Group: System Environment/Kernel -Requires: libzfs7%{?_isa} = %{version}-%{release} -Requires: libzpool7%{?_isa} = %{version}-%{release} -Requires: libnvpair3%{?_isa} = %{version}-%{release} -Requires: libuutil3%{?_isa} = %{version}-%{release} -Provides: libzpool7-devel = %{version}-%{release} -Provides: libnvpair3-devel = %{version}-%{release} -Provides: libuutil3-devel = %{version}-%{release} -Obsoletes: zfs-devel <= %{version} -Obsoletes: libzfs2-devel <= %{version} -Obsoletes: libzfs4-devel <= %{version} -Obsoletes: libzfs5-devel <= %{version} - -%description -n libzfs7-devel -This package contains the header files needed for building additional -applications against the ZFS libraries. - -%package test -Summary: Test infrastructure -Group: System Environment/Kernel -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: parted -Requires: lsscsi -Requires: mdadm -Requires: bc -Requires: ksh -Requires: fio -Requires: acl -Requires: sudo -Requires: sysstat -Requires: libaio -Requires: python%{__python_pkg_version} -%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler} -BuildRequires: libaio-devel -%endif -AutoReqProv: no - -%description test -This package contains test infrastructure and support scripts for -validating the file system. - -%package dracut -Summary: Dracut module -Group: System Environment/Kernel -BuildArch: noarch -Requires: %{name} >= %{version} -Requires: dracut -Requires: /usr/bin/awk -Requires: grep - -%description dracut -This package contains a dracut module used to construct an initramfs -image which is ZFS aware. - -%if %{with pyzfs} -# Enforce `python36-` package prefix for CentOS 7 -# since dependencies come from EPEL and are named this way -%package -n python%{__python_pkg_version}-pyzfs -Summary: Python %{python_version} wrapper for libzfs_core -Group: Development/Languages/Python -License: Apache-2.0 -BuildArch: noarch -Requires: libzfs7 = %{version}-%{release} -Requires: libnvpair3 = %{version}-%{release} -Requires: libffi -Requires: python%{__python_pkg_version} - -%if 0%{?centos} == 7 -Requires: python36-cffi -%else -Requires: python%{__python_pkg_version}-cffi -%endif - -%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler} -%if 0%{?centos} == 7 -BuildRequires: python36-packaging -BuildRequires: python36-devel -BuildRequires: python36-cffi -BuildRequires: python36-setuptools -%else -BuildRequires: python%{__python_pkg_version}-packaging -BuildRequires: python%{__python_pkg_version}-devel -BuildRequires: python%{__python_pkg_version}-cffi -BuildRequires: python%{__python_pkg_version}-setuptools -%endif - -BuildRequires: libffi-devel -%endif - -%description -n python%{__python_pkg_version}-pyzfs -This package provides a python wrapper for the libzfs_core C library. -%endif - -%if 0%{?_initramfs} -%package initramfs -Summary: Initramfs module -Group: System Environment/Kernel -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: initramfs-tools - -%description initramfs -This package contains a initramfs module used to construct an initramfs -image which is ZFS aware. -%endif - -%if %{with pam} -%package -n pam_zfs_key -Summary: PAM module for encrypted ZFS datasets - -%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler} -BuildRequires: pam-devel -%endif - -%description -n pam_zfs_key -This package contains the pam_zfs_key PAM module, which provides -support for unlocking datasets on user login. -%endif - -%prep -%if %{with debug} - %define debug --enable-debug -%else - %define debug --disable-debug -%endif - -%if %{with debuginfo} - %define debuginfo --enable-debuginfo -%else - %define debuginfo --disable-debuginfo -%endif - -%if %{with asan} - %define asan --enable-asan -%else - %define asan --disable-asan -%endif - -%if %{with ubsan} - %define ubsan --enable-ubsan -%else - %define ubsan --disable-ubsan -%endif - -%if 0%{?_systemd} - %define systemd --enable-systemd --with-systemdunitdir=%{_unitdir} --with-systemdpresetdir=%{_presetdir} --with-systemdmodulesloaddir=%{_modulesloaddir} --with-systemdgeneratordir=%{_systemdgeneratordir} --disable-sysvinit - %define systemd_svcs zfs-import-cache.service zfs-import-scan.service zfs-mount.service zfs-mount@.service zfs-share.service zfs-zed.service zfs.target zfs-import.target zfs-volume-wait.service zfs-volumes.target -%else - %define systemd --enable-sysvinit --disable-systemd -%endif - -%if %{with pyzfs} - %define pyzfs --enable-pyzfs -%else - %define pyzfs --disable-pyzfs -%endif - -%if %{with pam} - %define pam --enable-pam -%else - %define pam --disable-pam -%endif - -%setup -q - -%build -%configure \ - --with-config=user \ - --with-udevdir=%{_udevdir} \ - --with-udevruledir=%{_udevruledir} \ - --with-dracutdir=%{_dracutdir} \ - --with-pamconfigsdir=%{_datadir}/pam-configs \ - --with-pammoduledir=%{_libdir}/security \ - --with-python=%{__python} \ - --with-pkgconfigdir=%{_pkgconfigdir} \ - --disable-static \ - %{debug} \ - %{debuginfo} \ - %{asan} \ - %{ubsan} \ - %{systemd} \ - %{pam} \ - %{pyzfs} -make %{?_smp_mflags} - -%install -%{__rm} -rf $RPM_BUILD_ROOT -make install DESTDIR=%{?buildroot} -find %{?buildroot}%{_libdir} -name '*.la' -exec rm -f {} \; -%if 0%{!?__brp_mangle_shebangs:1} -find %{?buildroot}%{_bindir} \ - \( -name zarcsummary -or -name zarcstat -or -name dbufstat \ - -or -name zilstat \) \ - -exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \; -find %{?buildroot}%{_datadir} \ - \( -name test-runner.py -or -name zts-report.py \) \ - -exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \; -%endif - -%post -%if 0%{?_systemd} -%if 0%{?systemd_post:1} -%systemd_post %{systemd_svcs} -%else -if [ "$1" = "1" -o "$1" = "install" ] ; then - # Initial installation - systemctl preset %{systemd_svcs} >/dev/null || true -fi -%endif -%else -if [ -x /sbin/chkconfig ]; then - /sbin/chkconfig --add zfs-import - /sbin/chkconfig --add zfs-load-key - /sbin/chkconfig --add zfs-mount - /sbin/chkconfig --add zfs-share - /sbin/chkconfig --add zfs-zed -fi -%endif -exit 0 - -# On RHEL/CentOS 7 the static nodes aren't refreshed by default after -# installing a package. This is the default behavior for Fedora. -%posttrans -%if 0%{?rhel} == 7 || 0%{?centos} == 7 -systemctl restart kmod-static-nodes -systemctl restart systemd-tmpfiles-setup-dev -udevadm trigger -%endif - -%preun -%if 0%{?_systemd} -%if 0%{?systemd_preun:1} -%systemd_preun %{systemd_svcs} -%else -if [ "$1" = "0" -o "$1" = "remove" ] ; then - # Package removal, not upgrade - systemctl --no-reload disable %{systemd_svcs} >/dev/null || true - systemctl stop %{systemd_svcs} >/dev/null || true -fi -%endif -%else -if [ "$1" = "0" -o "$1" = "remove" ] && [ -x /sbin/chkconfig ]; then - /sbin/chkconfig --del zfs-import - /sbin/chkconfig --del zfs-load-key - /sbin/chkconfig --del zfs-mount - /sbin/chkconfig --del zfs-share - /sbin/chkconfig --del zfs-zed -fi -%endif -exit 0 - -%postun -%if 0%{?_systemd} -%if 0%{?systemd_postun:1} -%systemd_postun %{systemd_svcs} -%else -systemctl --system daemon-reload >/dev/null || true -%endif -%endif - -%files -# Core utilities -%{_sbindir}/* -%{_bindir}/raidz_test -%{_bindir}/zvol_wait -# Optional Python 3 scripts -%{_bindir}/zarcsummary -%{_bindir}/zarcstat -%{_bindir}/dbufstat -%{_bindir}/zilstat -# Man pages -%{_mandir}/man1/* -%{_mandir}/man4/* -%{_mandir}/man5/* -%{_mandir}/man7/* -%{_mandir}/man8/* -# Configuration files and scripts -%{_libexecdir}/%{name} -%{_udevdir}/vdev_id -%{_udevdir}/zvol_id -%{_udevdir}/rules.d/* -%{_datadir}/%{name}/compatibility.d -%if ! 0%{?_systemd} || 0%{?_initramfs} -# Files needed for sysvinit and initramfs-tools -%{_sysconfdir}/%{name}/zfs-functions -%config(noreplace) %{_initconfdir}/zfs -%else -%exclude %{_sysconfdir}/%{name}/zfs-functions -%exclude %{_initconfdir}/zfs -%endif -%if 0%{?_systemd} -%{_unitdir}/* -%{_presetdir}/* -%{_modulesloaddir}/* -%{_systemdgeneratordir}/* -%else -%config(noreplace) %{_sysconfdir}/init.d/* -%endif -%config(noreplace) %{_sysconfdir}/%{name}/zed.d/* -%config(noreplace) %{_sysconfdir}/%{name}/zpool.d/* -%config(noreplace) %{_sysconfdir}/%{name}/vdev_id.conf.*.example -%attr(440, root, root) %config(noreplace) %{_sysconfdir}/sudoers.d/* - -%config(noreplace) %{_bashcompletiondir}/zfs -%config(noreplace) %{_bashcompletiondir}/zpool - -%files -n libzpool7 -%{_libdir}/libzpool.so.* - -%files -n libnvpair3 -%{_libdir}/libnvpair.so.* - -%files -n libuutil3 -%{_libdir}/libuutil.so.* - -%files -n libzfs7 -%{_libdir}/libzfs*.so.* - -%files -n libzfs7-devel -%{_pkgconfigdir}/libzfs.pc -%{_pkgconfigdir}/libzfsbootenv.pc -%{_pkgconfigdir}/libzfs_core.pc -%{_libdir}/*.so -%{_includedir}/* -%doc AUTHORS COPYRIGHT LICENSE NOTICE README.md - -%files test -%{_datadir}/%{name}/zfs-tests -%{_datadir}/%{name}/test-runner -%{_datadir}/%{name}/runfiles -%{_datadir}/%{name}/*.sh - -%files dracut -%doc contrib/dracut/README.md -%{_dracutdir}/modules.d/* - -%if %{with pyzfs} -%files -n python%{__python_pkg_version}-pyzfs -%doc contrib/pyzfs/README -%doc contrib/pyzfs/LICENSE -%defattr(-,root,root,-) -%{__python_sitelib}/libzfs_core/* -%{__python_sitelib}/pyzfs* -%endif - -%if 0%{?_initramfs} -%files initramfs -%doc contrib/initramfs/README.md -/usr/share/initramfs-tools/* -%else -# Since we're not building the initramfs package, -# ignore those files. -%exclude /usr/share/initramfs-tools -%endif - -%if %{with pam} -%files -n pam_zfs_key -%{_libdir}/security/* -%{_datadir}/pam-configs/* -%endif diff --git a/fedora-42/PATCHES/20-enable-zfs.patch b/fedora-42/PATCHES/20-enable-zfs.patch deleted file mode 100644 index 3d22494..0000000 --- a/fedora-42/PATCHES/20-enable-zfs.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/SPECS/libvirt.spec b/SPECS/libvirt.spec ---- a/SPECS/libvirt.spec -+++ b/SPECS/libvirt.spec -@@ -26,7 +26,7 @@ - %endif - %define arches_vbox %{arches_x86} - %define arches_ceph %{arches_64bit} --%define arches_zfs %{arches_x86} %{power64} %{arm} -+%define arches_zfs %{arches_x86} %{power64} %{arm} aarch64 - %define arches_numactl %{arches_x86} %{power64} aarch64 s390x - %define arches_numad %{arches_x86} %{power64} aarch64 - -@@ -75,12 +75,7 @@ - %endif - %endif - --# Fedora has zfs-fuse --%if 0%{?fedora} -- %define with_storage_zfs 0%{!?_without_storage_zfs:1} --%else -- %define with_storage_zfs 0 --%endif -+%define with_storage_zfs 1 - - %define with_storage_iscsi_direct 0%{!?_without_storage_iscsi_direct:1} - # libiscsi has been dropped in RHEL-9 diff --git a/fedora-42/SOURCES/0001-Fix-mocking-of-virQEMUCapsProbeHVF-function.patch b/fedora-42/SOURCES/0001-Fix-mocking-of-virQEMUCapsProbeHVF-function.patch deleted file mode 100644 index 11cfdbb..0000000 --- a/fedora-42/SOURCES/0001-Fix-mocking-of-virQEMUCapsProbeHVF-function.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 5629ebcb4234fde10fd9468d5fc5dd4947ed8677 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= -Date: Tue, 29 Apr 2025 15:49:10 +0100 -Subject: [PATCH] Fix mocking of virQEMUCapsProbeHVF function -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Daniel P. Berrangé - -Signed-off-by: Daniel P. Berrangé ---- - src/qemu/qemu_capabilities.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h -index ea7c14daa9..488a1a058e 100644 ---- a/src/qemu/qemu_capabilities.h -+++ b/src/qemu/qemu_capabilities.h -@@ -943,7 +943,7 @@ bool - virQEMUCapsGetKVMSupportsSecureGuest(virQEMUCaps *qemuCaps) G_NO_INLINE; - - bool --virQEMUCapsProbeHVF(virQEMUCaps *qemuCaps) G_NO_INLINE; -+virQEMUCapsProbeHVF(virQEMUCaps *qemuCaps) G_NO_INLINE __attribute__((noipa)); - - virArch virQEMUCapsArchFromString(const char *arch); - const char *virQEMUCapsArchToString(virArch arch); --- -2.49.0 - diff --git a/fedora-42/SOURCES/0001-nss-Skip-empty-files-and-avoid-use-of-uninitialized-.patch b/fedora-42/SOURCES/0001-nss-Skip-empty-files-and-avoid-use-of-uninitialized-.patch deleted file mode 100644 index 2d6a992..0000000 --- a/fedora-42/SOURCES/0001-nss-Skip-empty-files-and-avoid-use-of-uninitialized-.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 63a3d70697dc44ef2f8b40f7c8e9aa869227a7da Mon Sep 17 00:00:00 2001 -From: Jiang XueQian -Date: Sat, 18 Jan 2025 16:32:10 +0800 -Subject: [PATCH] nss: Skip empty files and avoid use of uninitialized value -Content-type: text/plain - -JSON parser isn't called when reading empty files so `jerr` will be used -uninitialized in the original code. Empty files appear when a network -has no dhcp clients. - -This patch checks for such files and skip them. - -Fixes: a8d828c88bbdaf83ae78dc06cdd84d5667fcc424 -Signed-off-by: Jiang XueQian -Signed-off-by: Michal Privoznik -Reviewed-by: Michal Privoznik ---- - tools/nss/libvirt_nss_leases.c | 9 +++++++-- - tools/nss/libvirt_nss_macs.c | 9 +++++++-- - 2 files changed, 14 insertions(+), 4 deletions(-) - -diff --git a/tools/nss/libvirt_nss_leases.c b/tools/nss/libvirt_nss_leases.c -index aea81bb56e..25ea6b0ce2 100644 ---- a/tools/nss/libvirt_nss_leases.c -+++ b/tools/nss/libvirt_nss_leases.c -@@ -263,7 +263,7 @@ findLeases(const char *file, - enum json_tokener_error jerr; - int jsonflags = JSON_TOKENER_STRICT | JSON_TOKENER_VALIDATE_UTF8; - char line[1024]; -- ssize_t nreadTotal = 0; -+ size_t nreadTotal = 0; - int rv; - - if ((fd = open(file, O_RDONLY)) < 0) { -@@ -290,12 +290,17 @@ findLeases(const char *file, - jerr = json_tokener_get_error(tok); - } while (jerr == json_tokener_continue); - -+ if (nreadTotal == 0) { -+ ret = 0; -+ goto cleanup; -+ } -+ - if (jerr == json_tokener_continue) { - ERROR("Cannot parse %s: incomplete json found", file); - goto cleanup; - } - -- if (nreadTotal > 0 && jerr != json_tokener_success) { -+ if (jerr != json_tokener_success) { - ERROR("Cannot parse %s: %s", file, json_tokener_error_desc(jerr)); - goto cleanup; - } -diff --git a/tools/nss/libvirt_nss_macs.c b/tools/nss/libvirt_nss_macs.c -index 23229a18f3..bac8c0e1bb 100644 ---- a/tools/nss/libvirt_nss_macs.c -+++ b/tools/nss/libvirt_nss_macs.c -@@ -124,7 +124,7 @@ findMACs(const char *file, - json_tokener *tok = NULL; - enum json_tokener_error jerr; - int jsonflags = JSON_TOKENER_STRICT | JSON_TOKENER_VALIDATE_UTF8; -- ssize_t nreadTotal = 0; -+ size_t nreadTotal = 0; - int rv; - size_t i; - -@@ -152,12 +152,17 @@ findMACs(const char *file, - jerr = json_tokener_get_error(tok); - } while (jerr == json_tokener_continue); - -+ if (nreadTotal == 0) { -+ ret = 0; -+ goto cleanup; -+ } -+ - if (jerr == json_tokener_continue) { - ERROR("Cannot parse %s: incomplete json found", file); - goto cleanup; - } - -- if (nreadTotal > 0 && jerr != json_tokener_success) { -+ if (jerr != json_tokener_success) { - ERROR("Cannot parse %s: %s", file, json_tokener_error_desc(jerr)); - goto cleanup; - } diff --git a/fedora-42/SOURCES/0001-qemu-Be-more-forgiving-when-acquiring-QUERY-job-when.patch b/fedora-42/SOURCES/0001-qemu-Be-more-forgiving-when-acquiring-QUERY-job-when.patch deleted file mode 100644 index d1f7bfd..0000000 --- a/fedora-42/SOURCES/0001-qemu-Be-more-forgiving-when-acquiring-QUERY-job-when.patch +++ /dev/null @@ -1,68 +0,0 @@ -From cd0de70e05475d5f4aa46e578fbb98033d38c06b Mon Sep 17 00:00:00 2001 -From: Michal Privoznik -Date: Mon, 16 Jun 2025 10:28:37 +0200 -Subject: [PATCH] qemu: Be more forgiving when acquiring QUERY job when - formatting domain XML -Content-type: text/plain - -In my previous commit of v11.0.0-rc1~115 I've made QEMU driver -implementation for virDomainGetXMLDesc() (qemuDomainGetXMLDesc()) -acquire QERY job. See its commit message for more info. But this -unfortunately broke apps witch fetch domain XML for incoming -migration (like virt-manager). The reason is that for incoming -migration the VIR_ASYNC_JOB_MIGRATION_IN async job is set, but -the mask of allowed synchronous jobs is empty (because QEMU can't -talk on monitor really). This makes virDomainObjBeginJob() fail -which in turn makes qemuDomainGetXMLDesc() fail too. - -It makes sense for qemuDomainGetXMLDesc() to acquire the job -(e.g. so that it's coherent with another thread that might be in -the middle of a MODIFY job). But failure to dump XML may be -treated as broken daemon (e.g. virt-manager does so). - -Therefore, still try to acquire the QUERY job (if job mask -permits it) but, do not treat failure as an error. - -Fixes: 6cc93bf28842526be2fd596a607ebca796b7fb2e -Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2369243 -Signed-off-by: Michal Privoznik -Reviewed-by: Pavel Hrdina ---- - src/qemu/qemu_driver.c | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c -index d2eddbd9ae..6bdeede2e8 100644 ---- a/src/qemu/qemu_driver.c -+++ b/src/qemu/qemu_driver.c -@@ -6158,6 +6158,7 @@ static char - { - virQEMUDriver *driver = dom->conn->privateData; - virDomainObj *vm; -+ bool hasJob = false; - char *ret = NULL; - - virCheckFlags(VIR_DOMAIN_XML_COMMON_FLAGS | VIR_DOMAIN_XML_UPDATE_CPU, -@@ -6169,8 +6170,10 @@ static char - if (virDomainGetXMLDescEnsureACL(dom->conn, vm->def, flags) < 0) - goto cleanup; - -- if (virDomainObjBeginJob(vm, VIR_JOB_QUERY) < 0) -- goto cleanup; -+ if (virDomainNestedJobAllowed(vm->job, VIR_JOB_QUERY) && -+ virDomainObjBeginJob(vm, VIR_JOB_QUERY) >= 0) { -+ hasJob = true; -+ } - - qemuDomainUpdateCurrentMemorySize(vm); - -@@ -6186,7 +6189,8 @@ static char - - ret = qemuDomainFormatXML(driver, vm, flags); - -- virDomainObjEndJob(vm); -+ if (hasJob) -+ virDomainObjEndJob(vm); - - cleanup: - virDomainObjEndAPI(&vm); diff --git a/fedora-42/SOURCES/0001-storage-stop-hardcoding-paths-for-mkfs-mount-umount.patch b/fedora-42/SOURCES/0001-storage-stop-hardcoding-paths-for-mkfs-mount-umount.patch deleted file mode 100644 index 2865d28..0000000 --- a/fedora-42/SOURCES/0001-storage-stop-hardcoding-paths-for-mkfs-mount-umount.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 63e4cbd109374f44e8bd4f8d1af5e2a2c67611bc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= -Date: Mon, 28 Apr 2025 11:42:13 +0100 -Subject: [PATCH] storage: stop hardcoding paths for mkfs, mount, umount -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Daniel P. Berrangé - -This was always undesirable but now causes problems on Fedora 42 -where at build time we detect a /sbin path but at runtime this -will only exist on upgraded machines, not fresh installs. - -Reviewed-by: Peter Krempa -Signed-off-by: Daniel P. Berrangé ---- - meson.build | 13 ------------- - src/storage/storage_backend_fs.c | 17 +++-------------- - 2 files changed, 3 insertions(+), 27 deletions(-) - -diff --git a/meson.build b/meson.build -index 37b1caa566..14c98b49a1 100644 ---- a/meson.build -+++ b/meson.build -@@ -1827,23 +1827,10 @@ if conf.has('WITH_LIBVIRTD') - endif - endif - -- if fs_enable -- mount_prog = find_program('mount', required: get_option('storage_fs'), dirs: libvirt_sbin_path) -- umount_prog = find_program('umount', required: get_option('storage_fs'), dirs: libvirt_sbin_path) -- mkfs_prog = find_program('mkfs', required: get_option('storage_fs'), dirs: libvirt_sbin_path) -- -- if not mount_prog.found() or not umount_prog.found() or not mkfs_prog.found() -- fs_enable = false -- endif -- endif -- - if fs_enable - use_storage = true - - conf.set('WITH_STORAGE_FS', 1) -- conf.set_quoted('MOUNT', mount_prog.full_path()) -- conf.set_quoted('UMOUNT', umount_prog.full_path()) -- conf.set_quoted('MKFS', mkfs_prog.full_path()) - endif - endif - -diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c -index fce395d60f..6ec359625a 100644 ---- a/src/storage/storage_backend_fs.c -+++ b/src/storage/storage_backend_fs.c -@@ -304,7 +304,7 @@ virStorageBackendFileSystemMount(virStoragePoolObj *pool) - if (!(src = virStorageBackendFileSystemGetPoolSource(pool))) - return -1; - -- cmd = virStorageBackendFileSystemMountCmd(MOUNT, def, src); -+ cmd = virStorageBackendFileSystemMountCmd("mount", def, src); - - /* Mounting a shared FS might take a long time. Don't hold - * the pool locked meanwhile. */ -@@ -362,7 +362,7 @@ virStorageBackendFileSystemStop(virStoragePoolObj *pool) - if ((rc = virStorageBackendFileSystemIsMounted(pool)) != 1) - return rc; - -- cmd = virCommandNewArgList(UMOUNT, def->target.path, NULL); -+ cmd = virCommandNewArgList("umount", def->target.path, NULL); - return virCommandRun(cmd, NULL); - } - #endif /* WITH_STORAGE_FS */ -@@ -402,18 +402,7 @@ virStorageBackendExecuteMKFS(const char *device, - g_autoptr(virCommand) cmd = NULL; - g_autofree char *mkfs = NULL; - --#if WITH_STORAGE_FS -- mkfs = virFindFileInPath(MKFS); --#endif /* WITH_STORAGE_FS */ -- -- if (!mkfs) { -- virReportError(VIR_ERR_INTERNAL_ERROR, -- _("mkfs is not available on this platform: Failed to make filesystem of type '%1$s' on device '%2$s'"), -- format, device); -- return -1; -- } -- -- cmd = virCommandNewArgList(mkfs, "-t", format, NULL); -+ cmd = virCommandNewArgList("mkfs", "-t", format, NULL); - - /* use the force, otherwise mkfs.xfs won't overwrite existing fs. - * Similarly mkfs.ext2, mkfs.ext3, and mkfs.ext4 require supplying -F --- -2.49.0 - diff --git a/fedora-42/SOURCES/0001-util-avoid-overflow-in-hextable-buffer.patch b/fedora-42/SOURCES/0001-util-avoid-overflow-in-hextable-buffer.patch deleted file mode 100644 index ae012f7..0000000 --- a/fedora-42/SOURCES/0001-util-avoid-overflow-in-hextable-buffer.patch +++ /dev/null @@ -1,43 +0,0 @@ -From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= -To: devel@lists.libvirt.org -Subject: [PATCH] util: avoid overflow in hextable buffer -Date: Mon, 20 Jan 2025 10:09:24 +0000 -Message-ID: <20250120100924.3864818-1-berrange@redhat.com> -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The assigned string is 17 chars long once the trailing nul is taken -into account. This triggers a warning with GCC 15 - - src/util/virsystemd.c: In function ‘virSystemdEscapeName’: - src/util/virsystemd.c:59:38: error: initializer-string for array of ‘char’ is too long [-Werror=unterminated-string-initialization] - 59 | static const char hextable[16] = "0123456789abcdef"; - | ^~~~~~~~~~~~~~~~~~ - -Switch to a dynamically sized array as used in all the other places -we have a hextable array. - -See also: https://gcc.gnu.org/PR115185 -Reported-by: Yaakov Selkowitz -Signed-off-by: Daniel P. Berrangé ---- - src/util/virsystemd.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c -index 5b772e29dd..d46e5f74fc 100644 ---- a/src/util/virsystemd.c -+++ b/src/util/virsystemd.c -@@ -56,7 +56,7 @@ struct _virSystemdActivationEntry { - static void virSystemdEscapeName(virBuffer *buf, - const char *name) - { -- static const char hextable[16] = "0123456789abcdef"; -+ static const char hextable[] = "0123456789abcdef"; - - #define ESCAPE(c) \ - do { \ --- -2.47.1 - diff --git a/fedora-42/SOURCES/0001-util-stop-hardcoding-numad-path.patch b/fedora-42/SOURCES/0001-util-stop-hardcoding-numad-path.patch deleted file mode 100644 index d0e8938..0000000 --- a/fedora-42/SOURCES/0001-util-stop-hardcoding-numad-path.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 7ab0f1c2a3fddf46d381f055e49111e3063b4829 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= -Date: Mon, 28 Apr 2025 11:47:34 +0100 -Subject: [PATCH] util: stop hardcoding numad path -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Daniel P. Berrangé - -Change the meson rules to always enable numad if on a Linux host, unless -the meson options say not to. - -Reviewed-by: Peter Krempa -Signed-off-by: Daniel P. Berrangé ---- - meson.build | 10 +++------- - src/util/virnuma.c | 2 +- - 2 files changed, 4 insertions(+), 8 deletions(-) - -diff --git a/meson.build b/meson.build -index 14c98b49a1..767205f44b 100644 ---- a/meson.build -+++ b/meson.build -@@ -2028,14 +2028,10 @@ if not get_option('nss').disabled() - endif - endif - --if not get_option('numad').disabled() and numactl_dep.found() -- numad_prog = find_program('numad', required: get_option('numad'), dirs: libvirt_sbin_path) -- if numad_prog.found() -- conf.set('WITH_NUMAD', 1) -- conf.set_quoted('NUMAD', numad_prog.full_path()) -- endif -+if not get_option('numad').disabled() and numactl_dep.found() and host_machine.system() == 'linux' -+ conf.set('WITH_NUMAD', 1) - elif get_option('numad').enabled() -- error('You must have numactl enabled for numad support.') -+ error('You must have a Linux host with numactl enabled for numad support.') - endif - - # nwfilter should only be compiled for linux, and only if the -diff --git a/src/util/virnuma.c b/src/util/virnuma.c -index 9393c20875..67c51630c7 100644 ---- a/src/util/virnuma.c -+++ b/src/util/virnuma.c -@@ -61,7 +61,7 @@ virNumaGetAutoPlacementAdvice(unsigned short vcpus, - g_autoptr(virCommand) cmd = NULL; - char *output = NULL; - -- cmd = virCommandNewArgList(NUMAD, "-w", NULL); -+ cmd = virCommandNewArgList("numad", "-w", NULL); - virCommandAddArgFormat(cmd, "%d:%llu", vcpus, - VIR_DIV_UP(balloon, 1024)); - --- -2.49.0 - diff --git a/fedora-42/SOURCES/0001-wireshark-Drop-needless-declaration-of-proto_registe.patch b/fedora-42/SOURCES/0001-wireshark-Drop-needless-declaration-of-proto_registe.patch deleted file mode 100644 index daf582c..0000000 --- a/fedora-42/SOURCES/0001-wireshark-Drop-needless-declaration-of-proto_registe.patch +++ /dev/null @@ -1,36 +0,0 @@ -From b825bb556bd3967bf5422c243b77bd4038e317e2 Mon Sep 17 00:00:00 2001 -Message-ID: -From: Michal Privoznik -Date: Mon, 13 Oct 2025 10:34:51 +0200 -Subject: [PATCH 1/8] wireshark: Drop needless declaration of - proto_register_libvirt() and proto_reg_handoff_libvirt() -Content-type: text/plain - -Both proto_register_libvirt() and proto_reg_handoff_libvirt() are -declared in packet-libvirt.h which is included from plugin.c. -There's no need to provide another declaration in plugin.c. - -Signed-off-by: Michal Privoznik -Reviewed-by: Peter Krempa -Signed-off-by: Cole Robinson ---- - tools/wireshark/src/plugin.c | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/tools/wireshark/src/plugin.c b/tools/wireshark/src/plugin.c -index 9a83f2ca07..19b25e7b1a 100644 ---- a/tools/wireshark/src/plugin.c -+++ b/tools/wireshark/src/plugin.c -@@ -72,9 +72,6 @@ void plugin_register(void) - - #else /* WIRESHARK_VERSION >= 2009000 */ - --void proto_register_libvirt(void); --void proto_reg_handoff_libvirt(void); -- - WS_DLL_PUBLIC_DEF const gchar plugin_version[] = PLUGIN_VERSION; - WS_DLL_PUBLIC_DEF const int plugin_want_major = WIRESHARK_VERSION_MAJOR; - WS_DLL_PUBLIC_DEF const int plugin_want_minor = WIRESHARK_VERSION_MINOR; --- -2.51.0 - diff --git a/fedora-42/SOURCES/0002-wireshark-Switch-header-files-to-pragma-once.patch b/fedora-42/SOURCES/0002-wireshark-Switch-header-files-to-pragma-once.patch deleted file mode 100644 index df1e1de..0000000 --- a/fedora-42/SOURCES/0002-wireshark-Switch-header-files-to-pragma-once.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 41d3b457972bde85991fa7ed6f282370aca4b2af Mon Sep 17 00:00:00 2001 -Message-ID: <41d3b457972bde85991fa7ed6f282370aca4b2af.1760476767.git.crobinso@redhat.com> -In-Reply-To: -References: -From: Michal Privoznik -Date: Fri, 10 Oct 2025 15:20:05 +0200 -Subject: [PATCH 2/8] wireshark: Switch header files to #pragma once -Content-type: text/plain - -The genxdrstub.pl script generates some header files. But they -use the old pattern to guard against multiple inclusion: - - #ifndef SOMETHING_H - #define SOMETHING_H - ... - #endif - -Change the script to generate just '#pragma once' used everywhere -else in our code. - -Signed-off-by: Michal Privoznik -Reviewed-by: Peter Krempa -Signed-off-by: Cole Robinson ---- - tools/wireshark/util/genxdrstub.pl | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/tools/wireshark/util/genxdrstub.pl b/tools/wireshark/util/genxdrstub.pl -index 8cfda25a27..01b663a88c 100755 ---- a/tools/wireshark/util/genxdrstub.pl -+++ b/tools/wireshark/util/genxdrstub.pl -@@ -563,11 +563,8 @@ sub add_header_file { - local $self->{header_contents} = []; - $self->print("/* *DO NOT MODIFY* this file directly.\n"); - $self->print(" * This file was generated by $0 from libvirt version $libvirt_version */\n"); -- my $ucname = uc $name; -- $self->print("#ifndef _$ucname\_H_\n"); -- $self->print("#define _$ucname\_H_\n"); -+ $self->print("#pragma once\n"); - $block->(); -- $self->print("#endif /* _$ucname\_H_ */"); - push @{ $self->{headers} }, [ $name, delete $self->{header_contents} ]; - } - --- -2.51.0 - diff --git a/fedora-42/SOURCES/0003-wireshark-Move-WIRESHARK_VERSION-macro-definition.patch b/fedora-42/SOURCES/0003-wireshark-Move-WIRESHARK_VERSION-macro-definition.patch deleted file mode 100644 index 19bacea..0000000 --- a/fedora-42/SOURCES/0003-wireshark-Move-WIRESHARK_VERSION-macro-definition.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 02a0e78bf54c903da8922c56bade9b3298ade351 Mon Sep 17 00:00:00 2001 -Message-ID: <02a0e78bf54c903da8922c56bade9b3298ade351.1760476767.git.crobinso@redhat.com> -In-Reply-To: -References: -From: Michal Privoznik -Date: Mon, 13 Oct 2025 09:04:17 +0200 -Subject: [PATCH 3/8] wireshark: Move WIRESHARK_VERSION macro definition -Content-type: text/plain - -Soon, other parts of the wireshark code will need to -differentiate wrt wireshark version. Therefore, move the -WIRESHARK_VERSION macro definition among with its deps into -packet-libvirt.h. - -Signed-off-by: Michal Privoznik -Reviewed-by: Peter Krempa -Signed-off-by: Cole Robinson ---- - tools/wireshark/src/packet-libvirt.h | 14 ++++++++++++++ - tools/wireshark/src/plugin.c | 14 -------------- - 2 files changed, 14 insertions(+), 14 deletions(-) - -diff --git a/tools/wireshark/src/packet-libvirt.h b/tools/wireshark/src/packet-libvirt.h -index 14e6e13696..15cfcb0534 100644 ---- a/tools/wireshark/src/packet-libvirt.h -+++ b/tools/wireshark/src/packet-libvirt.h -@@ -19,5 +19,19 @@ - - #pragma once - -+#ifdef WITH_WS_VERSION -+# include -+#else -+# include -+# define WIRESHARK_VERSION_MAJOR VERSION_MAJOR -+# define WIRESHARK_VERSION_MINOR VERSION_MINOR -+# define WIRESHARK_VERSION_MICRO VERSION_MICRO -+#endif -+ -+#define WIRESHARK_VERSION \ -+ ((WIRESHARK_VERSION_MAJOR * 1000 * 1000) + \ -+ (WIRESHARK_VERSION_MINOR * 1000) + \ -+ (WIRESHARK_VERSION_MICRO)) -+ - void proto_register_libvirt(void); - void proto_reg_handoff_libvirt(void); -diff --git a/tools/wireshark/src/plugin.c b/tools/wireshark/src/plugin.c -index 19b25e7b1a..64317b5280 100644 ---- a/tools/wireshark/src/plugin.c -+++ b/tools/wireshark/src/plugin.c -@@ -12,15 +12,6 @@ - - #include - --#ifdef WITH_WS_VERSION --# include --#else --# include --# define WIRESHARK_VERSION_MAJOR VERSION_MAJOR --# define WIRESHARK_VERSION_MINOR VERSION_MINOR --# define WIRESHARK_VERSION_MICRO VERSION_MICRO --#endif -- - #define HAVE_PLUGINS 1 - #include - /* plugins are DLLs */ -@@ -32,11 +23,6 @@ - /* Let the plugin version be the version of libvirt */ - #define PLUGIN_VERSION VERSION - --#define WIRESHARK_VERSION \ -- ((WIRESHARK_VERSION_MAJOR * 1000 * 1000) + \ -- (WIRESHARK_VERSION_MINOR * 1000) + \ -- (WIRESHARK_VERSION_MICRO)) -- - #if WIRESHARK_VERSION < 2005000 - - WS_DLL_PUBLIC_DEF const gchar version[] = VERSION; --- -2.51.0 - diff --git a/fedora-42/SOURCES/0004-wireshark-Fix-int-type-of-some-virNetMessageHeader-m.patch b/fedora-42/SOURCES/0004-wireshark-Fix-int-type-of-some-virNetMessageHeader-m.patch deleted file mode 100644 index 57c978a..0000000 --- a/fedora-42/SOURCES/0004-wireshark-Fix-int-type-of-some-virNetMessageHeader-m.patch +++ /dev/null @@ -1,133 +0,0 @@ -From 7374c4ecbd591b02f7be4b2918addc6d5852aafb Mon Sep 17 00:00:00 2001 -Message-ID: <7374c4ecbd591b02f7be4b2918addc6d5852aafb.1760476767.git.crobinso@redhat.com> -In-Reply-To: -References: -From: Michal Privoznik -Date: Mon, 13 Oct 2025 09:21:30 +0200 -Subject: [PATCH 4/8] wireshark: Fix int type of some virNetMessageHeader - members -Content-type: text/plain - -Our virNetMessageHeader is a struct that's declared as follows: - - struct virNetMessageHeader { - unsigned prog; - unsigned vers; - int proc; - virNetMessageType type; - unsigned serial; - virNetMessageStatus status; - }; - -Now, per RFC 4506 enums are also encoded as signed integers. This -means, that only 'prog', 'vers' and 'serial' are really unsigned -integers. The others ('proc', 'type' and 'status') are encoded as -signed integers. Fix their type when dissecting. - -While at it, also follow latest trend in wireshark and switch -from guint32 to uint32_t. - -Signed-off-by: Michal Privoznik -Reviewed-by: Peter Krempa -Signed-off-by: Cole Robinson ---- - tools/wireshark/src/packet-libvirt.c | 34 +++++++++++++++++++--------- - 1 file changed, 23 insertions(+), 11 deletions(-) - -diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/packet-libvirt.c -index da2aabd98a..af14c6bed7 100644 ---- a/tools/wireshark/src/packet-libvirt.c -+++ b/tools/wireshark/src/packet-libvirt.c -@@ -92,7 +92,7 @@ typedef gboolean (*vir_xdr_dissector_t)(tvbuff_t *tvb, proto_tree *tree, XDR *xd - - typedef struct vir_dissector_index vir_dissector_index_t; - struct vir_dissector_index { -- guint32 proc; -+ int32_t proc; - vir_xdr_dissector_t args; - vir_xdr_dissector_t ret; - vir_xdr_dissector_t msg; -@@ -275,8 +275,10 @@ dissect_xdr_array(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, gint ett, - } - - static vir_xdr_dissector_t --find_payload_dissector(guint32 proc, guint32 type, -- const vir_dissector_index_t *pds, gsize length) -+find_payload_dissector(int32_t proc, -+ enum vir_net_message_type type, -+ const vir_dissector_index_t *pds, -+ gsize length) - { - const vir_dissector_index_t *pd; - guint32 first, last, direction; -@@ -309,6 +311,10 @@ find_payload_dissector(guint32 proc, guint32 type, - return pd->ret; - case VIR_NET_MESSAGE: - return pd->msg; -+ case VIR_NET_STREAM: -+ case VIR_NET_STREAM_HOLE: -+ /* Handled elsewhere */ -+ return NULL; - } - return NULL; - } -@@ -397,8 +403,12 @@ dissect_xdr_stream_hole(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) - #include "libvirt/protocol.h" - - static void --dissect_libvirt_payload(tvbuff_t *tvb, proto_tree *tree, -- guint32 prog, guint32 proc, guint32 type, guint32 status) -+dissect_libvirt_payload(tvbuff_t *tvb, -+ proto_tree *tree, -+ uint32_t prog, -+ int32_t proc, -+ int32_t type, -+ int32_t status) - { - gssize payload_length; - -@@ -430,7 +440,8 @@ dissect_libvirt_payload(tvbuff_t *tvb, proto_tree *tree, - return; - - unknown: -- dbg("Cannot determine payload: Prog=%u, Proc=%u, Type=%u, Status=%u", prog, proc, type, status); -+ dbg("Cannot determine payload: Prog=%u, Proc=%d, Type=%d, Status=%d", -+ prog, proc, type, status); - proto_tree_add_item(tree, hf_libvirt_unknown, tvb, VIR_HEADER_LEN, -1, ENC_NA); - } - -@@ -439,7 +450,8 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, - void *opaque G_GNUC_UNUSED) - { - goffset offset; -- guint32 prog, proc, type, serial, status; -+ uint32_t prog, serial; -+ int32_t proc, type, status; - const value_string *vs; - - col_set_str(pinfo->cinfo, COL_PROTOCOL, "Libvirt"); -@@ -448,17 +460,17 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, - offset = 4; /* End of length field */ - prog = tvb_get_ntohl(tvb, offset); offset += 4; - offset += 4; /* Ignore version header field */ -- proc = tvb_get_ntohl(tvb, offset); offset += 4; -- type = tvb_get_ntohl(tvb, offset); offset += 4; -+ proc = tvb_get_ntohil(tvb, offset); offset += 4; -+ type = tvb_get_ntohil(tvb, offset); offset += 4; - serial = tvb_get_ntohl(tvb, offset); offset += 4; -- status = tvb_get_ntohl(tvb, offset); offset += 4; -+ status = tvb_get_ntohil(tvb, offset); offset += 4; - - col_add_fstr(pinfo->cinfo, COL_INFO, "Prog=%s", - val_to_str(prog, program_strings, "%x")); - - vs = get_program_data(prog, VIR_PROGRAM_PROCSTRINGS); - if (vs == NULL) { -- col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=%u", proc); -+ col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=%d", proc); - } else { - col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=%s", val_to_str(proc, vs, "%d")); - } --- -2.51.0 - diff --git a/fedora-42/SOURCES/0005-wireshark-Don-t-special-case-retval-of-get_program_d.patch b/fedora-42/SOURCES/0005-wireshark-Don-t-special-case-retval-of-get_program_d.patch deleted file mode 100644 index dab6c98..0000000 --- a/fedora-42/SOURCES/0005-wireshark-Don-t-special-case-retval-of-get_program_d.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 1086888f95a322101f8cf53b63c96600ccbeb882 Mon Sep 17 00:00:00 2001 -Message-ID: <1086888f95a322101f8cf53b63c96600ccbeb882.1760476767.git.crobinso@redhat.com> -In-Reply-To: -References: -From: Michal Privoznik -Date: Fri, 10 Oct 2025 19:16:54 +0200 -Subject: [PATCH 5/8] wireshark: Don't special case retval of - get_program_data() in dissect_libvirt_message() -Content-type: text/plain - -The get_program_data() function returns a pointer (in this -specific case to an array of procedure strings) which, if -non-NULL is then passed val_to_str(). Well, if val_to_str() sees -NULL it is treated gracefully, i.e. like if the numeric value -'proc' wasn't found in the array. - -Therefore, there's no need to special case call to -col_append_fstr(). Both result into the same behaviour. - -Signed-off-by: Michal Privoznik -Reviewed-by: Peter Krempa -Signed-off-by: Cole Robinson ---- - tools/wireshark/src/packet-libvirt.c | 6 +----- - 1 file changed, 1 insertion(+), 5 deletions(-) - -diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/packet-libvirt.c -index af14c6bed7..6c729801d4 100644 ---- a/tools/wireshark/src/packet-libvirt.c -+++ b/tools/wireshark/src/packet-libvirt.c -@@ -469,11 +469,7 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, - val_to_str(prog, program_strings, "%x")); - - vs = get_program_data(prog, VIR_PROGRAM_PROCSTRINGS); -- if (vs == NULL) { -- col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=%d", proc); -- } else { -- col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=%s", val_to_str(proc, vs, "%d")); -- } -+ col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=%s", val_to_str(proc, vs, "%d")); - - col_append_fstr(pinfo->cinfo, COL_INFO, " Type=%s Serial=%u Status=%s", - val_to_str(type, type_strings, "%d"), serial, --- -2.51.0 - diff --git a/fedora-42/SOURCES/0006-wireshark-Introduce-and-use-vir_val_to_str.patch b/fedora-42/SOURCES/0006-wireshark-Introduce-and-use-vir_val_to_str.patch deleted file mode 100644 index 439bff6..0000000 --- a/fedora-42/SOURCES/0006-wireshark-Introduce-and-use-vir_val_to_str.patch +++ /dev/null @@ -1,68 +0,0 @@ -From ba2c4bdd5cbccd5c0673149cf76802c98b70d2f7 Mon Sep 17 00:00:00 2001 -Message-ID: -In-Reply-To: -References: -From: Michal Privoznik -Date: Fri, 10 Oct 2025 18:23:18 +0200 -Subject: [PATCH 6/8] wireshark: Introduce and use vir_val_to_str() -Content-type: text/plain - -Wireshark offers val_to_str() function which converts numeric -value to string by looking up value ('val') in an array ('vs') of - pairs. If no corresponding string is found, then -the value is formatted using given 'fmt' string. - -Starting from wireshark-4.6.0 not only this function gained -another argument but also returns a strdup()-ed string. To keep -our code simple, let's introduce a wrapper so which can be then -adjusted as needed. - -Signed-off-by: Michal Privoznik -Reviewed-by: Peter Krempa -Signed-off-by: Cole Robinson ---- - tools/wireshark/src/packet-libvirt.c | 17 +++++++++++++---- - 1 file changed, 13 insertions(+), 4 deletions(-) - -diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/packet-libvirt.c -index 6c729801d4..f6ad2c4578 100644 ---- a/tools/wireshark/src/packet-libvirt.c -+++ b/tools/wireshark/src/packet-libvirt.c -@@ -140,6 +140,15 @@ static const value_string status_strings[] = { - { -1, NULL } - }; - -+static const char * -+G_GNUC_PRINTF(3, 0) -+vir_val_to_str(const uint32_t val, -+ const value_string *vs, -+ const char *fmt) -+{ -+ return val_to_str(val, vs, fmt); -+} -+ - static gboolean - dissect_xdr_string(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, - guint32 maxlen) -@@ -466,14 +475,14 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, - status = tvb_get_ntohil(tvb, offset); offset += 4; - - col_add_fstr(pinfo->cinfo, COL_INFO, "Prog=%s", -- val_to_str(prog, program_strings, "%x")); -+ vir_val_to_str(prog, program_strings, "%x")); - - vs = get_program_data(prog, VIR_PROGRAM_PROCSTRINGS); -- col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=%s", val_to_str(proc, vs, "%d")); -+ col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=%s", vir_val_to_str(proc, vs, "%d")); - - col_append_fstr(pinfo->cinfo, COL_INFO, " Type=%s Serial=%u Status=%s", -- val_to_str(type, type_strings, "%d"), serial, -- val_to_str(status, status_strings, "%d")); -+ vir_val_to_str(type, type_strings, "%d"), serial, -+ vir_val_to_str(status, status_strings, "%d")); - - if (tree) { - gint *hf_proc; --- -2.51.0 - diff --git a/fedora-42/SOURCES/0007-wireshark-Don-t-leak-column-strings.patch b/fedora-42/SOURCES/0007-wireshark-Don-t-leak-column-strings.patch deleted file mode 100644 index 43b790e..0000000 --- a/fedora-42/SOURCES/0007-wireshark-Don-t-leak-column-strings.patch +++ /dev/null @@ -1,165 +0,0 @@ -From 002b9f559d69b92e77ab2d234df6966fecdaf0ec Mon Sep 17 00:00:00 2001 -Message-ID: <002b9f559d69b92e77ab2d234df6966fecdaf0ec.1760476767.git.crobinso@redhat.com> -In-Reply-To: -References: -From: Michal Privoznik -Date: Fri, 10 Oct 2025 19:13:48 +0200 -Subject: [PATCH 7/8] wireshark: Don't leak column strings -Content-type: text/plain - -One of the problems of using val_to_str() is that it may return a -const string from given table ('vs'), OR return an allocated one. -Since the caller has no idea which case it is, it resides to safe -option and don't free returned string. But that might lead to a -memleak. This behaviour is fixed with wireshark-4.6.0 and support -for it will be introduced soon. But first, make vir_val_to_str() -behave like fixed val_to_str() from newer wireshark: just always -allocate the string. - -Now, if val_to_str() needs to allocate new memory it obtains -allocator by calling wmem_packet_scope() which is what we may do -too. - -Hand in hand with that, we need to free the memory using the -correct allocator, hence wmem_free(). But let's put it into a -wrapper vir_wmem_free() because just like val_to_str(), it'll -need additional argument when adapting to new wireshark. - -Oh, and freeing the memory right after col_add_fstr() is safe as -it uses vsnprintf() under the hood to format passed args. - -One last thing, the wmem.h file used to live under epan/wmem/ but -then in v3.5.0~240 [1] was moved to wsutil/wmem/. - -1: https://gitlab.com/wireshark/wireshark/-/commit/7f9c1f5f92c131354fc8b2b88d473706786064c0 -Signed-off-by: Michal Privoznik -Reviewed-by: Peter Krempa -Signed-off-by: Cole Robinson ---- - meson.build | 20 ++++++++++++++++ - tools/wireshark/src/meson.build | 1 + - tools/wireshark/src/packet-libvirt.c | 35 ++++++++++++++++++++++------ - 3 files changed, 49 insertions(+), 7 deletions(-) - -diff --git a/meson.build b/meson.build -index bcc18b20e5..a1e0e5ecd5 100644 ---- a/meson.build -+++ b/meson.build -@@ -1365,6 +1365,26 @@ if wireshark_dep.found() - if cc.check_header('wireshark/ws_version.h') - conf.set('WITH_WS_VERSION', 1) - endif -+ -+ # Find wmem.h -+ # But it's not as easy as you'd think. Ubuntu 20.04 has split parts of -+ # libwireshark.so into libwsutil.so but: -+ # a) wireshark.pc never mentions it, -+ # b) libwsutil-dev package doesn't install pkg-config file. -+ # Fortunately, it's fixed in 24.04. -+ if cc.check_header('wireshark/epan/wmem/wmem.h', dependencies: wireshark_dep) -+ conf.set('WITH_WS_EPAN_WMEM', 1) -+ elif cc.check_header('wireshark/wsutil/wmem/wmem.h', dependencies: wireshark_dep) -+ conf.set('WITH_WS_WSUTIL_WMEM', 1) -+ else -+ error('Unable to locate wmem.h file') -+ endif -+ -+ # TODO: drop wsutil dep once support for Ubuntu 20.04 is dropped -+ wsutil_dep = dependency('', required: false) -+ if not cc.has_function('wmem_free', dependencies: wireshark_dep) -+ wsutil_dep = cc.find_library('wsutil', required: true) -+ endif - endif - - # generic build dependencies checks -diff --git a/tools/wireshark/src/meson.build b/tools/wireshark/src/meson.build -index 9b452dc5ca..ba0df913e0 100644 ---- a/tools/wireshark/src/meson.build -+++ b/tools/wireshark/src/meson.build -@@ -9,6 +9,7 @@ shared_library( - ], - dependencies: [ - wireshark_dep, -+ wsutil_dep, - xdr_dep, - tools_dep, - ], -diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/packet-libvirt.c -index f6ad2c4578..3178ac6f27 100644 ---- a/tools/wireshark/src/packet-libvirt.c -+++ b/tools/wireshark/src/packet-libvirt.c -@@ -21,6 +21,11 @@ - #include - #include - #include -+#ifdef WITH_WS_EPAN_WMEM -+# include -+#elif WITH_WS_WSUTIL_WMEM -+# include -+#endif - #include - #include - #include "packet-libvirt.h" -@@ -140,13 +145,19 @@ static const value_string status_strings[] = { - { -1, NULL } - }; - --static const char * -+static char * - G_GNUC_PRINTF(3, 0) - vir_val_to_str(const uint32_t val, - const value_string *vs, - const char *fmt) - { -- return val_to_str(val, vs, fmt); -+ return val_to_str_wmem(wmem_packet_scope(), val, vs, fmt); -+} -+ -+static void -+vir_wmem_free(void *ptr) -+{ -+ wmem_free(wmem_packet_scope(), ptr); - } - - static gboolean -@@ -462,6 +473,10 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, - uint32_t prog, serial; - int32_t proc, type, status; - const value_string *vs; -+ char *prog_str = NULL; -+ char *proc_str = NULL; -+ char *type_str = NULL; -+ char *status_str = NULL; - - col_set_str(pinfo->cinfo, COL_PROTOCOL, "Libvirt"); - col_clear(pinfo->cinfo, COL_INFO); -@@ -474,15 +489,21 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, - serial = tvb_get_ntohl(tvb, offset); offset += 4; - status = tvb_get_ntohil(tvb, offset); offset += 4; - -- col_add_fstr(pinfo->cinfo, COL_INFO, "Prog=%s", -- vir_val_to_str(prog, program_strings, "%x")); -+ prog_str = vir_val_to_str(prog, program_strings, "%x"); -+ col_add_fstr(pinfo->cinfo, COL_INFO, "Prog=%s", prog_str); -+ vir_wmem_free(prog_str); - - vs = get_program_data(prog, VIR_PROGRAM_PROCSTRINGS); -- col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=%s", vir_val_to_str(proc, vs, "%d")); -+ proc_str = vir_val_to_str(proc, vs, "%d"); -+ col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=%s", proc_str); -+ vir_wmem_free(proc_str); - -+ type_str = vir_val_to_str(type, type_strings, "%d"); -+ status_str = vir_val_to_str(status, status_strings, "%d"); - col_append_fstr(pinfo->cinfo, COL_INFO, " Type=%s Serial=%u Status=%s", -- vir_val_to_str(type, type_strings, "%d"), serial, -- vir_val_to_str(status, status_strings, "%d")); -+ type_str, serial, status_str); -+ vir_wmem_free(status_str); -+ vir_wmem_free(type_str); - - if (tree) { - gint *hf_proc; --- -2.51.0 - diff --git a/fedora-42/SOURCES/0008-wireshark-Adapt-to-wireshark-4.6.0.patch b/fedora-42/SOURCES/0008-wireshark-Adapt-to-wireshark-4.6.0.patch deleted file mode 100644 index ebb56b5..0000000 --- a/fedora-42/SOURCES/0008-wireshark-Adapt-to-wireshark-4.6.0.patch +++ /dev/null @@ -1,493 +0,0 @@ -From b42a12174c787b99cd6fcb29b44e4b13bd64ee58 Mon Sep 17 00:00:00 2001 -Message-ID: -In-Reply-To: -References: -From: Michal Privoznik -Date: Fri, 10 Oct 2025 15:22:34 +0200 -Subject: [PATCH 8/8] wireshark: Adapt to wireshark-4.6.0 -Content-type: text/plain - -The main difference is that wmem_packet_scope() is gone [1] but -the packet_info struct has 'pool` member which points to the -allocator used for given packet. - -Unfortunately, while we were given pointer to packet_info at the -entry level to our dissector (dissect_libvirt() -> -tcp_dissect_pdus() -> dissect_libvirt_message()) it was never -propagated to generated/primitive dissectors. - -But not all dissectors need to allocate memory, so mark the new -argument as unused. And while our generator could be rewritten so -that the argument is annotated as unused iff it's really unused, -I couldn't bother rewriting it. It's generated code after all. -Too much work for little gain. - -Another significant change is that val_to_str() now requires new -argument: pointer to allocator to use because it always allocates -new memory [2][3]. - -1: https://gitlab.com/wireshark/wireshark/-/commit/5ca5c9ca372e06881b23ba9f4fdcb6b479886444 -2: https://gitlab.com/wireshark/wireshark/-/commit/b63599762468e4cf1783419a5556377604d344bb -3: https://gitlab.com/wireshark/wireshark/-/commit/84799be215313e61b83a3eaf074f89d6ee349b8c -Resolves: https://gitlab.com/libvirt/libvirt/-/issues/823 -Signed-off-by: Michal Privoznik -Reviewed-by: Peter Krempa -Signed-off-by: Cole Robinson ---- - tools/wireshark/src/packet-libvirt.c | 157 +++++++++++++++++++-------- - tools/wireshark/util/genxdrstub.pl | 18 +-- - 2 files changed, 119 insertions(+), 56 deletions(-) - -diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/packet-libvirt.c -index 3178ac6f27..c5c8fb4756 100644 ---- a/tools/wireshark/src/packet-libvirt.c -+++ b/tools/wireshark/src/packet-libvirt.c -@@ -63,7 +63,7 @@ static gint ett_libvirt_stream_hole = -1; - - #define XDR_PRIMITIVE_DISSECTOR(xtype, ctype, ftype) \ - static gboolean \ -- dissect_xdr_##xtype(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) \ -+ dissect_xdr_##xtype(tvbuff_t *tvb, packet_info *pinfo G_GNUC_UNUSED, proto_tree *tree, XDR *xdrs, int hf) \ - { \ - goffset start; \ - ctype val; \ -@@ -93,7 +93,7 @@ XDR_PRIMITIVE_DISSECTOR(bool, bool_t, boolean) - - VIR_WARNINGS_RESET - --typedef gboolean (*vir_xdr_dissector_t)(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf); -+typedef gboolean (*vir_xdr_dissector_t)(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, XDR *xdrs, int hf); - - typedef struct vir_dissector_index vir_dissector_index_t; - struct vir_dissector_index { -@@ -146,22 +146,32 @@ static const value_string status_strings[] = { - }; - - static char * --G_GNUC_PRINTF(3, 0) --vir_val_to_str(const uint32_t val, -+G_GNUC_PRINTF(4, 0) -+vir_val_to_str(packet_info *pinfo, -+ const uint32_t val, - const value_string *vs, - const char *fmt) - { -- return val_to_str_wmem(wmem_packet_scope(), val, vs, fmt); -+#if WIRESHARK_VERSION < 4006000 -+ return val_to_str_wmem(pinfo->pool, val, vs, fmt); -+#else -+ return val_to_str(pinfo->pool, val, vs, fmt); -+#endif - } - - static void --vir_wmem_free(void *ptr) -+vir_wmem_free(packet_info *pinfo, -+ void *ptr) - { -- wmem_free(wmem_packet_scope(), ptr); -+ wmem_free(pinfo->pool, ptr); - } - - static gboolean --dissect_xdr_string(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, -+dissect_xdr_string(tvbuff_t *tvb, -+ packet_info *pinfo G_GNUC_UNUSED, -+ proto_tree *tree, -+ XDR *xdrs, -+ int hf, - guint32 maxlen) - { - goffset start; -@@ -179,7 +189,11 @@ dissect_xdr_string(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, - } - - static gboolean --dissect_xdr_opaque(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, -+dissect_xdr_opaque(tvbuff_t *tvb, -+ packet_info *pinfo, -+ proto_tree *tree, -+ XDR *xdrs, -+ int hf, - guint32 size) - { - goffset start; -@@ -190,7 +204,7 @@ dissect_xdr_opaque(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, - start = xdr_getpos(xdrs); - if ((rc = xdr_opaque(xdrs, (caddr_t)val, size))) { - gint len = xdr_getpos(xdrs) - start; -- const char *s = tvb_bytes_to_str(wmem_packet_scope(), tvb, start, len); -+ const char *s = tvb_bytes_to_str(pinfo->pool, tvb, start, len); - - proto_tree_add_bytes_format_value(tree, hf, tvb, start, len, NULL, "%s", s); - } else { -@@ -202,7 +216,11 @@ dissect_xdr_opaque(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, - } - - static gboolean --dissect_xdr_bytes(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, -+dissect_xdr_bytes(tvbuff_t *tvb, -+ packet_info *pinfo, -+ proto_tree *tree, -+ XDR *xdrs, -+ int hf, - guint32 maxlen) - { - goffset start; -@@ -212,7 +230,7 @@ dissect_xdr_bytes(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, - start = xdr_getpos(xdrs); - if (xdr_bytes(xdrs, (char **)&val, &length, maxlen)) { - gint len = xdr_getpos(xdrs) - start; -- const char *s = tvb_bytes_to_str(wmem_packet_scope(), tvb, start, len); -+ const char *s = tvb_bytes_to_str(pinfo->pool, tvb, start, len); - - proto_tree_add_bytes_format_value(tree, hf, tvb, start, len, NULL, "%s", s); - free(val); -@@ -224,7 +242,11 @@ dissect_xdr_bytes(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, - } - - static gboolean --dissect_xdr_pointer(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, -+dissect_xdr_pointer(tvbuff_t *tvb, -+ packet_info *pinfo, -+ proto_tree *tree, -+ XDR *xdrs, -+ int hf, - vir_xdr_dissector_t dissect) - { - goffset start; -@@ -236,7 +258,7 @@ dissect_xdr_pointer(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, - return FALSE; - } - if (not_null) { -- return dissect(tvb, tree, xdrs, hf); -+ return dissect(tvb, pinfo, tree, xdrs, hf); - } else { - proto_item *ti; - ti = proto_tree_add_item(tree, hf, tvb, start, xdr_getpos(xdrs) - start, ENC_NA); -@@ -246,15 +268,22 @@ dissect_xdr_pointer(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, - } - - static gboolean --dissect_xdr_iterable(tvbuff_t *tvb, proto_item *ti, XDR *xdrs, gint ett, int rhf, -- guint32 length, vir_xdr_dissector_t dissect, goffset start) -+dissect_xdr_iterable(tvbuff_t *tvb, -+ packet_info *pinfo, -+ proto_item *ti, -+ XDR *xdrs, -+ gint ett, -+ int rhf, -+ guint32 length, -+ vir_xdr_dissector_t dissect, -+ goffset start) - { - proto_tree *tree; - guint32 i; - - tree = proto_item_add_subtree(ti, ett); - for (i = 0; i < length; i++) { -- if (!dissect(tvb, tree, xdrs, rhf)) -+ if (!dissect(tvb, pinfo, tree, xdrs, rhf)) - return FALSE; - } - proto_item_set_len(ti, xdr_getpos(xdrs) - start); -@@ -262,8 +291,16 @@ dissect_xdr_iterable(tvbuff_t *tvb, proto_item *ti, XDR *xdrs, gint ett, int rhf - } - - static gboolean --dissect_xdr_vector(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, gint ett, -- int rhf, const gchar *rtype, guint32 size, vir_xdr_dissector_t dissect) -+dissect_xdr_vector(tvbuff_t *tvb, -+ packet_info *pinfo, -+ proto_tree *tree, -+ XDR *xdrs, -+ int hf, -+ gint ett, -+ int rhf, -+ const gchar *rtype, -+ guint32 size, -+ vir_xdr_dissector_t dissect) - { - goffset start; - proto_item *ti; -@@ -271,12 +308,20 @@ dissect_xdr_vector(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, gint ett, - start = xdr_getpos(xdrs); - ti = proto_tree_add_item(tree, hf, tvb, start, -1, ENC_NA); - proto_item_append_text(ti, " :: %s[%u]", rtype, size); -- return dissect_xdr_iterable(tvb, ti, xdrs, ett, rhf, size, dissect, start); -+ return dissect_xdr_iterable(tvb, pinfo, ti, xdrs, ett, rhf, size, dissect, start); - } - - static gboolean --dissect_xdr_array(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, gint ett, -- int rhf, const gchar *rtype, guint32 maxlen, vir_xdr_dissector_t dissect) -+dissect_xdr_array(tvbuff_t *tvb, -+ packet_info *pinfo, -+ proto_tree *tree, -+ XDR *xdrs, -+ int hf, -+ gint ett, -+ int rhf, -+ const gchar *rtype, -+ guint32 maxlen, -+ vir_xdr_dissector_t dissect) - { - goffset start; - proto_item *ti; -@@ -291,7 +336,7 @@ dissect_xdr_array(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, gint ett, - - ti = proto_tree_add_item(tree, hf, tvb, start, -1, ENC_NA); - proto_item_append_text(ti, " :: %s<%u>", rtype, length); -- return dissect_xdr_iterable(tvb, ti, xdrs, ett, rhf, length, dissect, start); -+ return dissect_xdr_iterable(tvb, pinfo, ti, xdrs, ett, rhf, length, dissect, start); - } - - static vir_xdr_dissector_t -@@ -340,7 +385,10 @@ find_payload_dissector(int32_t proc, - } - - static void --dissect_libvirt_stream(tvbuff_t *tvb, proto_tree *tree, gint payload_length) -+dissect_libvirt_stream(tvbuff_t *tvb, -+ packet_info *pinfo G_GNUC_UNUSED, -+ proto_tree *tree, -+ gint payload_length) - { - proto_tree_add_item(tree, hf_libvirt_stream, tvb, VIR_HEADER_LEN, - payload_length - VIR_HEADER_LEN, ENC_NA); -@@ -357,6 +405,7 @@ dissect_libvirt_num_of_fds(tvbuff_t *tvb, proto_tree *tree) - - static void - dissect_libvirt_fds(tvbuff_t *tvb G_GNUC_UNUSED, -+ packet_info *pinfo G_GNUC_UNUSED, - gint start G_GNUC_UNUSED, - gint32 nfds G_GNUC_UNUSED) - { -@@ -364,8 +413,12 @@ dissect_libvirt_fds(tvbuff_t *tvb G_GNUC_UNUSED, - } - - static void --dissect_libvirt_payload_xdr_data(tvbuff_t *tvb, proto_tree *tree, gint payload_length, -- gint32 status, vir_xdr_dissector_t dissect) -+dissect_libvirt_payload_xdr_data(tvbuff_t *tvb, -+ packet_info *pinfo, -+ proto_tree *tree, -+ gint payload_length, -+ gint32 status, -+ vir_xdr_dissector_t dissect) - { - gint32 nfds = 0; - gint start = VIR_HEADER_LEN; -@@ -384,17 +437,21 @@ dissect_libvirt_payload_xdr_data(tvbuff_t *tvb, proto_tree *tree, gint payload_l - payload_data = (caddr_t)tvb_memdup(NULL, payload_tvb, 0, payload_length); - xdrmem_create(&xdrs, payload_data, payload_length, XDR_DECODE); - -- dissect(payload_tvb, tree, &xdrs, -1); -+ dissect(payload_tvb, pinfo, tree, &xdrs, -1); - - xdr_destroy(&xdrs); - g_free(payload_data); - - if (nfds != 0) -- dissect_libvirt_fds(tvb, start + payload_length, nfds); -+ dissect_libvirt_fds(tvb, pinfo, start + payload_length, nfds); - } - - static gboolean --dissect_xdr_stream_hole(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) -+dissect_xdr_stream_hole(tvbuff_t *tvb, -+ packet_info *pinfo, -+ proto_tree *tree, -+ XDR *xdrs, -+ int hf) - { - goffset start; - proto_item *ti; -@@ -411,10 +468,10 @@ dissect_xdr_stream_hole(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) - tree = proto_item_add_subtree(ti, ett_libvirt_stream_hole); - - hf = hf_libvirt_stream_hole_length; -- if (!dissect_xdr_hyper(tvb, tree, xdrs, hf)) return FALSE; -+ if (!dissect_xdr_hyper(tvb, pinfo, tree, xdrs, hf)) return FALSE; - - hf = hf_libvirt_stream_hole_flags; -- if (!dissect_xdr_u_int(tvb, tree, xdrs, hf)) return FALSE; -+ if (!dissect_xdr_u_int(tvb, pinfo, tree, xdrs, hf)) return FALSE; - - proto_item_set_len(ti, xdr_getpos(xdrs) - start); - return TRUE; -@@ -424,6 +481,7 @@ dissect_xdr_stream_hole(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) - - static void - dissect_libvirt_payload(tvbuff_t *tvb, -+ packet_info *pinfo, - proto_tree *tree, - uint32_t prog, - int32_t proc, -@@ -447,13 +505,13 @@ dissect_libvirt_payload(tvbuff_t *tvb, - xd = find_payload_dissector(proc, type, pds, *len); - if (xd == NULL) - goto unknown; -- dissect_libvirt_payload_xdr_data(tvb, tree, payload_length, status, xd); -+ dissect_libvirt_payload_xdr_data(tvb, pinfo, tree, payload_length, status, xd); - } else if (status == VIR_NET_ERROR) { -- dissect_libvirt_payload_xdr_data(tvb, tree, payload_length, status, dissect_xdr_remote_error); -+ dissect_libvirt_payload_xdr_data(tvb, pinfo, tree, payload_length, status, dissect_xdr_remote_error); - } else if (type == VIR_NET_STREAM) { /* implicitly, status == VIR_NET_CONTINUE */ -- dissect_libvirt_stream(tvb, tree, payload_length); -+ dissect_libvirt_stream(tvb, pinfo, tree, payload_length); - } else if (type == VIR_NET_STREAM_HOLE) { -- dissect_libvirt_payload_xdr_data(tvb, tree, payload_length, status, dissect_xdr_stream_hole); -+ dissect_libvirt_payload_xdr_data(tvb, pinfo, tree, payload_length, status, dissect_xdr_stream_hole); - } else { - goto unknown; - } -@@ -489,21 +547,21 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, - serial = tvb_get_ntohl(tvb, offset); offset += 4; - status = tvb_get_ntohil(tvb, offset); offset += 4; - -- prog_str = vir_val_to_str(prog, program_strings, "%x"); -+ prog_str = vir_val_to_str(pinfo, prog, program_strings, "%x"); - col_add_fstr(pinfo->cinfo, COL_INFO, "Prog=%s", prog_str); -- vir_wmem_free(prog_str); -+ vir_wmem_free(pinfo, prog_str); - - vs = get_program_data(prog, VIR_PROGRAM_PROCSTRINGS); -- proc_str = vir_val_to_str(proc, vs, "%d"); -+ proc_str = vir_val_to_str(pinfo, proc, vs, "%d"); - col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=%s", proc_str); -- vir_wmem_free(proc_str); -+ vir_wmem_free(pinfo, proc_str); - -- type_str = vir_val_to_str(type, type_strings, "%d"); -- status_str = vir_val_to_str(status, status_strings, "%d"); -+ type_str = vir_val_to_str(pinfo, type, type_strings, "%d"); -+ status_str = vir_val_to_str(pinfo, status, status_strings, "%d"); - col_append_fstr(pinfo->cinfo, COL_INFO, " Type=%s Serial=%u Status=%s", - type_str, serial, status_str); -- vir_wmem_free(status_str); -- vir_wmem_free(type_str); -+ vir_wmem_free(pinfo, status_str); -+ vir_wmem_free(pinfo, type_str); - - if (tree) { - gint *hf_proc; -@@ -532,21 +590,26 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, - proto_tree_add_item(libvirt_tree, hf_libvirt_status, tvb, offset, 4, ENC_NA); offset += 4; - - /* Dissect payload remaining */ -- dissect_libvirt_payload(tvb, libvirt_tree, prog, proc, type, status); -+ dissect_libvirt_payload(tvb, pinfo, libvirt_tree, prog, proc, type, status); - } - - return 0; - } - - static guint --get_message_len(packet_info *pinfo G_GNUC_UNUSED, tvbuff_t *tvb, int offset, void *data G_GNUC_UNUSED) -+get_message_len(packet_info *pinfo G_GNUC_UNUSED, -+ tvbuff_t *tvb, -+ int offset, -+ void *data G_GNUC_UNUSED) - { - return tvb_get_ntohl(tvb, offset); - } - - static int --dissect_libvirt(tvbuff_t *tvb, packet_info *pinfo, -- proto_tree *tree, void *data G_GNUC_UNUSED) -+dissect_libvirt(tvbuff_t *tvb, -+ packet_info *pinfo, -+ proto_tree *tree, -+ void *data G_GNUC_UNUSED) - { - /* Another magic const - 4; simply, how much bytes - * is needed to tell the length of libvirt packet. */ -diff --git a/tools/wireshark/util/genxdrstub.pl b/tools/wireshark/util/genxdrstub.pl -index 01b663a88c..f69695c091 100755 ---- a/tools/wireshark/util/genxdrstub.pl -+++ b/tools/wireshark/util/genxdrstub.pl -@@ -250,7 +250,7 @@ sub xdr_type { - sub render_caller { - my ($self, $hfid) = @_; - my $name = $c->rinc( 'dissect_xdr_'.($self->idstrip || lc($self->xdr_type)) ); -- "$name(tvb, tree, xdrs, hf)"; -+ "$name(tvb, pinfo, tree, xdrs, hf)"; - } - - sub ft_type { -@@ -345,7 +345,7 @@ BEGIN{::register_profile( - sub render_caller { - my ($self) = @_; - my ($klass) = ref($self) =~ /([^:]+)$/; -- sprintf '%s(tvb, tree, xdrs, hf, %s)', -+ sprintf '%s(tvb, pinfo, tree, xdrs, hf, %s)', - $c->rinc('dissect_xdr_'.lc($klass)), - $c->rinc('dissect_xdr_'.$self->reftype->idstrip); - } -@@ -359,7 +359,7 @@ BEGIN{::register_profile( - sub render_caller { - my ($self, $hfid) = @_; - my ($klass) = ref($self) =~ /([^:]+)$/; -- sprintf '%s(tvb, tree, xdrs, hf, %s)', -+ sprintf '%s(tvb, pinfo, tree, xdrs, hf, %s)', - $c->rinc('dissect_xdr_'.lc($klass)), $self->length || '~0'; - } - -@@ -447,7 +447,7 @@ BEGIN{::register_profile( - sub render_caller { - my ($self, $hfid) = @_; - my ($pname) = reverse split /__/, $hfid; -- sprintf 'dissect_xdr_array(tvb, tree, xdrs, hf, %s, %s, "%s", %s, %s)', -+ sprintf 'dissect_xdr_array(tvb, pinfo, tree, xdrs, hf, %s, %s, "%s", %s, %s)', - $c->rinc('ett_'.$self->idstrip), - $c->rinc("hf_$hfid\__$pname"), - $self->reftype->idstrip, -@@ -476,7 +476,7 @@ BEGIN{::register_profile( - sub render_caller { - my ($self, $hfid) = @_; - my ($pname) = reverse split /__/, $hfid; -- sprintf 'dissect_xdr_vector(tvb, tree, xdrs, hf, %s, %s, "%s", %s, %s)', -+ sprintf 'dissect_xdr_vector(tvb, pinfo, tree, xdrs, hf, %s, %s, "%s", %s, %s)', - $c->rinc('ett_'.$self->idstrip), - $c->rinc("hf_$hfid\__$pname"), - $self->reftype->idstrip, -@@ -857,7 +857,7 @@ __END__<is_primitive; - %> --static gboolean dissect_xdr_<%= $ident %>(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) -+static gboolean dissect_xdr_<%= $ident %>(tvbuff_t *tvb, packet_info *pinfo G_GNUC_UNUSED, proto_tree *tree, XDR *xdrs, int hf) - { - return <%= $self->dealias->render_caller($self->ident eq $ident ? undef : $ident) %>; - } -@@ -865,7 +865,7 @@ static gboolean dissect_xdr_<%= $ident %>(tvbuff_t *tvb, proto_tree *tree, XDR * - <% my ($self, $ident) = @_; - my $hfvar = $c->rinc('hf_'.$self->idstrip); - %> --static gboolean dissect_xdr_<%= $ident %>(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) -+static gboolean dissect_xdr_<%= $ident %>(tvbuff_t *tvb, packet_info *pinfo G_GNUC_UNUSED, proto_tree *tree, XDR *xdrs, int hf) - { - goffset start; - proto_item *ti; -@@ -890,7 +890,7 @@ static gboolean dissect_xdr_<%= $ident %>(tvbuff_t *tvb, proto_tree *tree, XDR * - } - @@ Sym::Type::Enum#render_dissector - <% my ($self, $ident) = @_; %> --static gboolean dissect_xdr_<%= $ident %>(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) -+static gboolean dissect_xdr_<%= $ident %>(tvbuff_t *tvb, packet_info *pinfo G_GNUC_UNUSED, proto_tree *tree, XDR *xdrs, int hf) - { - goffset start; - enum { DUMMY } es; -@@ -914,7 +914,7 @@ static gboolean dissect_xdr_<%= $ident %>(tvbuff_t *tvb, proto_tree *tree, XDR * - my ($self, $ident) = @_; - my $decl_type = $self->decl->type->idstrip; - %> --static gboolean dissect_xdr_<%= $ident %>(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) -+static gboolean dissect_xdr_<%= $ident %>(tvbuff_t *tvb, packet_info *pinfo G_GNUC_UNUSED, proto_tree *tree, XDR *xdrs, int hf) - { - gboolean rc = TRUE; - goffset start; --- -2.51.0 - diff --git a/fedora-42/SOURCES/libvirt-11.0.0.tar.xz b/fedora-42/SOURCES/libvirt-11.0.0.tar.xz deleted file mode 100644 index 8841b67..0000000 --- a/fedora-42/SOURCES/libvirt-11.0.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:01a176ff4042ad58cf83c09fe0925d6bc8eed0ecce1e0ee19b8ef4c1ffa3806e -size 9700388 diff --git a/fedora-42/SOURCES/zfs-2.3.4.tar.gz b/fedora-42/SOURCES/zfs-2.3.4.tar.gz deleted file mode 100644 index 62cee6d..0000000 --- a/fedora-42/SOURCES/zfs-2.3.4.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:70bc4b6b22e5474faf46d4dad5717a6cdd5f85a9830012ae64014abbe52406fc -size 34387363 diff --git a/fedora-42/SOURCES/zfs-2.3.5.tar.gz b/fedora-42/SOURCES/zfs-2.3.5.tar.gz deleted file mode 100644 index c173a4c..0000000 --- a/fedora-42/SOURCES/zfs-2.3.5.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3b8f64583d114decb8ca5efecffaf233b22827c10ff27c84d79e93b7d363bbf6 -size 34392768 diff --git a/fedora-42/SOURCES/zfs-2.4.0.tar.gz b/fedora-42/SOURCES/zfs-2.4.0.tar.gz deleted file mode 100644 index 609489e..0000000 --- a/fedora-42/SOURCES/zfs-2.4.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:098909c9350707cca9f723a01309e5b4ef80231a0a823a735e6249d93122935b -size 34483126 diff --git a/fedora-42/SOURCES/zfs-2.4.1.tar.gz b/fedora-42/SOURCES/zfs-2.4.1.tar.gz deleted file mode 100644 index 5bc0cce..0000000 --- a/fedora-42/SOURCES/zfs-2.4.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a9080ce03a91550cb0405c3466a3a1dc6bf29b8a62cf6ea44a1f53a465021991 -size 34497242 diff --git a/fedora-42/SOURCES/zfs-2.4.2.tar.gz b/fedora-42/SOURCES/zfs-2.4.2.tar.gz deleted file mode 100644 index 21e484a..0000000 --- a/fedora-42/SOURCES/zfs-2.4.2.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5f31def0989a7042d5003089b375f0ded75a5c4246f5935a2c1fd75dd70c4bb5 -size 34522287 diff --git a/fedora-42/SPECS/libvirt.spec b/fedora-42/SPECS/libvirt.spec deleted file mode 100644 index 862cf05..0000000 --- a/fedora-42/SPECS/libvirt.spec +++ /dev/null @@ -1,2974 +0,0 @@ -# -*- rpm-spec -*- - -# This spec file assumes you are building on a Fedora or RHEL version -# that's still supported by the vendor. It may work on other distros -# or versions, but no effort will be made to ensure that going forward. -%define min_rhel 8 -%define min_fedora 37 - -%define arches_qemu_kvm %{ix86} x86_64 %{power64} %{arm} aarch64 s390x riscv64 -%if 0%{?rhel} - %if 0%{?rhel} > 8 - %define arches_qemu_kvm x86_64 aarch64 s390x - %else - %define arches_qemu_kvm x86_64 %{power64} aarch64 s390x - %endif -%endif - -%define arches_64bit x86_64 %{power64} aarch64 s390x riscv64 -%define arches_x86 %{ix86} x86_64 - -%define arches_systemtap_64bit %{arches_64bit} -%define arches_dmidecode %{arches_x86} aarch64 riscv64 -%define arches_xen %{arches_x86} aarch64 -%if 0%{?fedora} - %define arches_xen x86_64 aarch64 -%endif -%define arches_vbox %{arches_x86} -%define arches_ceph %{arches_64bit} -%define arches_zfs %{arches_x86} %{power64} %{arm} aarch64 -%define arches_numactl %{arches_x86} %{power64} aarch64 s390x -%define arches_numad %{arches_x86} %{power64} aarch64 -%define arches_ch x86_64 aarch64 - -# The hypervisor drivers that run in libvirtd -%define with_qemu 0%{!?_without_qemu:1} -%define with_lxc 0%{!?_without_lxc:1} -%define with_libxl 0%{!?_without_libxl:1} -%define with_vbox 0%{!?_without_vbox:1} -%define with_ch 0%{!?_without_ch:1} - -%ifarch %{arches_qemu_kvm} - %define with_qemu_kvm %{with_qemu} -%else - %define with_qemu_kvm 0 -%endif - -%define with_qemu_tcg %{with_qemu} - -# RHEL disables TCG on all architectures -%if 0%{?rhel} - %define with_qemu_tcg 0 -%endif - -%if ! %{with_qemu_tcg} && ! %{with_qemu_kvm} - %define with_qemu 0 -%endif - -# Then the hypervisor drivers that run outside libvirtd, in libvirt.so -%define with_openvz 0%{!?_without_openvz:1} -%define with_vmware 0%{!?_without_vmware:1} -%define with_esx 0%{!?_without_esx:1} -%define with_hyperv 0%{!?_without_hyperv:1} - -# Then the secondary host drivers, which run inside libvirtd -%define with_storage_rbd 0%{!?_without_storage_rbd:1} - -%define with_storage_gluster 0%{!?_without_storage_gluster:1} -%if 0%{?rhel} - # Glusterfs has been dropped in RHEL-9, and before that - # was only enabled on arches where KVM exists - %if 0%{?rhel} > 8 - %define with_storage_gluster 0 - %else - %ifnarch %{arches_qemu_kvm} - %define with_storage_gluster 0 - %endif - %endif -%endif - -%define with_storage_zfs 1 - -%define with_storage_iscsi_direct 0%{!?_without_storage_iscsi_direct:1} -# libiscsi has been dropped in RHEL-9 -%if 0%{?rhel} > 8 - %define with_storage_iscsi_direct 0 -%endif - -# 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 -%define with_wireshark 0 -%define with_libssh 0 -%define with_dmidecode 0 - -# Finally set the OS / architecture specific special cases - -# Architecture-dependent features -%ifnarch %{arches_xen} - %define with_libxl 0 -%endif -%ifnarch %{arches_vbox} - %define with_vbox 0 -%endif -%ifnarch %{arches_numactl} - %define with_numactl 0 -%endif -%ifnarch %{arches_zfs} - %define with_storage_zfs 0 -%endif -%ifnarch %{arches_ceph} - %define with_storage_rbd 0 -%endif -%ifnarch %{arches_ch} - %define with_ch 0 -%endif - -# RHEL doesn't ship many hypervisor drivers -%if 0%{?rhel} - %define with_openvz 0 - %define with_vbox 0 - %define with_vmware 0 - %define with_libxl 0 - %define with_hyperv 0 - %define with_lxc 0 - %define with_ch 0 -%endif - -%define with_firewalld_zone 0%{!?_without_firewalld_zone:1} - -%if 0%{?rhel} && 0%{?rhel} < 9 - %define with_netcf 0%{!?_without_netcf:1} -%endif - -# fuse is used to provide virtualized /proc for LXC -%if %{with_lxc} - %define with_fuse 0%{!?_without_fuse:1} -%endif - -# Enable sanlock library for lock management with QEMU -# Sanlock is available only on arches where kvm is available for RHEL -%if 0%{?fedora} - %define with_sanlock 0%{!?_without_sanlock:1} -%endif -%if 0%{?rhel} - %ifarch %{arches_qemu_kvm} - %define with_sanlock 0%{!?_without_sanlock:1} - %endif -%endif - -# Enable libssh2 transport for new enough distros -%if 0%{?fedora} - %define with_libssh2 0%{!?_without_libssh2:1} -%endif - -# Enable wireshark plugins for all distros -%define with_wireshark 0%{!?_without_wireshark:1} -%define wireshark_plugindir %(pkg-config --variable plugindir wireshark)/epan - -# Enable libssh transport for all distros -%define with_libssh 0%{!?_without_libssh:1} - -%if %{with_qemu} || %{with_lxc} -# numad is used to manage the CPU and memory placement dynamically, -# it's not available on many non-x86 architectures. - %ifarch %{arches_numad} - %define with_numad 0%{!?_without_numad:1} - %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 - -%define with_modular_daemons 0 -%if 0%{?fedora} || 0%{?rhel} >= 9 - %define with_modular_daemons 1 -%endif - -# Prefer nftables for future OS releases but keep using iptables -# for existing ones -%if 0%{?rhel} >= 10 || 0%{?fedora} >= 41 - %define prefer_nftables 1 - %define firewall_backend_priority nftables,iptables -%else - %define prefer_nftables 0 - %define firewall_backend_priority iptables,nftables -%endif - - - -# Force QEMU to run as non-root -%define qemu_user qemu -%define qemu_group qemu - -# Locations for QEMU data -%define qemu_moddir %{_libdir}/qemu -%define qemu_datadir %{_datadir}/qemu - -# Native / MinGW builds -%define with_native 0%{!?_without_native:1} - -%define with_mingw32 0 -%define with_mingw64 0 - -%if 0%{?fedora} - %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 -# compiler warning into errors without being worried about frequent -# changes in reported warnings -%if 0%{?rhel} - %define enable_werror -Dwerror=true -%else - %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. -# If the user has customized their sysconfig file, -# the RPM upgrade path will rename it to .rpmsave -# because the file is no longer managed by RPM. -# To prevent a regression we rename it back after the -# transaction to preserve the user's modifications -%define libvirt_sysconfig_pre() \ - for sc in %{?*} ; do \ - test -f "%{_sysconfdir}/sysconfig/${sc}.rpmsave" || continue ; \ - mv -v "%{_sysconfdir}/sysconfig/${sc}.rpmsave" "%{_sysconfdir}/sysconfig/${sc}.rpmsave.old" ; \ - done \ - %{nil} -%define libvirt_sysconfig_posttrans() \ - for sc in %{?*} ; do \ - test -f "%{_sysconfdir}/sysconfig/${sc}.rpmsave" || continue ; \ - mv -v "%{_sysconfdir}/sysconfig/${sc}.rpmsave" "%{_sysconfdir}/sysconfig/${sc}" ; \ - done \ - %{nil} - -Summary: Library providing a simple virtualization API -Name: libvirt -Version: 11.0.0 -Release: 5%{?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 "\.0$" >/dev/null; echo $?) == 1 - %define mainturl stable_updates/ -%endif -Source: https://download.libvirt.org/%{?mainturl}libvirt-%{version}.tar.xz - -# fix build with GCC 15 -Patch: 0001-util-avoid-overflow-in-hextable-buffer.patch - -Patch: 0001-storage-stop-hardcoding-paths-for-mkfs-mount-umount.patch -Patch: 0001-util-stop-hardcoding-numad-path.patch -Patch: 0001-Fix-mocking-of-virQEMUCapsProbeHVF-function.patch - -# Fix dumpxml failures after migration (bz 2369243) -Patch: 0001-qemu-Be-more-forgiving-when-acquiring-QUERY-job-when.patch -# libvirt-nss stops working after network restarts (bz #2364285) -Patch: 0001-nss-Skip-empty-files-and-avoid-use-of-uninitialized-.patch - -# Fix build with wireshark -Patch: 0001-wireshark-Drop-needless-declaration-of-proto_registe.patch -Patch: 0002-wireshark-Switch-header-files-to-pragma-once.patch -Patch: 0003-wireshark-Move-WIRESHARK_VERSION-macro-definition.patch -Patch: 0004-wireshark-Fix-int-type-of-some-virNetMessageHeader-m.patch -Patch: 0005-wireshark-Don-t-special-case-retval-of-get_program_d.patch -Patch: 0006-wireshark-Introduce-and-use-vir_val_to_str.patch -Patch: 0007-wireshark-Don-t-leak-column-strings.patch -Patch: 0008-wireshark-Adapt-to-wireshark-4.6.0.patch - -Requires: libvirt-daemon = %{version}-%{release} -Requires: libvirt-daemon-config-network = %{version}-%{release} -Requires: libvirt-daemon-config-nwfilter = %{version}-%{release} -%if %{with_libxl} -Requires: libvirt-daemon-driver-libxl = %{version}-%{release} -%endif -%if %{with_lxc} -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 -Obsoletes: libvirt-daemon-uml <= 5.0.0 -%if %{with_vbox} -Requires: libvirt-daemon-driver-vbox = %{version}-%{release} -%endif -%if %{with_ch} -Requires: libvirt-daemon-driver-ch = %{version}-%{release} -%endif -Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} -Requires: libvirt-daemon-driver-interface = %{version}-%{release} -Requires: libvirt-daemon-driver-secret = %{version}-%{release} -Requires: libvirt-daemon-driver-storage = %{version}-%{release} -Requires: libvirt-daemon-driver-network = %{version}-%{release} -Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} -Requires: libvirt-client = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} - -# All build-time requirements. Run-time requirements are -# listed against each sub-RPM -BuildRequires: python3-docutils -BuildRequires: meson >= 0.56.0 -BuildRequires: ninja-build -BuildRequires: git-core -BuildRequires: perl-interpreter -BuildRequires: python3 -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 -BuildRequires: glib2-devel >= 2.58 -BuildRequires: libxml2-devel -BuildRequires: readline-devel -BuildRequires: pkgconfig(bash-completion) >= 2.0 -BuildRequires: libtasn1-devel -BuildRequires: gnutls-devel -BuildRequires: libattr-devel -# For pool-build probing for existing pools -BuildRequires: libblkid-devel >= 2.17 -# for augparse, optionally used in testing -BuildRequires: augeas -BuildRequires: systemd-devel >= 185 -BuildRequires: libpciaccess-devel >= 0.10.9 -BuildRequires: json-c-devel - %if %{with_sanlock} -BuildRequires: sanlock-devel >= 2.4 - %endif -BuildRequires: libpcap-devel >= 1.5.0 -BuildRequires: libnl3-devel -BuildRequires: libselinux-devel -# For modprobe -BuildRequires: kmod -BuildRequires: cyrus-sasl-devel -BuildRequires: polkit >= 0.112 -# For mount/umount in FS driver -BuildRequires: util-linux - %if %{with_qemu} -# For managing ACLs -BuildRequires: libacl-devel -# From QEMU RPMs, used by virstoragetest -BuildRequires: /usr/bin/qemu-img - %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} -# For pool type=iscsi-direct -BuildRequires: libiscsi-devel - %endif -# For disk driver -BuildRequires: parted-devel -# For Multipath support -BuildRequires: device-mapper-devel - %if %{with_storage_rbd} -BuildRequires: librados-devel -BuildRequires: librbd-devel - %endif - %if %{with_storage_gluster} -BuildRequires: glusterfs-api-devel >= 3.4.1 -BuildRequires: glusterfs-devel >= 3.4.1 - %endif - %if %{with_numactl} -# For QEMU/LXC numa info -BuildRequires: numactl-devel - %endif -BuildRequires: libcap-ng-devel >= 0.5.0 - %if %{with_fuse} -BuildRequires: fuse-devel >= 2.8.6 - %endif - %if %{with_libssh2} -BuildRequires: libssh2-devel >= 1.3.0 - %endif - %if %{with_netcf} -BuildRequires: netcf-devel >= 0.2.2 - %endif - %if %{with_esx} -BuildRequires: libcurl-devel - %endif - %if %{with_hyperv} -BuildRequires: libwsman-devel >= 2.6.3 - %endif -BuildRequires: audit-libs-devel -BuildRequires: systemtap-sdt-devel -BuildRequires: /usr/bin/dtrace -# For mount/umount in FS driver -BuildRequires: util-linux - %if %{with_numad} -BuildRequires: numad - %endif - %if %{with_wireshark} -BuildRequires: wireshark-devel - %endif - %if %{with_libssh} -BuildRequires: libssh-devel >= 0.8.1 - %endif -BuildRequires: libtirpc-devel - %if %{with_firewalld_zone} -# Needed for the firewalld_reload macro -BuildRequires: firewalld-filesystem - %endif -%endif - -%if %{with_mingw32} -BuildRequires: mingw32-filesystem -BuildRequires: mingw32-gcc -BuildRequires: mingw32-binutils -BuildRequires: mingw32-glib2 >= 2.48 -BuildRequires: mingw32-gnutls -BuildRequires: mingw32-gettext -BuildRequires: mingw32-libxml2 -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-gnutls -BuildRequires: mingw64-gettext -BuildRequires: mingw64-libxml2 -BuildRequires: mingw64-portablexdr -BuildRequires: mingw64-dlfcn -BuildRequires: mingw64-libssh2 -BuildRequires: mingw64-curl -%endif - -%description -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 - -%description docs -Includes the API reference for the libvirt C library, and a complete -copy of the libvirt.org website documentation. - -%package daemon -Summary: Server side daemon and supporting files for libvirt library - -# All runtime requirements for the libvirt package (runtime requrements -# for subpackages are listed later in those subpackages) - -# The client side, i.e. shared libs are in a subpackage -Requires: libvirt-libs = %{version}-%{release} -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-daemon-lock = %{version}-%{release} -Requires: libvirt-daemon-plugin-lockd = %{version}-%{release} -Requires: libvirt-daemon-log = %{version}-%{release} -Requires: libvirt-daemon-proxy = %{version}-%{release} - -%description daemon -Server side daemon required to manage the virtualization capabilities -of recent versions of Linux. Requires a hypervisor specific sub-RPM -for specific drivers. - -%package daemon-common -Summary: Files and utilities used by daemons -Requires: libvirt-libs = %{version}-%{release} -# The libvirt-guests.sh script requires virsh from libvirt-client subpackage, -# but not every deployment wants to use libvirt-guests service. Using -# Recommends here will install libvirt-client by default (if available), but -# RPM won't complain if the package is unavailable, masked, or removed later. -Recommends: libvirt-client = %{version}-%{release} -# for /sbin/ip -Requires: iproute -# for /sbin/tc -Requires: iproute-tc -Requires: polkit >= 0.112 - %if %{with_dmidecode} -# For virConnectGetSysinfo -Requires: dmidecode - %endif -# For service management -Requires(posttrans): /usr/bin/systemctl -Requires(preun): /usr/bin/systemctl -# libvirtd depends on 'messagebus' service -Requires: dbus -# For uid creation during pre -Requires(pre): shadow-utils -# Needed by /usr/libexec/libvirt-guests.sh script. - %if 0%{?fedora} -Requires: gettext-runtime - %else -Requires: gettext - %endif - -# Ensure smooth upgrades -Obsoletes: libvirt-admin < 7.3.0 -Provides: libvirt-admin = %{version}-%{release} -Obsoletes: libvirt-bash-completion < 7.3.0 - -%description daemon-common -Miscellaneous files and utilities used by other libvirt daemons - -%package daemon-lock -Summary: Server side daemon for managing locks -Requires: libvirt-libs = %{version}-%{release} - -%description daemon-lock -Server side daemon used to manage locks held against virtual machine -resources - -%package daemon-plugin-lockd -Summary: lockd client plugin for virtlockd -Requires: libvirt-libs = %{version}-%{release} -Requires: libvirt-daemon-lock = %{version}-%{release} - -%description daemon-plugin-lockd -A client-side plugin that implements disk locking using POSIX fcntl advisory -locks via communication with the virtlockd daemon - -%package daemon-log -Summary: Server side daemon for managing logs -Requires: libvirt-libs = %{version}-%{release} - -%description daemon-log -Server side daemon used to manage logs from virtual machine consoles - -%package daemon-proxy -Summary: Server side daemon providing libvirtd proxy -Requires: libvirt-libs = %{version}-%{release} -# netcat is needed on the server side so that clients that have -# libvirt < 6.9.0 can connect, but newer versions will prefer -# virt-ssh-helper. Making this a Recommends means that it gets -# installed by default, but can still be removed if compatibility -# with old clients is not required -Recommends: /usr/bin/nc - -%description daemon-proxy -Server side daemon providing functionality previously provided by -the monolithic libvirtd - -%package daemon-config-network -Summary: Default configuration files for the libvirtd daemon - -Requires: libvirt-daemon-driver-network = %{version}-%{release} - -%description daemon-config-network -Default configuration files for setting up NAT based networking - -%package daemon-config-nwfilter -Summary: Network filter configuration files for the libvirtd daemon - -Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} - -%description daemon-config-nwfilter -Network filter configuration files for cleaning guest traffic - -%package daemon-driver-network -Summary: Network driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: dnsmasq >= 2.41 - %if %{prefer_nftables} -Requires: nftables - %else -Requires: iptables - %endif - -%description daemon-driver-network -The network driver plugin for the libvirtd daemon, providing -an implementation of the virtual network APIs using the Linux -bridge capabilities. - -%package daemon-driver-nwfilter -Summary: Nwfilter driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: iptables -Requires: ebtables - -%description daemon-driver-nwfilter -The nwfilter driver plugin for the libvirtd daemon, providing -an implementation of the firewall APIs using the ebtables, -iptables and ip6tables capabilities - -%package daemon-driver-nodedev -Summary: Nodedev driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -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 - -%description daemon-driver-nodedev -The nodedev driver plugin for the libvirtd daemon, providing -an implementation of the node device APIs using the udev -capabilities. - -%package daemon-driver-interface -Summary: Interface driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} - %if %{with_netcf} -Requires: netcf-libs >= 0.2.2 - %endif - -%description daemon-driver-interface -The interface driver plugin for the libvirtd daemon, providing -an implementation of the host network interface APIs. - -%package daemon-driver-secret -Summary: Secret driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} - -%description daemon-driver-secret -The secret driver plugin for the libvirtd daemon, providing -an implementation of the secret key APIs. - -%package daemon-driver-storage-core -Summary: Storage driver plugin including base backends for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Recommends: nfs-utils -# For mkfs -Requires: util-linux -# For storage wiping with different algorithms -Requires: scrub - %if %{with_qemu} -# From QEMU RPMs -Requires: /usr/bin/qemu-img - %endif - %if !%{with_storage_rbd} -Obsoletes: libvirt-daemon-driver-storage-rbd < 5.2.0 - %endif -Obsoletes: libvirt-daemon-driver-storage-sheepdog < 8.8.0 - -%description daemon-driver-storage-core -The storage driver plugin for the libvirtd daemon, providing -an implementation of the storage APIs using files, local disks, LVM, SCSI, -iSCSI, and multipath storage. - -%package daemon-driver-storage-logical -Summary: Storage driver plugin for lvm volumes -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: lvm2 - -%description daemon-driver-storage-logical -The storage driver backend adding implementation of the storage APIs for block -volumes using lvm. - -%package daemon-driver-storage-disk -Summary: Storage driver plugin for disk -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: parted -Requires: device-mapper - -%description daemon-driver-storage-disk -The storage driver backend adding implementation of the storage APIs for block -volumes using the host disks. - -%package daemon-driver-storage-scsi -Summary: Storage driver plugin for local scsi devices -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} - -%description daemon-driver-storage-scsi -The storage driver backend adding implementation of the storage APIs for scsi -host devices. - -%package daemon-driver-storage-iscsi -Summary: Storage driver plugin for iscsi -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: iscsi-initiator-utils - -%description daemon-driver-storage-iscsi -The storage driver backend adding implementation of the storage APIs for iscsi -volumes using the host iscsi stack. - - %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} -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 - -%package daemon-driver-storage-mpath -Summary: Storage driver plugin for multipath volumes -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: device-mapper - -%description daemon-driver-storage-mpath -The storage driver backend adding implementation of the storage APIs for -multipath storage using device mapper. - - %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} -Requires: glusterfs-client >= 2.0.1 - %endif - %if 0%{?fedora} || 0%{?with_storage_gluster} -Requires: /usr/sbin/gluster - %endif - -%description daemon-driver-storage-gluster -The storage driver backend adding implementation of the storage APIs for gluster -volumes using libgfapi. - %endif - - %if %{with_storage_rbd} -%package daemon-driver-storage-rbd -Summary: Storage driver plugin for rbd -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -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 - - %if %{with_storage_zfs} -%package daemon-driver-storage-zfs -Summary: Storage driver plugin for ZFS -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -# Support any conforming implementation of zfs -Requires: /sbin/zfs -Requires: /sbin/zpool - -%description daemon-driver-storage-zfs -The storage driver backend adding implementation of the storage APIs for -ZFS volumes. - %endif - -%package daemon-driver-storage -Summary: Storage driver plugin including all backends for the libvirtd daemon -Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} -Requires: libvirt-daemon-driver-storage-disk = %{version}-%{release} -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} -Requires: libvirt-daemon-driver-storage-iscsi-direct = %{version}-%{release} - %endif - %if %{with_storage_gluster} -Requires: libvirt-daemon-driver-storage-gluster = %{version}-%{release} - %endif - %if %{with_storage_rbd} -Requires: libvirt-daemon-driver-storage-rbd = %{version}-%{release} - %endif - %if %{with_storage_zfs} -Requires: libvirt-daemon-driver-storage-zfs = %{version}-%{release} - %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} -%package daemon-driver-qemu -Summary: QEMU driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-daemon-log = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Requires: /usr/bin/qemu-img -# For image compression -Requires: gzip -Requires: bzip2 -Requires: lzop -Requires: xz -Requires: zstd -Requires: systemd-container -Requires: swtpm-tools - %if %{with_numad} -Requires: numad - %endif - %if 0%{?fedora} || 0%{?rhel} >= 9 -Recommends: passt -Recommends: passt-selinux - %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 - - %if %{with_lxc} -%package daemon-driver-lxc -Summary: LXC driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -# There really is a hard cross-driver dependency here -Requires: libvirt-daemon-driver-network = %{version}-%{release} -Requires: systemd-container -# for modprobe of nbd driver -Requires: module-init-tools - %if %{with_numad} -Requires: numad - %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 - - %if %{with_vbox} -%package daemon-driver-vbox -Summary: VirtualBox driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} - -%description daemon-driver-vbox -The vbox driver plugin for the libvirtd daemon, providing -an implementation of the hypervisor driver APIs using -VirtualBox - %endif - - %if %{with_libxl} -%package daemon-driver-libxl -Summary: Libxl driver plugin for the libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} -Obsoletes: libvirt-daemon-driver-xen < 4.3.0 - -%description daemon-driver-libxl -The Libxl driver plugin for the libvirtd daemon, providing -an implementation of the hypervisor driver APIs using -Libxl - %endif - - %if %{with_qemu_tcg} -%package daemon-qemu -Summary: Server side daemon & driver required to run QEMU guests - - %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 -Requires: libvirt-daemon = %{version}-%{release} - %endif -Requires: libvirt-daemon-driver-qemu = %{version}-%{release} -Requires: libvirt-daemon-driver-interface = %{version}-%{release} -Requires: libvirt-daemon-driver-network = %{version}-%{release} -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} -Requires: libvirt-ssh-proxy = %{version}-%{release} -Requires: qemu - -%description daemon-qemu -Server side daemon and driver required to manage the virtualization -capabilities of the QEMU TCG emulators - %endif - - %if %{with_qemu_kvm} -%package daemon-kvm -Summary: Server side daemon & driver required to run KVM guests - - %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 -Requires: libvirt-daemon = %{version}-%{release} - %endif -Requires: libvirt-daemon-driver-qemu = %{version}-%{release} -Requires: libvirt-daemon-driver-interface = %{version}-%{release} -Requires: libvirt-daemon-driver-network = %{version}-%{release} -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} -Requires: libvirt-ssh-proxy = %{version}-%{release} -Requires: qemu-kvm - -%description daemon-kvm -Server side daemon and driver required to manage the virtualization -capabilities of the KVM hypervisor - %endif - - %if %{with_lxc} -%package daemon-lxc -Summary: Server side daemon & driver required to run LXC guests - - %if %{with_modular_daemons} -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-daemon-proxy = %{version}-%{release} -Recommends: libvirt-daemon = %{version}-%{release} - %else -Requires: libvirt-daemon = %{version}-%{release} - %endif -Requires: libvirt-daemon-driver-lxc = %{version}-%{release} -Requires: libvirt-daemon-driver-interface = %{version}-%{release} -Requires: libvirt-daemon-driver-network = %{version}-%{release} -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} - -%description daemon-lxc -Server side daemon and driver required to manage the virtualization -capabilities of LXC - %endif - - %if %{with_libxl} -%package daemon-xen -Summary: Server side daemon & driver required to run XEN guests - - %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 -Requires: libvirt-daemon = %{version}-%{release} - %endif -Requires: libvirt-daemon-driver-libxl = %{version}-%{release} -Requires: libvirt-daemon-driver-interface = %{version}-%{release} -Requires: libvirt-daemon-driver-network = %{version}-%{release} -Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} -Requires: libvirt-daemon-driver-secret = %{version}-%{release} -Requires: libvirt-daemon-driver-storage = %{version}-%{release} -Requires: xen - -%description daemon-xen -Server side daemon and driver required to manage the virtualization -capabilities of XEN - %endif - - %if %{with_vbox} -%package daemon-vbox -Summary: Server side daemon & driver required to run VirtualBox guests - - %if %{with_modular_daemons} -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-daemon-proxy = %{version}-%{release} -Recommends: libvirt-daemon = %{version}-%{release} - %else -Requires: libvirt-daemon = %{version}-%{release} - %endif -Requires: libvirt-daemon-driver-vbox = %{version}-%{release} -Requires: libvirt-daemon-driver-interface = %{version}-%{release} -Requires: libvirt-daemon-driver-network = %{version}-%{release} -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} - -%description daemon-vbox -Server side daemon and driver required to manage the virtualization -capabilities of VirtualBox - %endif - - %if %{with_ch} -%package daemon-driver-ch -Summary: Cloud-Hypervisor driver plugin for libvirtd daemon -Requires: libvirt-daemon-common = %{version}-%{release} -Requires: libvirt-daemon-log = %{version}-%{release} -Requires: libvirt-libs = %{version}-%{release} - -%description daemon-driver-ch -The ch driver plugin for the libvirtd daemon, providing -an implementation of the hypervisor driver APIs by -Cloud-Hypervisor - %endif - - -%package client -Summary: Client side utilities of the libvirt library -Requires: libvirt-libs = %{version}-%{release} - -# Ensure smooth upgrades -Obsoletes: libvirt-bash-completion < 7.3.0 - -%description client -The client binaries needed to access the virtualization -capabilities of recent versions of Linux (and other OSes). - -%package client-qemu -Summary: Additional client side utilities for QEMU -Requires: libvirt-libs = %{version}-%{release} -Requires: python3-libvirt >= 3.7.0 -Requires: python3-cryptography -Requires: python3-lxml - -%description client-qemu -The additional client binaries are used to interact -with some QEMU specific features of libvirt. - -%package libs -Summary: Client side libraries -# Needed by default sasl.conf - no onerous extra deps, since -# 100's of other things on a system already pull in krb5-libs -Requires: cyrus-sasl-gssapi - -%description libs -Shared libraries for accessing the libvirt daemon. - - %if %{with_wireshark} -%package wireshark -Summary: Wireshark dissector plugin for libvirt RPC transactions -Requires: wireshark -Requires: libvirt-libs = %{version}-%{release} - -%description wireshark -Wireshark dissector plugin for better analysis of libvirt RPC traffic. - %endif - - %if %{with_lxc} -%package login-shell -Summary: Login shell for connecting users to an LXC container -Requires: libvirt-libs = %{version}-%{release} - -%description login-shell -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 - -%package devel -Summary: Libraries, includes, etc. to compile with the libvirt library -Requires: libvirt-libs = %{version}-%{release} -Requires: pkgconfig - -%description devel -Include header files & development libraries for the libvirt C library. - - %if %{with_sanlock} -%package daemon-plugin-sanlock -Summary: Sanlock lock manager plugin for QEMU driver -Requires: sanlock >= 2.4 -#for virt-sanlock-cleanup require augeas -Requires: augeas -Requires: libvirt-libs = %{version}-%{release} -Obsoletes: libvirt-lock-sanlock < 9.1.0 -Provides: libvirt-lock-sanlock = %{version}-%{release} - -%description daemon-plugin-sanlock -Includes the Sanlock lock manager plugin for the QEMU -driver - %endif - -%package nss -Summary: Libvirt plugin for Name Service Switch -Requires: libvirt-daemon-driver-network = %{version}-%{release} - -%description nss -Libvirt plugin for NSS for translating domain names into IP addresses. -%endif - -%package ssh-proxy -Summary: Libvirt SSH proxy -Requires: libvirt-libs = %{version}-%{release} - -%description ssh-proxy -Allows SSH into domains via VSOCK without need for network. - -%if %{with_mingw32} -%package -n mingw32-libvirt -Summary: %{summary} -Obsoletes: mingw32-libvirt-static < 7.0.0 -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 -BuildArch: noarch - -%description -n mingw64-libvirt -MinGW Windows libvirt virtualization library. - -%{?mingw64_debug_package} -%endif - -%prep -%autosetup -S git_am - -%build -%if 0%{?fedora} >= %{min_fedora} || 0%{?rhel} >= %{min_rhel} - %define supported_platform 1 -%else - %define supported_platform 0 -%endif - -%if ! %{supported_platform} -echo "This RPM requires either Fedora >= %{min_fedora} or RHEL >= %{min_rhel}" -exit 1 -%endif - -%if %{with_qemu} - %define arg_qemu -Ddriver_qemu=enabled -%else - %define arg_qemu -Ddriver_qemu=disabled -%endif - -%if %{with_openvz} - %define arg_openvz -Ddriver_openvz=enabled -%else - %define arg_openvz -Ddriver_openvz=disabled -%endif - -%if %{with_lxc} - %define arg_lxc -Ddriver_lxc=enabled - %define arg_login_shell -Dlogin_shell=enabled -%else - %define arg_lxc -Ddriver_lxc=disabled - %define arg_login_shell -Dlogin_shell=disabled -%endif - -%if %{with_vbox} - %define arg_vbox -Ddriver_vbox=enabled -%else - %define arg_vbox -Ddriver_vbox=disabled -%endif - -%if %{with_libxl} - %define arg_libxl -Ddriver_libxl=enabled -%else - %define arg_libxl -Ddriver_libxl=disabled -%endif - -%if %{with_esx} - %define arg_esx -Ddriver_esx=enabled -%else - %define arg_esx -Ddriver_esx=disabled -%endif - -%if %{with_esx} || %{with_ch} - %define arg_curl -Dcurl=enabled -%else - %define arg_curl -Dcurl=disabled -%endif - -%if %{with_hyperv} - %define arg_hyperv -Ddriver_hyperv=enabled -Dopenwsman=enabled -%else - %define arg_hyperv -Ddriver_hyperv=disabled -Dopenwsman=disabled -%endif - -%if %{with_vmware} - %define arg_vmware -Ddriver_vmware=enabled -%else - %define arg_vmware -Ddriver_vmware=disabled -%endif - -%if %{with_ch} - %define arg_ch -Ddriver_ch=enabled -%else - %define arg_ch -Ddriver_ch=disabled -%endif - -%if %{with_storage_rbd} - %define arg_storage_rbd -Dstorage_rbd=enabled -%else - %define arg_storage_rbd -Dstorage_rbd=disabled -%endif - -%if %{with_storage_gluster} - %define arg_storage_gluster -Dstorage_gluster=enabled -Dglusterfs=enabled -%else - %define arg_storage_gluster -Dstorage_gluster=disabled -Dglusterfs=disabled -%endif - -%if %{with_storage_zfs} - %define arg_storage_zfs -Dstorage_zfs=enabled -%else - %define arg_storage_zfs -Dstorage_zfs=disabled -%endif - -%if %{with_numactl} - %define arg_numactl -Dnumactl=enabled -%else - %define arg_numactl -Dnumactl=disabled -%endif - -%if %{with_numad} - %define arg_numad -Dnumad=enabled -%else - %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 - %define arg_fuse -Dfuse=disabled -%endif - -%if %{with_sanlock} - %define arg_sanlock -Dsanlock=enabled -%else - %define arg_sanlock -Dsanlock=disabled -%endif - -%if %{with_firewalld_zone} - %define arg_firewalld_zone -Dfirewalld_zone=enabled -%else - %define arg_firewalld_zone -Dfirewalld_zone=disabled -%endif - -%if %{with_netcf} - %define arg_netcf -Dnetcf=enabled -%else - %define arg_netcf -Dnetcf=disabled -%endif - -%if %{with_wireshark} - %define arg_wireshark -Dwireshark_dissector=enabled -%else - %define arg_wireshark -Dwireshark_dissector=disabled -%endif - -%if %{with_storage_iscsi_direct} - %define arg_storage_iscsi_direct -Dstorage_iscsi_direct=enabled -Dlibiscsi=enabled -%else - %define arg_storage_iscsi_direct -Dstorage_iscsi_direct=disabled -Dlibiscsi=disabled -%endif - -%if %{with_libssh} - %define arg_libssh -Dlibssh=enabled -%else - %define arg_libssh -Dlibssh=disabled -%endif - -%if %{with_libssh2} - %define arg_libssh2 -Dlibssh2=enabled -%else - %define arg_libssh2 -Dlibssh2=disabled -%endif - -%if %{with_modular_daemons} - %define arg_remote_mode -Dremote_default_mode=direct -%else - %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} -%define arg_packager -Dpackager="%{who}, %{when}, %{where}" -%define arg_packager_version -Dpackager_version="%{release}" -%define arg_selinux_mount -Dselinux_mount="/sys/fs/selinux" - -# place macros above and build commands below this comment - -export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec) - -%if %{with_native} -%meson \ - -Drunstatedir=%{_rundir} \ - -Dinitconfdir=%{_sysconfdir}/sysconfig \ - -Dunitdir=%{_unitdir} \ - -Dsysusersdir=%{_sysusersdir} \ - %{?arg_qemu} \ - %{?arg_openvz} \ - %{?arg_lxc} \ - %{?arg_vbox} \ - %{?arg_libxl} \ - -Dsasl=enabled \ - -Dpolkit=enabled \ - -Ddriver_libvirtd=enabled \ - -Ddriver_remote=enabled \ - -Ddriver_test=enabled \ - %{?arg_esx} \ - %{?arg_curl} \ - %{?arg_hyperv} \ - %{?arg_vmware} \ - %{?arg_ch} \ - -Ddriver_vz=disabled \ - -Ddriver_bhyve=disabled \ - %{?arg_remote_mode} \ - -Ddriver_interface=enabled \ - -Ddriver_network=enabled \ - -Dstorage_fs=enabled \ - -Dstorage_lvm=enabled \ - -Dstorage_iscsi=enabled \ - %{?arg_storage_iscsi_direct} \ - -Dstorage_scsi=enabled \ - -Dstorage_disk=enabled \ - -Dstorage_mpath=enabled \ - %{?arg_storage_rbd} \ - %{?arg_storage_gluster} \ - %{?arg_storage_zfs} \ - -Dstorage_vstorage=disabled \ - %{?arg_numactl} \ - %{?arg_numad} \ - -Dcapng=enabled \ - %{?arg_fuse} \ - %{?arg_netcf} \ - -Dnls=enabled \ - -Dselinux=enabled \ - %{?arg_selinux_mount} \ - -Dapparmor=disabled \ - -Dapparmor_profiles=disabled \ - -Dsecdriver_apparmor=disabled \ - -Dudev=enabled \ - -Djson_c=enabled \ - %{?arg_sanlock} \ - -Dlibpcap=enabled \ - %{?arg_nbdkit} \ - %{?arg_nbdkit_config_default} \ - -Dlibnl=enabled \ - -Daudit=enabled \ - -Ddtrace=enabled \ - -Dfirewalld=enabled \ - %{?arg_firewalld_zone} \ - %{?arg_wireshark} \ - %{?arg_libssh} \ - %{?arg_libssh2} \ - -Dpm_utils=disabled \ - -Dnss=enabled \ - %{arg_packager} \ - %{arg_packager_version} \ - -Dqemu_user=%{qemu_user} \ - -Dqemu_group=%{qemu_group} \ - -Dqemu_moddir=%{qemu_moddir} \ - -Dqemu_datadir=%{qemu_datadir} \ - -Dtls_priority=%{tls_priority} \ - -Dsysctl_config=enabled \ - %{?arg_userfaultfd_sysctl} \ - -Dssh_proxy=enabled \ - %{?enable_werror} \ - -Dexpensive_tests=enabled \ - -Dinit_script=systemd \ - -Dfirewall_backend_priority=%{firewall_backend_priority} \ - -Ddocs=enabled \ - -Dtests=enabled \ - -Drpath=disabled \ - %{?arg_login_shell} - -%meson_build -%endif - -%if %{with_mingw32} || %{with_mingw64} -%mingw_meson \ - --auto-features=enabled \ - -Ddriver_remote=enabled \ - -Ddriver_test=enabled \ - -Ddriver_esx=enabled \ - -Dcurl=enabled \ - -Ddocs=enabled \ - -Dapparmor=disabled \ - -Dapparmor_profiles=disabled \ - -Dattr=disabled \ - -Daudit=disabled \ - -Dbash_completion=disabled \ - -Dblkid=disabled \ - -Dcapng=disabled \ - -Ddriver_bhyve=disabled \ - -Ddriver_hyperv=disabled \ - -Ddriver_interface=disabled \ - -Ddriver_libvirtd=disabled \ - -Ddriver_libxl=disabled \ - -Ddriver_lxc=disabled \ - -Ddriver_network=disabled \ - -Ddriver_openvz=disabled \ - -Ddriver_qemu=disabled \ - -Ddriver_secrets=disabled \ - -Ddriver_vbox=disabled \ - -Ddriver_vmware=disabled \ - -Ddriver_vz=disabled \ - -Ddtrace=disabled \ - -Dexpensive_tests=disabled \ - -Dfirewalld=disabled \ - -Dfirewalld_zone=disabled \ - -Dfuse=disabled \ - -Dglusterfs=disabled \ - -Dhost_validate=disabled \ - -Djson_c=disabled \ - -Dlibiscsi=disabled \ - -Dnbdkit=disabled \ - -Dnbdkit_config_default=disabled \ - -Dlibnl=disabled \ - -Dlibpcap=disabled \ - -Dlibssh2=disabled \ - -Dlibssh=disabled \ - -Dlogin_shell=disabled \ - -Dnetcf=disabled \ - -Dnls=enabled \ - -Dnss=disabled \ - -Dnumactl=disabled \ - -Dnumad=disabled \ - -Dopenwsman=disabled \ - -Dpciaccess=disabled \ - -Dpm_utils=disabled \ - -Dpolkit=disabled \ - -Dreadline=disabled \ - -Drpath=disabled \ - -Dsanlock=disabled \ - -Dsasl=disabled \ - -Dsecdriver_apparmor=disabled \ - -Dsecdriver_selinux=disabled \ - -Dselinux=disabled \ - -Dstorage_dir=disabled \ - -Dstorage_disk=disabled \ - -Dstorage_fs=disabled \ - -Dstorage_gluster=disabled \ - -Dstorage_iscsi_direct=disabled \ - -Dstorage_iscsi=disabled \ - -Dstorage_lvm=disabled \ - -Dstorage_mpath=disabled \ - -Dstorage_rbd=disabled \ - -Dstorage_scsi=disabled \ - -Dstorage_vstorage=disabled \ - -Dstorage_zfs=disabled \ - -Dsysctl_config=disabled \ - -Duserfaultfd_sysctl=disabled \ - -Dssh_proxy=disabled \ - -Dtests=disabled \ - -Dudev=disabled \ - -Dwireshark_dissector=disabled \ - %{?enable_werror} -%mingw_ninja -%endif - -%install -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 -# because if the admin wants to delete the default network completely, we don't -# want to end up re-incarnating it on every RPM upgrade. -install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/ -cp $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml \ - $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/default.xml -# libvirt saves this file with mode 0600 -chmod 0600 $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml - -# nwfilter files are installed in /usr/share/libvirt and copied to /etc in %%post -# to avoid verification errors on changed files in /etc -install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/libvirt/nwfilter/ -cp -a $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml \ - $RPM_BUILD_ROOT%{_datadir}/libvirt/nwfilter/ -# libvirt saves these files with mode 600 -chmod 600 $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml - - %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 -rm -f $RPM_BUILD_ROOT%{_sysusersdir}/libvirt-qemu.conf - %endif -%find_lang %{name} - - %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 - - %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 - - %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} -rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/lxc.conf -rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.lxc - %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 - %if ! %{with_ch} -rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_ch.aug -rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_ch.aug - %endif - -# Copied into libvirt-docs subpackage eventually -mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt libvirt-docs - - %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} -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_mingw32} || %{with_mingw64} -%mingw_ninja_install -%endif - -%if %{with_mingw32} -rm -rf $RPM_BUILD_ROOT%{mingw32_sysconfdir}/libvirt/nwfilter -rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/doc/* -rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/gtk-doc/* -rm -rf $RPM_BUILD_ROOT%{mingw32_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} - -%endif - -%check - -%if %{with_native} -# Building on slow archs, like emulated s390x in Fedora copr, requires -# raising the test timeout -export VIR_TEST_DEBUG=1 -%meson_test --no-suite syntax-check --timeout-multiplier 10 -%endif - -%define libvirt_rpmstatedir %{_localstatedir}/lib/rpm-state/libvirt - -# Mark units such that presets will later be applied to them. Meant -# to be called during %pre. Units that already exist on the system -# will not be marked, with the assumption that presets have already -# been applied at some point in the past. This makes it safe to call -# this macro for all units each time %pre runs. -%define libvirt_systemd_schedule_preset() \ - mkdir -p %{libvirt_rpmstatedir} || : \ - for unit in %{?*}; do \ - if ! test -e %{_unitdir}/$unit; then \ - touch %{libvirt_rpmstatedir}/preset-$unit || : \ - fi \ - done \ - %{nil} - -# Apply presets for units that have previously been marked. Meant to -# be called during %posttrans. Note that foo.service must be passed -# as the first argument, before all the various foo*.socket -# associated with it, for things to work correctly. This is necessary -# because Also=foo.socket is usually present in foo.service's -# [Install] section, and we want that configuration to take -# precedence over foo.socket's own presets. -%define libvirt_systemd_perform_preset() \ - %{?7:%{error:Too many arguments}} \ - for unit in %{?2} %{?3} %{?4} %{?5} %{?6} %1; do \ - if test -e %{libvirt_rpmstatedir}/preset-$unit; then \ - /usr/bin/systemctl --no-reload preset $unit || : \ - fi \ - rm -f %{libvirt_rpmstatedir}/preset-$unit \ - done \ - rmdir %{libvirt_rpmstatedir} 2>/dev/null || : \ - %{nil} - -# Mark a single unit for restart. Meant to be called during %pre. -%define libvirt_systemd_schedule_restart() \ - mkdir -p %{libvirt_rpmstatedir} || : \ - touch %{libvirt_rpmstatedir}/restart-%1 || : \ - %{nil} - -# Restart a unit that was previously marked. Meant to be called -# during %posttrans. If systemd is not running, no action will be -# performed. -%define libvirt_systemd_perform_restart() \ - if test -d /run/systemd/system && \ - test -e %{libvirt_rpmstatedir}/restart-%1; then \ - /usr/bin/systemctl try-restart %1 >/dev/null 2>&1 || : \ - fi \ - rm -f %{libvirt_rpmstatedir}/restart-%1 \ - rmdir %{libvirt_rpmstatedir} 2>/dev/null || : \ - %{nil} - -# Mark a single unit for reload. Meant to be called during %pre. -%define libvirt_systemd_schedule_reload() \ - mkdir -p %{libvirt_rpmstatedir} || : \ - touch %{libvirt_rpmstatedir}/reload-%1 || : \ - %{nil} - -# Reload a unit that was previously marked. Meant to be called during -# %posttrans. If systemd is not running, no action will be performed. -%define libvirt_systemd_perform_reload() \ - if test -d /run/systemd/system && \ - test -e %{libvirt_rpmstatedir}/reload-%1; then \ - /usr/bin/systemctl try-reload-or-restart %1 >/dev/null 2>&1 || : \ - fi \ - rm -f %{libvirt_rpmstatedir}/reload-%1 \ - rmdir %{libvirt_rpmstatedir} 2>/dev/null || : \ - %{nil} - -# Disable a single unit, optionally stopping it if systemd is -# running. Meant to be called during %preun. -%define libvirt_systemd_disable() \ - if test -d /run/systemd/system; then \ - /usr/bin/systemctl --no-reload disable --now %{?*} || : \ - else \ - /usr/bin/systemctl --no-reload disable %{?*} || : \ - fi \ - %{nil} - -# %pre implementation for services that should be restarted on -# upgrade. Note that foo.service must be passed as the first -# argument, before all the various foo*.socket associated with it. -%define libvirt_systemd_restart_pre() \ - %libvirt_systemd_schedule_preset %{?*} \ - %libvirt_systemd_schedule_restart %1 \ - %{nil} - -# %pre implementation for services that should be reloaded on -# upgrade. Note that foo.service must be passed as the first -# argument, before all the various foo*.socket associated with it. -%define libvirt_systemd_reload_pre() \ - %libvirt_systemd_schedule_preset %{?*} \ - %libvirt_systemd_schedule_reload %1 \ - %{nil} - -# %pre implementation for services that should be neither restarted -# nor reloaded on upgrade. -%define libvirt_systemd_noaction_pre() \ - %libvirt_systemd_schedule_preset %{?*} \ - %{nil} - -# %posttrans implementation for all services. We can use a single -# macro to cover all scenarios, because each operation will only be -# performed if it had previously been scheduled. Note that -# foo.service must be passed as the first argument, before all the -# various foo*.socket associated with it. -%define libvirt_systemd_posttrans() \ - %libvirt_systemd_perform_preset %{?*} \ - %libvirt_systemd_perform_reload %1 \ - %libvirt_systemd_perform_restart %1 \ - %{nil} - -# %preun implementation for all services. -%define libvirt_systemd_preun() \ - if [ $1 -lt 1 ]; then \ - %libvirt_systemd_disable %{?*} \ - fi \ - %{nil} - -# For daemons with only UNIX sockets - -%define libvirt_systemd_unix_pre() %libvirt_systemd_restart_pre %1.service %1.socket %1-ro.socket %1-admin.socket -%define libvirt_systemd_unix_posttrans() %libvirt_systemd_posttrans %1.service %1.socket %1-ro.socket %1-admin.socket -%define libvirt_systemd_unix_preun() %libvirt_systemd_preun %1.service %1.socket %1-ro.socket %1-admin.socket - -# For daemons with UNIX and INET sockets -%define libvirt_systemd_inet_pre() %libvirt_systemd_restart_pre %1.service %1.socket %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket -%define libvirt_systemd_inet_posttrans() %libvirt_systemd_posttrans %1.service %1.socket %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket -%define libvirt_systemd_inet_preun() %libvirt_systemd_preun %1.service %1.socket %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket - -# For daemons with only UNIX sockets and no unprivileged read-only access -%define libvirt_systemd_privileged_pre() %libvirt_systemd_reload_pre %1.service %1.socket %1-admin.socket -%define libvirt_systemd_privileged_posttrans() %libvirt_systemd_posttrans %1.service %1.socket %1-admin.socket -%define libvirt_systemd_privileged_preun() %libvirt_systemd_preun %1.service %1.socket %1-admin.socket - -# For one-shot daemons that have no associated sockets and should never be restarted -%define libvirt_systemd_oneshot_pre() %libvirt_systemd_noaction_pre %1.service -%define libvirt_systemd_oneshot_posttrans() %libvirt_systemd_posttrans %1.service -%define libvirt_systemd_oneshot_preun() %libvirt_systemd_preun %1.service - -# For packages that install configuration for other daemons -%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 - -%posttrans daemon -%libvirt_sysconfig_posttrans libvirtd -%libvirt_systemd_inet_posttrans libvirtd - -%preun daemon -%libvirt_systemd_inet_preun libvirtd - -%pre daemon-common -%libvirt_sysconfig_pre libvirt-guests -%libvirt_systemd_oneshot_pre libvirt-guests -# 'libvirt' group is just to allow password-less polkit access to libvirt -# daemons. The uid number is irrelevant, so we use dynamic allocation. -getent group libvirt >/dev/null || groupadd -r libvirt -exit 0 - -%posttrans daemon-common -%libvirt_sysconfig_posttrans libvirt-guests -%libvirt_systemd_oneshot_posttrans libvirt-guests - -%preun daemon-common -%libvirt_systemd_oneshot_preun libvirt-guests - -%pre daemon-lock -%libvirt_sysconfig_pre virtlockd -%libvirt_systemd_privileged_pre virtlockd - -%posttrans daemon-lock -%libvirt_sysconfig_posttrans virtlockd -%libvirt_systemd_privileged_posttrans virtlockd - -%preun daemon-lock -%libvirt_systemd_privileged_preun virtlockd - -%pre daemon-log -%libvirt_sysconfig_pre virtlogd -%libvirt_systemd_privileged_pre virtlogd - -%posttrans daemon-log -%libvirt_sysconfig_posttrans virtlogd -%libvirt_systemd_privileged_posttrans virtlogd - -%preun daemon-log -%libvirt_systemd_privileged_preun virtlogd - -%pre daemon-proxy -%libvirt_sysconfig_pre virtproxyd -%libvirt_systemd_inet_pre virtproxyd - -%posttrans daemon-proxy -%libvirt_sysconfig_posttrans virtproxyd -%libvirt_systemd_inet_posttrans virtproxyd - -%preun daemon-proxy -%libvirt_systemd_inet_preun virtproxyd - -%pre daemon-driver-network -%libvirt_sysconfig_pre virtnetworkd -%libvirt_systemd_unix_pre virtnetworkd - -%post daemon-driver-network - %if %{with_firewalld_zone} - %firewalld_reload - %endif - -%posttrans daemon-driver-network -%libvirt_sysconfig_posttrans virtnetworkd -%libvirt_systemd_unix_posttrans virtnetworkd - -%preun daemon-driver-network -%libvirt_systemd_unix_preun virtnetworkd - -%postun daemon-driver-network - %if %{with_firewalld_zone} - %firewalld_reload - %endif - -%pre daemon-driver-nwfilter -%libvirt_sysconfig_pre virtnwfilterd -%libvirt_systemd_unix_pre virtnwfilterd - -%posttrans daemon-driver-nwfilter -%libvirt_sysconfig_posttrans virtnwfilterd -%libvirt_systemd_unix_posttrans virtnwfilterd - -%preun daemon-driver-nwfilter -%libvirt_systemd_unix_preun virtnwfilterd - -%pre daemon-driver-nodedev -%libvirt_sysconfig_pre virtnodedevd -%libvirt_systemd_unix_pre virtnodedevd - -%posttrans daemon-driver-nodedev -%libvirt_sysconfig_posttrans virtnodedevd -%libvirt_systemd_unix_posttrans virtnodedevd - -%preun daemon-driver-nodedev -%libvirt_systemd_unix_preun virtnodedevd - -%pre daemon-driver-interface -%libvirt_sysconfig_pre virtinterfaced -%libvirt_systemd_unix_pre virtinterfaced - -%posttrans daemon-driver-interface -%libvirt_sysconfig_posttrans virtinterfaced -%libvirt_systemd_unix_posttrans virtinterfaced - -%preun daemon-driver-interface -%libvirt_systemd_unix_preun virtinterfaced - -%pre daemon-driver-secret -%libvirt_sysconfig_pre virtsecretd -%libvirt_systemd_unix_pre virtsecretd - -%posttrans daemon-driver-secret -%libvirt_sysconfig_posttrans virtsecretd -%libvirt_systemd_unix_posttrans virtsecretd - -%preun daemon-driver-secret -%libvirt_systemd_unix_preun virtsecretd - -%pre daemon-driver-storage-core -%libvirt_sysconfig_pre virtstoraged -%libvirt_systemd_unix_pre virtstoraged - -%posttrans daemon-driver-storage-core -%libvirt_sysconfig_posttrans virtstoraged -%libvirt_systemd_unix_posttrans virtstoraged - -%preun daemon-driver-storage-core -%libvirt_systemd_unix_preun virtstoraged - - %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://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' || : - fi -fi -exit 0 - -%posttrans daemon-driver-qemu -%libvirt_sysconfig_posttrans virtqemud -%libvirt_systemd_unix_posttrans virtqemud - -%preun daemon-driver-qemu -%libvirt_systemd_unix_preun virtqemud - %endif - - %if %{with_lxc} -%pre daemon-driver-lxc -%libvirt_sysconfig_pre virtlxcd -%libvirt_systemd_unix_pre virtlxcd - -%posttrans daemon-driver-lxc -%libvirt_sysconfig_posttrans virtlxcd -%libvirt_systemd_unix_posttrans virtlxcd - -%preun daemon-driver-lxc -%libvirt_systemd_unix_preun virtlxcd - %endif - - %if %{with_vbox} -%pre daemon-driver-vbox -%libvirt_sysconfig_pre virtvboxd -%libvirt_systemd_unix_pre virtvboxd - -%posttrans daemon-driver-vbox -%libvirt_sysconfig_posttrans virtvboxd -%libvirt_systemd_unix_posttrans virtvboxd - -%preun daemon-driver-vbox -%libvirt_systemd_unix_preun virtvboxd - %endif - - %if %{with_libxl} -%pre daemon-driver-libxl -%libvirt_sysconfig_pre virtxend -%libvirt_systemd_unix_pre virtxend - -%posttrans daemon-driver-libxl -%libvirt_sysconfig_posttrans virtxend -%libvirt_systemd_unix_posttrans virtxend - -%preun daemon-driver-libxl -%libvirt_systemd_unix_preun virtxend - %endif - - %if %{with_ch} -%pre daemon-driver-ch -%libvirt_sysconfig_pre virtchd -%libvirt_systemd_unix_pre virtchd - -%posttrans daemon-driver-ch -%libvirt_sysconfig_posttrans virtchd -%libvirt_systemd_unix_posttrans virtchd - -%preun daemon-driver-ch -%libvirt_systemd_unix_preun virtchd - %endif - -%pre daemon-config-network -%libvirt_systemd_config_pre libvirtd -%libvirt_systemd_config_pre virtnetworkd - -%post daemon-config-network -if test $1 -eq 1 && test ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ; then - # see if the network used by default network creates a conflict, - # and try to resolve it - # NB: 192.168.122.0/24 is used in the default.xml template file; - # do not modify any of those values here without also modifying - # them in the template. - orig_sub=122 - sub=${orig_sub} - nl=' -' - routes="${nl}$(ip route show | cut -d' ' -f1)${nl}" - case ${routes} in - *"${nl}192.168.${orig_sub}.0/24${nl}"*) - # there was a match, so we need to look for an unused subnet - for new_sub in $(seq 124 254); do - case ${routes} in - *"${nl}192.168.${new_sub}.0/24${nl}"*) - ;; - *) - sub=$new_sub - break; - ;; - esac - done - ;; - *) - ;; - esac - - sed -e "s/${orig_sub}/${sub}/g" \ - < %{_datadir}/libvirt/networks/default.xml \ - > %{_sysconfdir}/libvirt/qemu/networks/default.xml - ln -s ../default.xml %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml - # libvirt saves this file with mode 0600 - chmod 0600 %{_sysconfdir}/libvirt/qemu/networks/default.xml -fi - -%posttrans daemon-config-network -%libvirt_systemd_config_posttrans libvirtd -%libvirt_systemd_config_posttrans virtnetworkd - -%pre daemon-config-nwfilter -%libvirt_systemd_config_pre libvirtd -%libvirt_systemd_config_pre virtnwfilterd - -%post daemon-config-nwfilter -for datadir_file in %{_datadir}/libvirt/nwfilter/*.xml; do - sysconfdir_file=%{_sysconfdir}/libvirt/nwfilter/$(basename "$datadir_file") - if [ ! -f "$sysconfdir_file" ]; then - # libvirt saves these files with mode 600 - install -m 0600 "$datadir_file" "$sysconfdir_file" - fi -done - -%posttrans daemon-config-nwfilter -%libvirt_systemd_config_posttrans libvirtd -%libvirt_systemd_config_posttrans virtnwfilterd - - %if %{with_lxc} -%pre login-shell -getent group virtlogin >/dev/null || groupadd -r virtlogin -exit 0 - %endif -%endif - -%if %{with_native} -%files - -%files docs -%doc AUTHORS.rst NEWS.rst README.rst -%doc libvirt-docs/* - -%files daemon -%{_unitdir}/libvirtd.service -%{_unitdir}/libvirtd.socket -%{_unitdir}/libvirtd-ro.socket -%{_unitdir}/libvirtd-admin.socket -%{_unitdir}/libvirtd-tcp.socket -%{_unitdir}/libvirtd-tls.socket -%config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf -%config(noreplace) %{_prefix}/lib/sysctl.d/60-libvirtd.conf -%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd -%dir %{_datadir}/augeas/lenses -%{_datadir}/augeas/lenses/libvirtd.aug -%dir %{_datadir}/augeas/lenses/tests -%{_datadir}/augeas/lenses/tests/test_libvirtd.aug -%attr(0755, root, root) %{_sbindir}/libvirtd -%{_mandir}/man8/libvirtd.8* - -%files daemon-common -%{_unitdir}/virt-guest-shutdown.target -%{_unitdir}/libvirt-guests.service -%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf -%dir %{_datadir}/libvirt/ -%ghost %dir %{_rundir}/libvirt/ -%ghost %dir %attr(0700, root, root) %{_rundir}/libvirt/common/ -%dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/ -%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/images/ -%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/filesystems/ -%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/boot/ -%dir %attr(0711, root, root) %{_localstatedir}/cache/libvirt/ -%dir %attr(0755, root, root) %{_libdir}/libvirt/ -%dir %attr(0755, root, root) %{_libdir}/libvirt/connection-driver/ -%dir %attr(0755, root, root) %{_libdir}/libvirt/storage-backend/ -%dir %attr(0755, root, root) %{_libdir}/libvirt/storage-file/ -%{_datadir}/polkit-1/actions/org.libvirt.unix.policy -%{_datadir}/polkit-1/actions/org.libvirt.api.policy -%{_datadir}/polkit-1/rules.d/50-libvirt.rules -%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/ -%attr(0755, root, root) %{_libexecdir}/libvirt_iohelper -%attr(0755, root, root) %{_bindir}/virt-ssh-helper -%attr(0755, root, root) %{_libexecdir}/libvirt-guests.sh -%{_mandir}/man1/virt-admin.1* -%{_mandir}/man1/virt-host-validate.1* -%{_mandir}/man8/virt-ssh-helper.8* -%{_mandir}/man8/libvirt-guests.8* -%{_bindir}/virt-host-validate -%{_bindir}/virt-admin -%{_datadir}/bash-completion/completions/virt-admin - -%files daemon-lock -%{_unitdir}/virtlockd.service -%{_unitdir}/virtlockd.socket -%{_unitdir}/virtlockd-admin.socket -%config(noreplace) %{_sysconfdir}/libvirt/virtlockd.conf -%{_datadir}/augeas/lenses/virtlockd.aug -%{_datadir}/augeas/lenses/tests/test_virtlockd.aug -%{_datadir}/augeas/lenses/libvirt_lockd.aug - %if %{with_qemu} -%{_datadir}/augeas/lenses/tests/test_libvirt_lockd.aug - %endif -%attr(0755, root, root) %{_sbindir}/virtlockd -%{_mandir}/man8/virtlockd.8* - -%files daemon-plugin-lockd -%dir %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/ -%attr(0755, root, root) %{_libdir}/libvirt/lock-driver/lockd.so - -%files daemon-log -%{_unitdir}/virtlogd.service -%{_unitdir}/virtlogd.socket -%{_unitdir}/virtlogd-admin.socket -%config(noreplace) %{_sysconfdir}/libvirt/virtlogd.conf -%{_datadir}/augeas/lenses/virtlogd.aug -%{_datadir}/augeas/lenses/tests/test_virtlogd.aug -%attr(0755, root, root) %{_sbindir}/virtlogd -%{_mandir}/man8/virtlogd.8* - -%files daemon-proxy -%{_unitdir}/virtproxyd.service -%{_unitdir}/virtproxyd.socket -%{_unitdir}/virtproxyd-ro.socket -%{_unitdir}/virtproxyd-admin.socket -%{_unitdir}/virtproxyd-tcp.socket -%{_unitdir}/virtproxyd-tls.socket -%config(noreplace) %{_sysconfdir}/libvirt/virtproxyd.conf -%{_datadir}/augeas/lenses/virtproxyd.aug -%{_datadir}/augeas/lenses/tests/test_virtproxyd.aug -%attr(0755, root, root) %{_sbindir}/virtproxyd -%{_mandir}/man8/virtproxyd.8* - -%files daemon-config-network -%dir %{_datadir}/libvirt/networks/ -%{_datadir}/libvirt/networks/default.xml -%ghost %{_sysconfdir}/libvirt/qemu/networks/default.xml -%ghost %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml - -%files daemon-config-nwfilter -%dir %{_datadir}/libvirt/nwfilter/ -%{_datadir}/libvirt/nwfilter/*.xml -%ghost %{_sysconfdir}/libvirt/nwfilter/*.xml - -%files daemon-driver-interface -%config(noreplace) %{_sysconfdir}/libvirt/virtinterfaced.conf -%{_datadir}/augeas/lenses/virtinterfaced.aug -%{_datadir}/augeas/lenses/tests/test_virtinterfaced.aug -%{_unitdir}/virtinterfaced.service -%{_unitdir}/virtinterfaced.socket -%{_unitdir}/virtinterfaced-ro.socket -%{_unitdir}/virtinterfaced-admin.socket -%attr(0755, root, root) %{_sbindir}/virtinterfaced -%ghost %dir %attr(0700, root, root) %{_rundir}/libvirt/interface/ -%{_libdir}/libvirt/connection-driver/libvirt_driver_interface.so -%{_mandir}/man8/virtinterfaced.8* - -%files daemon-driver-network -%config(noreplace) %{_sysconfdir}/libvirt/virtnetworkd.conf -%{_datadir}/augeas/lenses/virtnetworkd.aug -%{_datadir}/augeas/lenses/tests/test_virtnetworkd.aug -%config(noreplace) %{_sysconfdir}/libvirt/network.conf -%{_datadir}/augeas/lenses/libvirtd_network.aug -%{_datadir}/augeas/lenses/tests/test_libvirtd_network.aug -%{_unitdir}/virtnetworkd.service -%{_unitdir}/virtnetworkd.socket -%{_unitdir}/virtnetworkd-ro.socket -%{_unitdir}/virtnetworkd-admin.socket -%attr(0755, root, root) %{_sbindir}/virtnetworkd -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/autostart -%ghost %dir %{_rundir}/libvirt/network/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/network/ -%dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/dnsmasq/ -%attr(0755, root, root) %{_libexecdir}/libvirt_leaseshelper -%{_libdir}/libvirt/connection-driver/libvirt_driver_network.so -%{_mandir}/man8/virtnetworkd.8* - %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 - -%files daemon-driver-nodedev -%config(noreplace) %{_sysconfdir}/libvirt/virtnodedevd.conf -%{_datadir}/augeas/lenses/virtnodedevd.aug -%{_datadir}/augeas/lenses/tests/test_virtnodedevd.aug -%{_unitdir}/virtnodedevd.service -%{_unitdir}/virtnodedevd.socket -%{_unitdir}/virtnodedevd-ro.socket -%{_unitdir}/virtnodedevd-admin.socket -%attr(0755, root, root) %{_sbindir}/virtnodedevd -%ghost %dir %attr(0700, root, root) %{_rundir}/libvirt/nodedev/ -%{_libdir}/libvirt/connection-driver/libvirt_driver_nodedev.so -%{_mandir}/man8/virtnodedevd.8* - -%files daemon-driver-nwfilter -%config(noreplace) %{_sysconfdir}/libvirt/virtnwfilterd.conf -%{_datadir}/augeas/lenses/virtnwfilterd.aug -%{_datadir}/augeas/lenses/tests/test_virtnwfilterd.aug -%{_unitdir}/virtnwfilterd.service -%{_unitdir}/virtnwfilterd.socket -%{_unitdir}/virtnwfilterd-ro.socket -%{_unitdir}/virtnwfilterd-admin.socket -%attr(0755, root, root) %{_sbindir}/virtnwfilterd -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/ -%ghost %dir %{_rundir}/libvirt/network/ -%ghost %dir %attr(0700, root, root) %{_rundir}/libvirt/nwfilter-binding/ -%ghost %dir %attr(0700, root, root) %{_rundir}/libvirt/nwfilter/ -%{_libdir}/libvirt/connection-driver/libvirt_driver_nwfilter.so -%{_mandir}/man8/virtnwfilterd.8* - -%files daemon-driver-secret -%config(noreplace) %{_sysconfdir}/libvirt/virtsecretd.conf -%{_datadir}/augeas/lenses/virtsecretd.aug -%{_datadir}/augeas/lenses/tests/test_virtsecretd.aug -%{_unitdir}/virtsecretd.service -%{_unitdir}/virtsecretd.socket -%{_unitdir}/virtsecretd-ro.socket -%{_unitdir}/virtsecretd-admin.socket -%attr(0755, root, root) %{_sbindir}/virtsecretd -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/secrets/ -%ghost %dir %attr(0700, root, root) %{_rundir}/libvirt/secrets/ -%{_libdir}/libvirt/connection-driver/libvirt_driver_secret.so -%{_mandir}/man8/virtsecretd.8* - -%files daemon-driver-storage - -%files daemon-driver-storage-core -%config(noreplace) %{_sysconfdir}/libvirt/virtstoraged.conf -%{_datadir}/augeas/lenses/virtstoraged.aug -%{_datadir}/augeas/lenses/tests/test_virtstoraged.aug -%{_unitdir}/virtstoraged.service -%{_unitdir}/virtstoraged.socket -%{_unitdir}/virtstoraged-ro.socket -%{_unitdir}/virtstoraged-admin.socket -%attr(0755, root, root) %{_sbindir}/virtstoraged -%attr(0755, root, root) %{_libexecdir}/libvirt_parthelper -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/storage/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/storage/autostart/ -%ghost %dir %{_rundir}/libvirt/storage/ -%{_libdir}/libvirt/connection-driver/libvirt_driver_storage.so -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_fs.so -%{_libdir}/libvirt/storage-file/libvirt_storage_file_fs.so -%{_mandir}/man8/virtstoraged.8* - -%files daemon-driver-storage-disk -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_disk.so - -%files daemon-driver-storage-logical -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_logical.so - -%files daemon-driver-storage-scsi -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_scsi.so - -%files daemon-driver-storage-iscsi -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_iscsi.so - - %if %{with_storage_iscsi_direct} -%files daemon-driver-storage-iscsi-direct -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_iscsi-direct.so - %endif - -%files daemon-driver-storage-mpath -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_mpath.so - - %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 - - %if %{with_storage_rbd} -%files daemon-driver-storage-rbd -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_rbd.so - %endif - - %if %{with_storage_zfs} -%files daemon-driver-storage-zfs -%{_libdir}/libvirt/storage-backend/libvirt_storage_backend_zfs.so - %endif - - %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 -%{_unitdir}/virtqemud.socket -%{_unitdir}/virtqemud-ro.socket -%{_unitdir}/virtqemud-admin.socket -%attr(0755, root, root) %{_sbindir}/virtqemud -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/autostart/ -%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/qemu/ -%config(noreplace) %{_sysconfdir}/libvirt/qemu.conf -%config(noreplace) %{_sysconfdir}/libvirt/qemu-lockd.conf -%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.qemu -%ghost %dir %attr(0755, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/ -%ghost %dir %attr(0770, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/dbus/ -%ghost %dir %attr(0755, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/passt/ -%ghost %dir %attr(0755, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/slirp/ -%ghost %dir %attr(0770, %{qemu_user}, %{qemu_group}) %{_rundir}/libvirt/qemu/swtpm/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/checkpoint/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/dump/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/nvram/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/ram/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/save/ -%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/snapshot/ -%dir %attr(0750, root, root) %{_localstatedir}/cache/libvirt/qemu/ -%{_datadir}/augeas/lenses/libvirtd_qemu.aug -%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug -%{_libdir}/libvirt/connection-driver/libvirt_driver_qemu.so -%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/swtpm/ -%dir %attr(0730, tss, tss) %{_localstatedir}/log/swtpm/libvirt/qemu/ -%{_bindir}/virt-qemu-run -%{_mandir}/man1/virt-qemu-run.1* -%{_mandir}/man8/virtqemud.8* -%{_sysusersdir}/libvirt-qemu.conf - %endif - - %if %{with_lxc} -%files daemon-driver-lxc -%config(noreplace) %{_sysconfdir}/libvirt/virtlxcd.conf -%{_datadir}/augeas/lenses/virtlxcd.aug -%{_datadir}/augeas/lenses/tests/test_virtlxcd.aug -%{_unitdir}/virtlxcd.service -%{_unitdir}/virtlxcd.socket -%{_unitdir}/virtlxcd-ro.socket -%{_unitdir}/virtlxcd-admin.socket -%attr(0755, root, root) %{_sbindir}/virtlxcd -%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/lxc/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/lxc/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/lxc/autostart/ -%config(noreplace) %{_sysconfdir}/libvirt/lxc.conf -%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.lxc -%ghost %dir %{_rundir}/libvirt/lxc/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/lxc/ -%{_datadir}/augeas/lenses/libvirtd_lxc.aug -%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug -%attr(0755, root, root) %{_libexecdir}/libvirt_lxc -%{_libdir}/libvirt/connection-driver/libvirt_driver_lxc.so -%{_mandir}/man8/virtlxcd.8* - %endif - - %if %{with_libxl} -%files daemon-driver-libxl -%config(noreplace) %{_sysconfdir}/libvirt/virtxend.conf -%{_datadir}/augeas/lenses/virtxend.aug -%{_datadir}/augeas/lenses/tests/test_virtxend.aug -%{_unitdir}/virtxend.service -%{_unitdir}/virtxend.socket -%{_unitdir}/virtxend-ro.socket -%{_unitdir}/virtxend-admin.socket -%attr(0755, root, root) %{_sbindir}/virtxend -%config(noreplace) %{_sysconfdir}/libvirt/libxl.conf -%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.libxl -%config(noreplace) %{_sysconfdir}/libvirt/libxl-lockd.conf -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/libxl/ -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/libxl/autostart/ -%{_datadir}/augeas/lenses/libvirtd_libxl.aug -%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug -%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/libxl/ -%ghost %dir %{_rundir}/libvirt/libxl/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/channel/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/channel/target/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/dump/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/save/ -%{_libdir}/libvirt/connection-driver/libvirt_driver_libxl.so -%{_mandir}/man8/virtxend.8* - %endif - - %if %{with_vbox} -%files daemon-driver-vbox -%config(noreplace) %{_sysconfdir}/libvirt/virtvboxd.conf -%{_datadir}/augeas/lenses/virtvboxd.aug -%{_datadir}/augeas/lenses/tests/test_virtvboxd.aug -%{_unitdir}/virtvboxd.service -%{_unitdir}/virtvboxd.socket -%{_unitdir}/virtvboxd-ro.socket -%{_unitdir}/virtvboxd-admin.socket -%attr(0755, root, root) %{_sbindir}/virtvboxd -%{_libdir}/libvirt/connection-driver/libvirt_driver_vbox.so -%{_mandir}/man8/virtvboxd.8* - %endif - - %if %{with_qemu_tcg} -%files daemon-qemu - %endif - - %if %{with_qemu_kvm} -%files daemon-kvm - %endif - - %if %{with_lxc} -%files daemon-lxc - %endif - - %if %{with_libxl} -%files daemon-xen - %endif - - %if %{with_vbox} -%files daemon-vbox - %endif - - %if %{with_sanlock} -%files daemon-plugin-sanlock - %if %{with_qemu} -%config(noreplace) %{_sysconfdir}/libvirt/qemu-sanlock.conf - %endif - %if %{with_libxl} -%config(noreplace) %{_sysconfdir}/libvirt/libxl-sanlock.conf - %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 -%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug -%dir %attr(0770, root, sanlock) %{_localstatedir}/lib/libvirt/sanlock -%{_sbindir}/virt-sanlock-cleanup -%{_mandir}/man8/virt-sanlock-cleanup.8* -%attr(0755, root, root) %{_libexecdir}/libvirt_sanlock_helper - %endif - - %if %{with_ch} -%files daemon-driver-ch -%attr(0755, root, root) %{_sbindir}/virtchd -%config(noreplace) %{_sysconfdir}/libvirt/virtchd.conf -%{_datadir}/augeas/lenses/virtchd.aug -%{_datadir}/augeas/lenses/tests/test_virtchd.aug -%{_unitdir}/virtchd-admin.socket -%{_unitdir}/virtchd-ro.socket -%{_unitdir}/virtchd.service -%{_unitdir}/virtchd.socket -%{_libdir}/libvirt/connection-driver/libvirt_driver_ch.so - %endif - -%files client -%{_mandir}/man1/virsh.1* -%{_mandir}/man1/virt-xml-validate.1* -%{_mandir}/man1/virt-pki-query-dn.1* -%{_mandir}/man1/virt-pki-validate.1* -%{_mandir}/man7/virkey*.7* -%{_bindir}/virsh -%{_bindir}/virt-xml-validate -%{_bindir}/virt-pki-query-dn -%{_bindir}/virt-pki-validate -%{_datadir}/bash-completion/completions/virsh - - %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 - -%files libs -f %{name}.lang -%license COPYING COPYING.LESSER -%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/ -%config(noreplace) %{_sysconfdir}/libvirt/libvirt.conf -%config(noreplace) %{_sysconfdir}/libvirt/libvirt-admin.conf -%{_libdir}/libvirt.so.* -%{_libdir}/libvirt-qemu.so.* -%{_libdir}/libvirt-lxc.so.* -%{_libdir}/libvirt-admin.so.* -%dir %{_datadir}/libvirt/ -%{_datadir}/libvirt/test-screenshot.png -%dir %{_datadir}/libvirt/schemas/ -%{_datadir}/libvirt/schemas/*.rng -%dir %{_datadir}/systemtap/tapset/ -%{_datadir}/systemtap/tapset/libvirt_probes*.stp -%{_datadir}/systemtap/tapset/libvirt_functions.stp - %if %{with_qemu} -%{_datadir}/systemtap/tapset/libvirt_qemu_probes*.stp - %endif -%dir %{_datadir}/libvirt/cpu_map -%{_datadir}/libvirt/cpu_map/*.xml - - %if %{with_wireshark} -%files wireshark -%{wireshark_plugindir}/libvirt.so - %endif - -%files nss -%{_libdir}/libnss_libvirt.so.2 -%{_libdir}/libnss_libvirt_guest.so.2 - -%files ssh-proxy -%config(noreplace) %{_sysconfdir}/ssh/ssh_config.d/30-libvirt-ssh-proxy.conf -%{_libexecdir}/libvirt-ssh-proxy - - %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 - -%files devel -%{_libdir}/libvirt.so -%{_libdir}/libvirt-admin.so -%{_libdir}/libvirt-qemu.so -%{_libdir}/libvirt-lxc.so -%dir %{_includedir}/libvirt -%{_includedir}/libvirt/virterror.h -%{_includedir}/libvirt/libvirt.h -%{_includedir}/libvirt/libvirt-admin.h -%{_includedir}/libvirt/libvirt-common.h -%{_includedir}/libvirt/libvirt-domain.h -%{_includedir}/libvirt/libvirt-domain-checkpoint.h -%{_includedir}/libvirt/libvirt-domain-snapshot.h -%{_includedir}/libvirt/libvirt-event.h -%{_includedir}/libvirt/libvirt-host.h -%{_includedir}/libvirt/libvirt-interface.h -%{_includedir}/libvirt/libvirt-network.h -%{_includedir}/libvirt/libvirt-nodedev.h -%{_includedir}/libvirt/libvirt-nwfilter.h -%{_includedir}/libvirt/libvirt-secret.h -%{_includedir}/libvirt/libvirt-storage.h -%{_includedir}/libvirt/libvirt-stream.h -%{_includedir}/libvirt/libvirt-qemu.h -%{_includedir}/libvirt/libvirt-lxc.h -%{_libdir}/pkgconfig/libvirt.pc -%{_libdir}/pkgconfig/libvirt-admin.pc -%{_libdir}/pkgconfig/libvirt-qemu.pc -%{_libdir}/pkgconfig/libvirt-lxc.pc -%dir %{_datadir}/libvirt/api/ -%{_datadir}/libvirt/api/libvirt-api.xml -%{_datadir}/libvirt/api/libvirt-admin-api.xml -%{_datadir}/libvirt/api/libvirt-qemu-api.xml -%{_datadir}/libvirt/api/libvirt-lxc-api.xml -%endif - -%if %{with_mingw32} -%files -n mingw32-libvirt -f mingw32-libvirt.lang -%dir %{mingw32_sysconfdir}/libvirt/ -%config(noreplace) %{mingw32_sysconfdir}/libvirt/libvirt.conf -%config(noreplace) %{mingw32_sysconfdir}/libvirt/libvirt-admin.conf -%{mingw32_bindir}/libvirt-0.dll -%{mingw32_bindir}/virsh.exe -%{mingw32_bindir}/virt-admin.exe -%{mingw32_bindir}/virt-xml-validate -%{mingw32_bindir}/virt-pki-query-dn.exe -%{mingw32_bindir}/virt-pki-validate.exe -%{mingw32_bindir}/libvirt-lxc-0.dll -%{mingw32_bindir}/libvirt-qemu-0.dll -%{mingw32_bindir}/libvirt-admin-0.dll -%{mingw32_libdir}/libvirt.dll.a -%{mingw32_libdir}/pkgconfig/libvirt.pc -%{mingw32_libdir}/pkgconfig/libvirt-qemu.pc -%{mingw32_libdir}/pkgconfig/libvirt-lxc.pc -%{mingw32_libdir}/pkgconfig/libvirt-admin.pc -%{mingw32_libdir}/libvirt-lxc.dll.a -%{mingw32_libdir}/libvirt-qemu.dll.a -%{mingw32_libdir}/libvirt-admin.dll.a -%dir %{mingw32_datadir}/libvirt/ -%dir %{mingw32_datadir}/libvirt/schemas/ -%{mingw32_datadir}/libvirt/schemas/*.rng -%dir %{mingw32_datadir}/libvirt/api/ -%{mingw32_datadir}/libvirt/api/libvirt-api.xml -%{mingw32_datadir}/libvirt/api/libvirt-lxc-api.xml -%{mingw32_datadir}/libvirt/api/libvirt-qemu-api.xml -%{mingw32_datadir}/libvirt/api/libvirt-admin-api.xml -%{mingw32_datadir}/libvirt/cpu_map/*.xml -%{mingw32_datadir}/libvirt/test-screenshot.png -%dir %{mingw32_includedir}/libvirt -%{mingw32_includedir}/libvirt/libvirt.h -%{mingw32_includedir}/libvirt/libvirt-common.h -%{mingw32_includedir}/libvirt/libvirt-domain.h -%{mingw32_includedir}/libvirt/libvirt-domain-checkpoint.h -%{mingw32_includedir}/libvirt/libvirt-domain-snapshot.h -%{mingw32_includedir}/libvirt/libvirt-event.h -%{mingw32_includedir}/libvirt/libvirt-host.h -%{mingw32_includedir}/libvirt/libvirt-interface.h -%{mingw32_includedir}/libvirt/libvirt-network.h -%{mingw32_includedir}/libvirt/libvirt-nodedev.h -%{mingw32_includedir}/libvirt/libvirt-nwfilter.h -%{mingw32_includedir}/libvirt/libvirt-secret.h -%{mingw32_includedir}/libvirt/libvirt-storage.h -%{mingw32_includedir}/libvirt/libvirt-stream.h -%{mingw32_includedir}/libvirt/virterror.h -%{mingw32_includedir}/libvirt/libvirt-lxc.h -%{mingw32_includedir}/libvirt/libvirt-qemu.h -%{mingw32_includedir}/libvirt/libvirt-admin.h -%{mingw32_mandir}/man1/virsh.1* -%{mingw32_mandir}/man1/virt-admin.1* -%{mingw32_mandir}/man1/virt-xml-validate.1* -%{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 -%config(noreplace) %{mingw64_sysconfdir}/libvirt/libvirt-admin.conf -%{mingw64_bindir}/libvirt-0.dll -%{mingw64_bindir}/virsh.exe -%{mingw64_bindir}/virt-admin.exe -%{mingw64_bindir}/virt-xml-validate -%{mingw64_bindir}/virt-pki-query-dn.exe -%{mingw64_bindir}/virt-pki-validate.exe -%{mingw64_bindir}/libvirt-lxc-0.dll -%{mingw64_bindir}/libvirt-qemu-0.dll -%{mingw64_bindir}/libvirt-admin-0.dll -%{mingw64_libdir}/libvirt.dll.a -%{mingw64_libdir}/pkgconfig/libvirt.pc -%{mingw64_libdir}/pkgconfig/libvirt-qemu.pc -%{mingw64_libdir}/pkgconfig/libvirt-lxc.pc -%{mingw64_libdir}/pkgconfig/libvirt-admin.pc -%{mingw64_libdir}/libvirt-lxc.dll.a -%{mingw64_libdir}/libvirt-qemu.dll.a -%{mingw64_libdir}/libvirt-admin.dll.a -%dir %{mingw64_datadir}/libvirt/ -%dir %{mingw64_datadir}/libvirt/schemas/ -%{mingw64_datadir}/libvirt/schemas/*.rng -%dir %{mingw64_datadir}/libvirt/api/ -%{mingw64_datadir}/libvirt/api/libvirt-api.xml -%{mingw64_datadir}/libvirt/api/libvirt-lxc-api.xml -%{mingw64_datadir}/libvirt/api/libvirt-qemu-api.xml -%{mingw64_datadir}/libvirt/api/libvirt-admin-api.xml -%{mingw64_datadir}/libvirt/cpu_map/*.xml -%{mingw64_datadir}/libvirt/test-screenshot.png -%dir %{mingw64_includedir}/libvirt -%{mingw64_includedir}/libvirt/libvirt.h -%{mingw64_includedir}/libvirt/libvirt-common.h -%{mingw64_includedir}/libvirt/libvirt-domain.h -%{mingw64_includedir}/libvirt/libvirt-domain-checkpoint.h -%{mingw64_includedir}/libvirt/libvirt-domain-snapshot.h -%{mingw64_includedir}/libvirt/libvirt-event.h -%{mingw64_includedir}/libvirt/libvirt-host.h -%{mingw64_includedir}/libvirt/libvirt-interface.h -%{mingw64_includedir}/libvirt/libvirt-network.h -%{mingw64_includedir}/libvirt/libvirt-nodedev.h -%{mingw64_includedir}/libvirt/libvirt-nwfilter.h -%{mingw64_includedir}/libvirt/libvirt-secret.h -%{mingw64_includedir}/libvirt/libvirt-storage.h -%{mingw64_includedir}/libvirt/libvirt-stream.h -%{mingw64_includedir}/libvirt/virterror.h -%{mingw64_includedir}/libvirt/libvirt-lxc.h -%{mingw64_includedir}/libvirt/libvirt-qemu.h -%{mingw64_includedir}/libvirt/libvirt-admin.h -%{mingw64_mandir}/man1/virsh.1* -%{mingw64_mandir}/man1/virt-admin.1* -%{mingw64_mandir}/man1/virt-xml-validate.1* -%{mingw64_mandir}/man1/virt-pki-query-dn.1* -%{mingw64_mandir}/man1/virt-pki-validate.1* -%{mingw64_mandir}/man7/virkey*.7* -%endif - - -%changelog -* Fri Oct 24 2025 Cole Robinson - 11.0.0-5 -- Fix build with latest wireshark - -* Fri Aug 08 2025 Cole Robinson - 11.0.0-4 -- libvirt-nss stops working after network restarts (bz #2364285) - -* Fri Jun 20 2025 Cole Robinson - 11.0.0-3 -- Fix dumpxml failures after migration (bz 2369243) - -* Tue Apr 29 2025 Daniel P. Berrangé - 11.0.0-2 -- Fix location of mount, umount (rhbz #2359196) -- Fix location of numad (rhbz #2359736) -- Fix tests on rebuild with latest GCC 15 - -* Fri Jan 17 2025 Cole Robinson - 11.0.0-1 -- Update to version 11.0.0 - -* Fri Jan 17 2025 Fedora Release Engineering - 10.10.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Mon Dec 02 2024 Cole Robinson - 10.10.0-1 -- Update to version 10.10.0 - -* Fri Nov 1 2024 Daniel P. Berrangé - 10.9.0-1 -- Update to version 10.9.0 - -* Tue Oct 01 2024 Cole Robinson - 10.8.0-1 -- Update to version 10.8.0 - -* Mon Sep 02 2024 Cole Robinson - 10.7.0-1 -- Update to version 10.7.0 - -* Tue Aug 27 2024 Cole Robinson - 10.6.0-2 -- Fix `virsh domifaddr --source=arp` on kernel 6.10 (bz #2302245) -- Add new systemtap-sdt-dtrace to build deps - -* Tue Aug 06 2024 Cole Robinson - 10.6.0-1 -- Update to version 10.6.0 - -* Mon Aug 05 2024 Richard W.M. Jones - 10.5.0-3 -- Rebuild for Xen 4.19.0 - -* Thu Jul 18 2024 Fedora Release Engineering - 10.5.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Thu Jul 4 2024 Daniel P. Berrangé - 10.5.0-1 -- Rebase to 10.5.0 release - -* Wed Jun 5 2024 Daniel P. Berrangé - 10.4.0-2 -- Fix leak of GSource handle -- Fix leak of udev reference (rhbz #2266017) - -* Wed Jun 5 2024 Daniel P. Berrangé - 10.4.0-1 -- Update to version 10.4.0 -- Change virtual network backend from iptables to nftables -- Introduce SSH VSOCK proxy - -* Thu May 2 2024 Daniel P. Berrangé - 10.3.0-1 -- Update to version 10.3.0 - -* Sat Apr 06 2024 Cole Robinson - 10.2.0-2 -- Rebuild for new libiscsi - -* Fri Apr 05 2024 Cole Robinson - 10.2.0-1 -- Update to version 10.2.0 - -* Fri Mar 01 2024 Cole Robinson - 10.1.0-1 -- Update to version 10.1.0 - -* Mon Feb 19 2024 Cole Robinson - 10.0.0-4 -- Rebuild for wireshark soname bump - -* Thu Jan 25 2024 Fedora Release Engineering - 10.0.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 10.0.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Tue Jan 16 2024 Cole Robinson - 10.0.0-1 -- Update to version 10.0.0 - -* Wed Jan 03 2024 Jonathan Wright - 9.10.0-4 -- conf: fix regression for default input bus - -* Fri Dec 8 2023 Richard W.M. Jones - 9.10.0-3 -- Bump and rebuild for xen 4.18.0, third attempt - -* Tue Dec 05 2023 Adam Williamson - 9.10.0-2 -- Rebuild for xen 4.18.0 again - -* Sat Dec 02 2023 Cole Robinson - 9.10.0-1 -- Update to version 9.10.0 - -* Thu Nov 30 2023 Richard W.M. Jones - 9.9.0-3 -- Bump and rebuild for xen 4.18.0 - -* Mon Nov 06 2023 Cole Robinson - 9.9.0-2 -- Fix crash with snapshot restore (bz #2247754) - -* Wed Nov 01 2023 Cole Robinson - 9.9.0-1 -- Update to version 9.9.0 - -* Thu Oct 05 2023 Cole Robinson - 9.8.0-1 -- Update to version 9.8.0 - -* Fri Sep 1 2023 Daniel P. Berrangé - 9.7.0-1 -- Update to version 9.7.0 - -* Tue Aug 01 2023 Cole Robinson - 9.6.0-1 -- Update to version 9.6.0 - -* Thu Jul 20 2023 Fedora Release Engineering - 9.5.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Wed Jul 05 2023 Cole Robinson - 9.5.0-1 -- Update to version 9.5.0 - -* Wed Jun 28 2023 Cole Robinson - 9.4.0-1 -- Update to version 9.4.0 - -* Tue May 23 2023 Cole Robinson - 9.3.0-2 -- Drop numad usage, it is removed from f39 - -* Tue May 02 2023 Cole Robinson - 9.3.0-1 -- Update to version 9.3.0 - -* Wed Apr 05 2023 Cole Robinson - 9.2.0-1 -- Update to version 9.2.0 - -* Wed Mar 01 2023 Cole Robinson - 9.1.0-1 -- Update to version 9.1.0 - -* Thu Jan 19 2023 Fedora Release Engineering - 9.0.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Mon Jan 16 2023 Cole Robinson - 9.0.0-1 -- Update to version 9.0.0 - -* Tue Jan 03 2023 Richard W.M. Jones - 8.10.0-2 -- Rebuild for xen-4.17.0 - -* Sat Dec 03 2022 Cole Robinson - 8.10.0-1 -- Update to version 8.10.0 - -* Thu Nov 03 2022 Cole Robinson - 8.9.0-1 -- Update to version 8.9.0 - -* Mon Oct 24 2022 Cole Robinson - 8.8.0-2 -- Rebuild for wireshark soname bump - -* Tue Oct 04 2022 Cole Robinson - 8.8.0-1 -- Update to version 8.8.0 - -* Fri Sep 9 2022 Jens Petersen - 8.7.0-2 -- F37 libvirt-daemon: depend on gettext-runtime instead of gettext (#2117209) - -* Tue Sep 06 2022 Cole Robinson - 8.7.0-1 -- Update to version 8.7.0 - -* Tue Aug 9 2022 Daniel P. Berrangé - 8.1.0-3 -- Pull in mingw sub-packages - -* Thu Aug 04 2022 Cole Robinson - 8.6.0-2 -- Use upstream 'glibc fix' commits - -* Mon Aug 01 2022 Cole Robinson - 8.6.0-1 -- Update to version 8.6.0 - -* Thu Jul 21 2022 Cole Robinson - 8.5.0-1 -- Update to version 8.5.0 - -* Sat Jun 11 2022 Cole Robinson - 8.4.0-2 -- Adjust for Xen dropping 32bit arches - -* Thu Jun 02 2022 Cole Robinson - 8.4.0-1 -- Update to version 8.4.0 - -* Mon May 02 2022 Cole Robinson - 8.3.0-1 -- Update to version 8.3.0 - -* Fri Apr 01 2022 Cole Robinson - 8.2.0-1 -- Update to version 8.2.0 - -* Thu Mar 3 2022 Daniel P. Berrangé - 8.1.0-2 -- Fix crash undefining VM without loader (rhbz#2060412) - -* Tue Mar 01 2022 Cole Robinson - 8.1.0-1 -- Update to version 8.1.0 - -* Tue Feb 22 2022 Richard W.M. Jones - 8.0.0-3 -- Include upstream patch which fixes virt-install bug. - -* Thu Jan 20 2022 Fedora Release Engineering - 8.0.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Fri Jan 14 2022 Cole Robinson - 8.0.0-1 -- Update to version 8.0.0 - -* Tue Jan 11 2022 Richard W.M. Jones - 7.10.0-2 -- Bump release and rebuild for new xen - -* Wed Dec 1 2021 Daniel P. Berrangé - 7.10.0-1 -- Update to 7.10.0 release - -* Tue Nov 2 2021 Daniel P. Berrangé - 7.9.0-1 -- Update to 7.9.0 release - -* Thu Oct 28 2021 Richard W.M. Jones - 7.8.0-2 -- Bump and rebuild for fixed glusterfs on arm (RHBZ#2018182) - -* Fri Oct 1 2021 Daniel P. Berrangé - 7.8.0-1 -- Update to 7.8.0 release - -* Thu Sep 2 2021 Daniel P. Berrangé - 7.7.0-1 -- Update to 7.7.0 release - -* Tue Aug 31 2021 Daniel P. Berrangé - 7.6.0-3 -- Fix repeated word in scriptlet name -- Fix deps on virtlockd/virtlogd socket units -- Fix test failure with newer QEMU - -* Wed Aug 4 2021 Daniel P. Berrangé - 7.6.0-2 -- Switch to use modular daemons by default - -* Mon Aug 2 2021 Daniel P. Berrangé - 7.6.0-1 -- Update to 7.6.0 release - -* Wed Jul 28 2021 Richard W.M. Jones - 7.5.0-3 -- Add fix for discard + copy-on-read affecting virt-v2v (RHBZ#1986509) - -* Thu Jul 22 2021 Fedora Release Engineering - 7.5.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Thu Jul 01 2021 Cole Robinson - 7.5.0-1 -- Update to version 7.5.0 - -* Mon Jun 07 2021 Cole Robinson - 7.4.0-2 -- Rebuild for xen 4.14 - -* Tue Jun 01 2021 Cole Robinson - 7.4.0-1 -- Update to version 7.4.0 - -* Tue May 4 2021 Daniel P. Berrangé - 7.3.0-1 -- Update to 7.3.0 release -- Remove libvirt-admin & libvirt-bash-completion subpackages - -* Mon Apr 05 2021 Cole Robinson - 7.2.0-1 -- Update to version 7.2.0 - -* Tue Mar 9 2021 Richard W.M. Jones - 7.1.0-2 -- Bump and rebuild for libwsman_client.so.4 -> .5 - -* Mon Mar 01 2021 Cole Robinson - 7.1.0-1 -- Update to version 7.1.0 - -* Wed Feb 03 2021 Cole Robinson - 7.0.0-4 -- Increase meson test timeout to fix builds on s390x copr - -* Tue Feb 02 2021 Laine Stump - 7.0.0-3 -- disable netcf in build - -* Tue Jan 26 2021 Fedora Release Engineering - 7.0.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Fri Jan 15 2021 Daniel P. Berrangé - 7.0.0-1 -- Rebase to 7.0.0 release diff --git a/fedora-42/SPECS/zfs-dkms.spec b/fedora-42/SPECS/zfs-dkms.spec deleted file mode 100644 index e8f4fd3..0000000 --- a/fedora-42/SPECS/zfs-dkms.spec +++ /dev/null @@ -1,168 +0,0 @@ -%{?!packager: %define packager Brian Behlendorf } - -%if ! 0%{?rhel}%{?fedora}%{?mageia}%{?suse_version}%{?openEuler} -%define not_rpm 1 -%endif - -# Exclude input files from mangling -%global __brp_mangle_shebangs_exclude_from ^/usr/src/.*$ - -%define module zfs -%define mkconf scripts/dkms.mkconf - -Name: %{module}-dkms - -Version: 2.4.2 -Release: 1%{?dist} -Summary: Kernel module(s) (dkms) - -Group: System Environment/Kernel -License: CDDL -URL: https://github.com/openzfs/zfs -Source0: %{module}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildArch: noarch - -Requires: dkms >= 2.2.0.3 -Requires(pre): dkms >= 2.2.0.3 -Requires(post): dkms >= 2.2.0.3 -Requires(preun): dkms >= 2.2.0.3 -Requires: gcc, make, perl, diffutils -Requires(post): gcc, make, perl, diffutils - -# Hold back kernel upgrades if kernel is not supported by ZFS -%if 0%{?rhel}%{?fedora}%{?mageia}%{?suse_version}%{?openEuler} -Requires: kernel-devel >= 4.18, kernel-devel <= 99.99.999 -Requires(post): kernel-devel >= 4.18, kernel-devel <= 99.99.999 -Conflicts: kernel-devel < 4.18, kernel-devel > 99.99.999 -Requires: kernel-uname-r >= 4.18, kernel-uname-r <= 99.99.999 -Requires(post): kernel-uname-r >= 4.18, kernel-uname-r <= 99.99.999 -Conflicts: kernel-uname-r < 4.18, kernel-uname-r > 99.99.999 - -Obsoletes: spl-dkms <= %{version} -%endif -Provides: %{module}-kmod = %{version} -AutoReqProv: no - -%if (0%{?fedora}%{?suse_version}%{?openEuler}) || (0%{?rhel} && 0%{?rhel} < 9) -# We don't directly use it, but if this isn't installed, rpmbuild as root can -# crash+corrupt rpmdb -# See issue #12071 -BuildRequires: ncompress -%endif - -%description -This package contains the dkms ZFS kernel modules. - -%prep -%setup -q -n %{module}-%{version} - -%build -%{mkconf} -n %{module} -v %{version} -f dkms.conf - -%install -if [ "$RPM_BUILD_ROOT" != "/" ]; then - rm -rf $RPM_BUILD_ROOT -fi -mkdir -p $RPM_BUILD_ROOT/usr/src/ -cp -rf ${RPM_BUILD_DIR}/%{module}-%{version} $RPM_BUILD_ROOT/usr/src/ - -%clean -if [ "$RPM_BUILD_ROOT" != "/" ]; then - rm -rf $RPM_BUILD_ROOT -fi - -%files -%defattr(-,root,root) -/usr/src/%{module}-%{version} - -%pre -echo "Running pre installation script: $0. Parameters: $*" -# We don't want any other versions lingering around in dkms. -# Tests with 'dnf' showed that in case of reinstall, or upgrade -# the preun scriptlet removed the version we are trying to install. -# Because of this, find all zfs dkms sources in /var/lib/dkms and -# remove them, if we find a matching version in dkms. - -dkms_root=/var/lib/dkms -if [ -d ${dkms_root}/%{module} ]; then - cd ${dkms_root}/%{module} - for x in [[:digit:]]*; do - [ -d "$x" ] || continue - otherver="$x" - opath="${dkms_root}/%{module}/${otherver}" - if [ "$otherver" != %{version} ]; then - # This is a workaround for a broken 'dkms status', we caused in a previous version. - # One day it might be not needed anymore, but it does not hurt to keep it. - if dkms status -m %{module} -v "$otherver" 2>&1 | grep "${opath}/source/dkms.conf does not exist" - then - echo "ERROR: dkms status is broken!" >&2 - if [ -L "${opath}/source" -a ! -d "${opath}/source" ] - then - echo "Trying to fix it by removing the symlink: ${opath}/source" >&2 - echo "You should manually remove ${opath}" >&2 - rm -f "${opath}/source" || echo "Removal failed!" >&2 - fi - fi - if [ `dkms status -m %{module} -v "$otherver" | grep -c %{module}` -gt 0 ]; then - echo "Removing old %{module} dkms modules version $otherver from all kernels." - dkms remove -m %{module} -v "$otherver" --all ||: - fi - fi - done - cd ${dkms_root} -fi - -# Uninstall this version of zfs dkms modules before installation of the package. -if [ `dkms status -m %{module} -v %{version} | grep -c %{module}` -gt 0 ]; then - echo "Removing %{module} dkms modules version %{version} from all kernels." - dkms remove -m %{module} -v %{version} --all ||: -fi - -%post -echo "Running post installation script: $0. Parameters: $*" -# Add the module to dkms, as reccommended in the dkms man page. -# This is generally rpm specfic. -# But this also may help, if we have a broken 'dkms status'. -# Because, if the sources are available and only the symlink pointing -# to them is missing, this will resolve the situation -echo "Adding %{module} dkms modules version %{version} to dkms." -dkms add -m %{module} -v %{version} %{!?not_rpm:--rpm_safe_upgrade} ||: - -# After installing the package, dkms install this zfs version for the current kernel. -# Force the overwriting of old modules to avoid diff warnings in dkms status. -# Or in case of a downgrade to overwrite newer versions. -# Or if some other backed up versions have been restored before. -echo "Installing %{module} dkms modules version %{version} for the current kernel." -dkms install --force -m %{module} -v %{version} ||: - -%preun -dkms_root="/var/lib/dkms/%{module}/%{version}" -echo "Running pre uninstall script: $0. Parameters: $*" -# In case of upgrade we do nothing. See above comment in pre hook. -if [ "$1" = "1" -o "$1" = "upgrade" ] ; then - echo "This is an upgrade. Skipping pre uninstall action." - exit 0 -fi - -# Check if we uninstall the package. In that case remove the dkms modules. -# '0' is the value for the first parameter for rpm packages. -# 'remove' or 'purge' are the possible names for deb packages. -if [ "$1" = "0" -o "$1" = "remove" -o "$1" = "purge" ] ; then - if [ `dkms status -m %{module} -v %{version} | grep -c %{module}` -gt 0 ]; then - echo "Removing %{module} dkms modules version %{version} from all kernels." - dkms remove -m %{module} -v %{version} --all %{!?not_rpm:--rpm_safe_upgrade} && exit 0 - fi - # If removing the modules failed, it might be because of the broken 'dkms status'. - if dkms status -m %{module} -v %{version} 2>&1 | grep "${dkms_root}/source/dkms.conf does not exist" - then - echo "ERROR: dkms status is broken!" >&2 - echo "You should manually remove ${dkms_root}" >&2 - echo "WARNING: installed modules in /lib/modules/`uname -r`/extra could not be removed automatically!" >&2 - fi -else - echo "Script parameter $1 did not match any removal condition." -fi - -exit 0 - diff --git a/fedora-42/SPECS/zfs.spec b/fedora-42/SPECS/zfs.spec deleted file mode 100644 index bac172e..0000000 --- a/fedora-42/SPECS/zfs.spec +++ /dev/null @@ -1,606 +0,0 @@ -%global _sbindir /sbin -%global _libdir /%{_lib} - -# Set the default udev directory based on distribution. -%if %{undefined _udevdir} -%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler} -%global _udevdir %{_prefix}/lib/udev -%else -%global _udevdir /lib/udev -%endif -%endif - -# Set the default udevrule directory based on distribution. -%if %{undefined _udevruledir} -%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler} -%global _udevruledir %{_prefix}/lib/udev/rules.d -%else -%global _udevruledir /lib/udev/rules.d -%endif -%endif - -# Set the default _bashcompletiondir directory based on distribution. -%if %{undefined _bashcompletiondir} -%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler} -%global _bashcompletiondir /etc/bash_completion.d -%else -%global _bashcompletiondir /usr/share/bash-completion -%endif -%endif - -# Set the default dracut directory based on distribution. -%if %{undefined _dracutdir} -%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler} -%global _dracutdir %{_prefix}/lib/dracut -%else -%global _dracutdir %{_prefix}/share/dracut -%endif -%endif - -%if %{undefined _initconfdir} -%global _initconfdir /etc/sysconfig -%endif - -%if %{undefined _unitdir} -%global _unitdir %{_prefix}/lib/systemd/system -%endif - -%if %{undefined _presetdir} -%global _presetdir %{_prefix}/lib/systemd/system-preset -%endif - -%if %{undefined _modulesloaddir} -%global _modulesloaddir %{_prefix}/lib/modules-load.d -%endif - -%if %{undefined _systemdgeneratordir} -%global _systemdgeneratordir %{_prefix}/lib/systemd/system-generators -%endif - -%if %{undefined _pkgconfigdir} -%global _pkgconfigdir %{_prefix}/%{_lib}/pkgconfig -%endif - -%bcond_with debug -%bcond_with debuginfo -%bcond_with asan -%bcond_with ubsan -%bcond_with systemd -%bcond_with pam -%bcond_without pyzfs - -# Generic enable switch for systemd -%if %{with systemd} -%define _systemd 1 -%endif - -# Distros below support systemd -%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler} -%define _systemd 1 -%endif - -# When not specified default to distribution provided version. -%if %{undefined __use_python} -%define __python /usr/bin/python3 -%define __python_pkg_version 3 -%else -%define __python %{__use_python} -%define __python_pkg_version %{__use_python_pkg_version} -%endif -%define __python_sitelib %(%{__python} -Esc " -import sysconfig; -if hasattr(sysconfig, 'get_default_scheme'): - scheme = sysconfig.get_default_scheme() -else: - scheme = sysconfig._get_default_scheme() -if scheme == 'posix_local': - scheme = 'posix_prefix' -prefix = '%{_prefix}' -if prefix == 'NONE': - prefix = '%{ac_default_prefix}' -sitedir = sysconfig.get_path('purelib', scheme, vars={'base': prefix}) -print(sitedir);" 2>/dev/null || %{__python} -Esc "from distutils import sysconfig; print(sysconfig.get_python_lib(0,0))") - -Name: zfs -Version: 2.4.2 -Release: 1%{?dist} -Summary: Commands to control the kernel modules and libraries - -Group: System Environment/Kernel -License: CDDL -URL: https://github.com/openzfs/zfs -Source0: %{name}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -Requires: libzpool7%{?_isa} = %{version}-%{release} -Requires: libnvpair3%{?_isa} = %{version}-%{release} -Requires: libuutil3%{?_isa} = %{version}-%{release} -Requires: libzfs7%{?_isa} = %{version}-%{release} -Requires: %{name}-kmod = %{version} -Provides: %{name}-kmod-common = %{version}-%{release} -Obsoletes: spl <= %{version} - -# zfs-fuse provides the same commands and man pages that OpenZFS does. -# Renaming those on either side would conflict with all available documentation. -Conflicts: zfs-fuse - -%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler} -BuildRequires: gcc, make -BuildRequires: zlib-devel -BuildRequires: libuuid-devel -BuildRequires: libblkid-devel -BuildRequires: libudev-devel -BuildRequires: libattr-devel -BuildRequires: openssl-devel -%if 0%{?fedora}%{?suse_version}%{?openEuler} || 0%{?rhel} >= 8 || 0%{?centos} >= 8 -BuildRequires: libtirpc-devel -%endif - -%if (0%{?fedora}%{?suse_version}%{?openEuler}) || (0%{?rhel} && 0%{?rhel} < 9) -# We don't directly use it, but if this isn't installed, rpmbuild as root can -# crash+corrupt rpmdb -# See issue #12071 -BuildRequires: ncompress -%endif - -Requires: openssl -%if 0%{?_systemd} -BuildRequires: systemd -%endif - -%endif - -%if 0%{?_systemd} -Requires(post): systemd -Requires(preun): systemd -Requires(postun): systemd -%endif - -# The zpool iostat/status -c scripts call some utilities like lsblk and iostat -Requires: util-linux -Requires: sysstat - -%description -This package contains the core ZFS command line utilities. - -%package -n libzpool7 -Summary: Native ZFS pool library for Linux -Group: System Environment/Kernel -Obsoletes: libzpool2 <= %{version} -Obsoletes: libzpool4 <= %{version} -Obsoletes: libzpool5 <= %{version} -Obsoletes: libzpool6 <= %{version} - -%description -n libzpool7 -This package contains the zpool library, which provides support -for managing zpools - -%if %{defined ldconfig_scriptlets} -%ldconfig_scriptlets -n libzpool7 -%else -%post -n libzpool7 -p /sbin/ldconfig -%postun -n libzpool7 -p /sbin/ldconfig -%endif - -%package -n libnvpair3 -Summary: Solaris name-value library for Linux -Group: System Environment/Kernel -Obsoletes: libnvpair1 <= %{version} - -%description -n libnvpair3 -This package contains routines for packing and unpacking name-value -pairs. This functionality is used to portably transport data across -process boundaries, between kernel and user space, and can be used -to write self describing data structures on disk. - -%if %{defined ldconfig_scriptlets} -%ldconfig_scriptlets -n libnvpair3 -%else -%post -n libnvpair3 -p /sbin/ldconfig -%postun -n libnvpair3 -p /sbin/ldconfig -%endif - -%package -n libuutil3 -Summary: Solaris userland utility library for Linux -Group: System Environment/Kernel -Obsoletes: libuutil1 <= %{version} - -%description -n libuutil3 -This library provides a variety of compatibility functions for OpenZFS: - * libspl: The Solaris Porting Layer userland library, which provides APIs - that make it possible to run Solaris user code in a Linux environment - with relatively minimal modification. - * libavl: The Adelson-Velskii Landis balanced binary tree manipulation - library. - * libefi: The Extensible Firmware Interface library for GUID disk - partitioning. - * libshare: NFS, SMB, and iSCSI service integration for ZFS. - -%if %{defined ldconfig_scriptlets} -%ldconfig_scriptlets -n libuutil3 -%else -%post -n libuutil3 -p /sbin/ldconfig -%postun -n libuutil3 -p /sbin/ldconfig -%endif - -# The library version is encoded in the package name. When updating the -# version information it is important to add an obsoletes line below for -# the previous version of the package. -%package -n libzfs7 -Summary: Native ZFS filesystem library for Linux -Group: System Environment/Kernel -Obsoletes: libzfs2 <= %{version} -Obsoletes: libzfs4 <= %{version} -Obsoletes: libzfs5 <= %{version} -Obsoletes: libzfs6 <= %{version} - -%description -n libzfs7 -This package provides support for managing ZFS filesystems - -%if %{defined ldconfig_scriptlets} -%ldconfig_scriptlets -n libzfs7 -%else -%post -n libzfs7 -p /sbin/ldconfig -%postun -n libzfs7 -p /sbin/ldconfig -%endif - -%package -n libzfs7-devel -Summary: Development headers -Group: System Environment/Kernel -Requires: libzfs7%{?_isa} = %{version}-%{release} -Requires: libzpool7%{?_isa} = %{version}-%{release} -Requires: libnvpair3%{?_isa} = %{version}-%{release} -Requires: libuutil3%{?_isa} = %{version}-%{release} -Provides: libzpool7-devel = %{version}-%{release} -Provides: libnvpair3-devel = %{version}-%{release} -Provides: libuutil3-devel = %{version}-%{release} -Obsoletes: zfs-devel <= %{version} -Obsoletes: libzfs2-devel <= %{version} -Obsoletes: libzfs4-devel <= %{version} -Obsoletes: libzfs5-devel <= %{version} - -%description -n libzfs7-devel -This package contains the header files needed for building additional -applications against the ZFS libraries. - -%package test -Summary: Test infrastructure -Group: System Environment/Kernel -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: parted -Requires: lsscsi -Requires: mdadm -Requires: bc -Requires: ksh -Requires: fio -Requires: acl -Requires: sudo -Requires: sysstat -Requires: libaio -Requires: python%{__python_pkg_version} -%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler} -BuildRequires: libaio-devel -%endif -AutoReqProv: no - -%description test -This package contains test infrastructure and support scripts for -validating the file system. - -%package dracut -Summary: Dracut module -Group: System Environment/Kernel -BuildArch: noarch -Requires: %{name} >= %{version} -Requires: dracut -Requires: /usr/bin/awk -Requires: grep - -%description dracut -This package contains a dracut module used to construct an initramfs -image which is ZFS aware. - -%if %{with pyzfs} -# Enforce `python36-` package prefix for CentOS 7 -# since dependencies come from EPEL and are named this way -%package -n python%{__python_pkg_version}-pyzfs -Summary: Python %{python_version} wrapper for libzfs_core -Group: Development/Languages/Python -License: Apache-2.0 -BuildArch: noarch -Requires: libzfs7 = %{version}-%{release} -Requires: libnvpair3 = %{version}-%{release} -Requires: libffi -Requires: python%{__python_pkg_version} - -%if 0%{?centos} == 7 -Requires: python36-cffi -%else -Requires: python%{__python_pkg_version}-cffi -%endif - -%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler} -%if 0%{?centos} == 7 -BuildRequires: python36-packaging -BuildRequires: python36-devel -BuildRequires: python36-cffi -BuildRequires: python36-setuptools -%else -BuildRequires: python%{__python_pkg_version}-packaging -BuildRequires: python%{__python_pkg_version}-devel -BuildRequires: python%{__python_pkg_version}-cffi -BuildRequires: python%{__python_pkg_version}-setuptools -%endif - -BuildRequires: libffi-devel -%endif - -%description -n python%{__python_pkg_version}-pyzfs -This package provides a python wrapper for the libzfs_core C library. -%endif - -%if 0%{?_initramfs} -%package initramfs -Summary: Initramfs module -Group: System Environment/Kernel -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: initramfs-tools - -%description initramfs -This package contains a initramfs module used to construct an initramfs -image which is ZFS aware. -%endif - -%if %{with pam} -%package -n pam_zfs_key -Summary: PAM module for encrypted ZFS datasets - -%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler} -BuildRequires: pam-devel -%endif - -%description -n pam_zfs_key -This package contains the pam_zfs_key PAM module, which provides -support for unlocking datasets on user login. -%endif - -%prep -%if %{with debug} - %define debug --enable-debug -%else - %define debug --disable-debug -%endif - -%if %{with debuginfo} - %define debuginfo --enable-debuginfo -%else - %define debuginfo --disable-debuginfo -%endif - -%if %{with asan} - %define asan --enable-asan -%else - %define asan --disable-asan -%endif - -%if %{with ubsan} - %define ubsan --enable-ubsan -%else - %define ubsan --disable-ubsan -%endif - -%if 0%{?_systemd} - %define systemd --enable-systemd --with-systemdunitdir=%{_unitdir} --with-systemdpresetdir=%{_presetdir} --with-systemdmodulesloaddir=%{_modulesloaddir} --with-systemdgeneratordir=%{_systemdgeneratordir} --disable-sysvinit - %define systemd_svcs zfs-import-cache.service zfs-import-scan.service zfs-mount.service zfs-mount@.service zfs-share.service zfs-zed.service zfs.target zfs-import.target zfs-volume-wait.service zfs-volumes.target -%else - %define systemd --enable-sysvinit --disable-systemd -%endif - -%if %{with pyzfs} - %define pyzfs --enable-pyzfs -%else - %define pyzfs --disable-pyzfs -%endif - -%if %{with pam} - %define pam --enable-pam -%else - %define pam --disable-pam -%endif - -%setup -q - -%build -%configure \ - --with-config=user \ - --with-udevdir=%{_udevdir} \ - --with-udevruledir=%{_udevruledir} \ - --with-dracutdir=%{_dracutdir} \ - --with-pamconfigsdir=%{_datadir}/pam-configs \ - --with-pammoduledir=%{_libdir}/security \ - --with-python=%{__python} \ - --with-pkgconfigdir=%{_pkgconfigdir} \ - --disable-static \ - %{debug} \ - %{debuginfo} \ - %{asan} \ - %{ubsan} \ - %{systemd} \ - %{pam} \ - %{pyzfs} -make %{?_smp_mflags} - -%install -%{__rm} -rf $RPM_BUILD_ROOT -make install DESTDIR=%{?buildroot} -find %{?buildroot}%{_libdir} -name '*.la' -exec rm -f {} \; -%if 0%{!?__brp_mangle_shebangs:1} -find %{?buildroot}%{_bindir} \ - \( -name zarcsummary -or -name zarcstat -or -name dbufstat \ - -or -name zilstat \) \ - -exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \; -find %{?buildroot}%{_datadir} \ - \( -name test-runner.py -or -name zts-report.py \) \ - -exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \; -%endif - -%post -%if 0%{?_systemd} -%if 0%{?systemd_post:1} -%systemd_post %{systemd_svcs} -%else -if [ "$1" = "1" -o "$1" = "install" ] ; then - # Initial installation - systemctl preset %{systemd_svcs} >/dev/null || true -fi -%endif -%else -if [ -x /sbin/chkconfig ]; then - /sbin/chkconfig --add zfs-import - /sbin/chkconfig --add zfs-load-key - /sbin/chkconfig --add zfs-mount - /sbin/chkconfig --add zfs-share - /sbin/chkconfig --add zfs-zed -fi -%endif -exit 0 - -# On RHEL/CentOS 7 the static nodes aren't refreshed by default after -# installing a package. This is the default behavior for Fedora. -%posttrans -%if 0%{?rhel} == 7 || 0%{?centos} == 7 -systemctl restart kmod-static-nodes -systemctl restart systemd-tmpfiles-setup-dev -udevadm trigger -%endif - -%preun -%if 0%{?_systemd} -%if 0%{?systemd_preun:1} -%systemd_preun %{systemd_svcs} -%else -if [ "$1" = "0" -o "$1" = "remove" ] ; then - # Package removal, not upgrade - systemctl --no-reload disable %{systemd_svcs} >/dev/null || true - systemctl stop %{systemd_svcs} >/dev/null || true -fi -%endif -%else -if [ "$1" = "0" -o "$1" = "remove" ] && [ -x /sbin/chkconfig ]; then - /sbin/chkconfig --del zfs-import - /sbin/chkconfig --del zfs-load-key - /sbin/chkconfig --del zfs-mount - /sbin/chkconfig --del zfs-share - /sbin/chkconfig --del zfs-zed -fi -%endif -exit 0 - -%postun -%if 0%{?_systemd} -%if 0%{?systemd_postun:1} -%systemd_postun %{systemd_svcs} -%else -systemctl --system daemon-reload >/dev/null || true -%endif -%endif - -%files -# Core utilities -%{_sbindir}/* -%{_bindir}/raidz_test -%{_bindir}/zvol_wait -# Optional Python 3 scripts -%{_bindir}/zarcsummary -%{_bindir}/zarcstat -%{_bindir}/dbufstat -%{_bindir}/zilstat -# Man pages -%{_mandir}/man1/* -%{_mandir}/man4/* -%{_mandir}/man5/* -%{_mandir}/man7/* -%{_mandir}/man8/* -# Configuration files and scripts -%{_libexecdir}/%{name} -%{_udevdir}/vdev_id -%{_udevdir}/zvol_id -%{_udevdir}/rules.d/* -%{_datadir}/%{name}/compatibility.d -%if ! 0%{?_systemd} || 0%{?_initramfs} -# Files needed for sysvinit and initramfs-tools -%{_sysconfdir}/%{name}/zfs-functions -%config(noreplace) %{_initconfdir}/zfs -%else -%exclude %{_sysconfdir}/%{name}/zfs-functions -%exclude %{_initconfdir}/zfs -%endif -%if 0%{?_systemd} -%{_unitdir}/* -%{_presetdir}/* -%{_modulesloaddir}/* -%{_systemdgeneratordir}/* -%else -%config(noreplace) %{_sysconfdir}/init.d/* -%endif -%config(noreplace) %{_sysconfdir}/%{name}/zed.d/* -%config(noreplace) %{_sysconfdir}/%{name}/zpool.d/* -%config(noreplace) %{_sysconfdir}/%{name}/vdev_id.conf.*.example -%attr(440, root, root) %config(noreplace) %{_sysconfdir}/sudoers.d/* - -%config(noreplace) %{_bashcompletiondir}/zfs -%config(noreplace) %{_bashcompletiondir}/zpool - -%files -n libzpool7 -%{_libdir}/libzpool.so.* - -%files -n libnvpair3 -%{_libdir}/libnvpair.so.* - -%files -n libuutil3 -%{_libdir}/libuutil.so.* - -%files -n libzfs7 -%{_libdir}/libzfs*.so.* - -%files -n libzfs7-devel -%{_pkgconfigdir}/libzfs.pc -%{_pkgconfigdir}/libzfsbootenv.pc -%{_pkgconfigdir}/libzfs_core.pc -%{_libdir}/*.so -%{_includedir}/* -%doc AUTHORS COPYRIGHT LICENSE NOTICE README.md - -%files test -%{_datadir}/%{name}/zfs-tests -%{_datadir}/%{name}/test-runner -%{_datadir}/%{name}/runfiles -%{_datadir}/%{name}/*.sh - -%files dracut -%doc contrib/dracut/README.md -%{_dracutdir}/modules.d/* - -%if %{with pyzfs} -%files -n python%{__python_pkg_version}-pyzfs -%doc contrib/pyzfs/README -%doc contrib/pyzfs/LICENSE -%defattr(-,root,root,-) -%{__python_sitelib}/libzfs_core/* -%{__python_sitelib}/pyzfs* -%endif - -%if 0%{?_initramfs} -%files initramfs -%doc contrib/initramfs/README.md -/usr/share/initramfs-tools/* -%else -# Since we're not building the initramfs package, -# ignore those files. -%exclude /usr/share/initramfs-tools -%endif - -%if %{with pam} -%files -n pam_zfs_key -%{_libdir}/security/* -%{_datadir}/pam-configs/* -%endif