commit:     68fdb138b9730d532c38cdf6fcef2a36f37a92cb
Author:     Matthias Maier <tamiko <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 23 14:00:39 2018 +0000
Commit:     Matthias Maier <tamiko <AT> gentoo <DOT> org>
CommitDate: Fri Mar 23 14:05:58 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=68fdb138

app-emulation/libvirt: 4.1.0-r2: Apply upstream patch for bridge support

Apply an upstream patch to reenable bridge support even if
USE=-virt-network and automatic network support is compiled out of
libvirt

Thanks to Agostino Sarubbo for upstream report and mentioning the
upstream patch.

Patch: https://www.redhat.com/archives/libvir-list/2018-March/msg01461.html
Bug: https://bugs.gentoo.org/650660
Bug: https://bugs.gentoo.org/650872
Package-Manager: Portage-2.3.24, Repoman-2.3.6

 .../files/libvirt-4.1.0-unbreak_my_bridge.patch    | 78 ++++++++++++++++++++++
 ...irt-4.1.0-r1.ebuild => libvirt-4.1.0-r2.ebuild} | 10 +--
 2 files changed, 80 insertions(+), 8 deletions(-)

diff --git a/app-emulation/libvirt/files/libvirt-4.1.0-unbreak_my_bridge.patch 
b/app-emulation/libvirt/files/libvirt-4.1.0-unbreak_my_bridge.patch
new file mode 100644
index 00000000000..c4d24ec020b
--- /dev/null
+++ b/app-emulation/libvirt/files/libvirt-4.1.0-unbreak_my_bridge.patch
@@ -0,0 +1,78 @@
+[PATCH] conf: avoid reporting errors when network driver is disabled
+
+In previous releases all these methods were a no-op if the network
+driver is disabled. These helper methods are called unconditionally for
+all types of network interface, so must be no-ops if missing. Other code
+will already generate an error if the network driver is disabled and a
+NIC with type=network is used.
+
+Signed-off-by: Daniel P. Berrangé <berrange redhat com>
+---
+ src/conf/domain_conf.c | 23 +++++++++--------------
+ 1 file changed, 9 insertions(+), 14 deletions(-)
+
+diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
+index c8d051fa9f..79d6bd378e 100644
+--- a/src/conf/domain_conf.c
++++ b/src/conf/domain_conf.c
+@@ -28979,10 +28979,13 @@ int
+ virDomainNetAllocateActualDevice(virDomainDefPtr dom,
+                                  virDomainNetDefPtr iface)
+ {
++    /* Just silently ignore if network driver isn't present. If something
++     * has tried to use a NIC with type=network, other code will already
++     * cause an error. This ensures type=bridge doesn't break when
++     * network driver is compiled out.
++     */
+     if (!netAllocate) {
+-        virReportError(VIR_ERR_NO_SUPPORT, "%s",
+-                       _("Network device allocation not available"));
+-        return -1;
++        return 0;
+     }
+ 
+     return netAllocate(dom, iface);
+@@ -28993,8 +28996,6 @@ virDomainNetNotifyActualDevice(virDomainDefPtr dom,
+                                virDomainNetDefPtr iface)
+ {
+     if (!netNotify) {
+-        virReportError(VIR_ERR_NO_SUPPORT, "%s",
+-                       _("Network device notification not available"));
+         return;
+     }
+ 
+@@ -29007,9 +29008,7 @@ virDomainNetReleaseActualDevice(virDomainDefPtr dom,
+                                 virDomainNetDefPtr iface)
+ {
+     if (!netRelease) {
+-        virReportError(VIR_ERR_NO_SUPPORT, "%s",
+-                       _("Network device release not available"));
+-        return -1;
++        return 0;
+     }
+ 
+     return netRelease(dom, iface);
+@@ -29020,9 +29019,7 @@ virDomainNetBandwidthChangeAllowed(virDomainNetDefPtr 
iface,
+                                    virNetDevBandwidthPtr newBandwidth)
+ {
+     if (!netBandwidthChangeAllowed) {
+-        virReportError(VIR_ERR_NO_SUPPORT, "%s",
+-                       _("Network device bandwidth change query not 
available"));
+-        return -1;
++        return 0;
+     }
+ 
+     return netBandwidthChangeAllowed(iface, newBandwidth);
+@@ -29033,9 +29030,7 @@ virDomainNetBandwidthUpdate(virDomainNetDefPtr iface,
+                             virNetDevBandwidthPtr newBandwidth)
+ {
+     if (!netBandwidthUpdate) {
+-        virReportError(VIR_ERR_NO_SUPPORT, "%s",
+-                       _("Network device bandwidth update not available"));
+-        return -1;
++        return 0;
+     }
+ 
+     return netBandwidthUpdate(iface, newBandwidth);
+-- 
+2.14.3

diff --git a/app-emulation/libvirt/libvirt-4.1.0-r1.ebuild 
b/app-emulation/libvirt/libvirt-4.1.0-r2.ebuild
similarity index 97%
rename from app-emulation/libvirt/libvirt-4.1.0-r1.ebuild
rename to app-emulation/libvirt/libvirt-4.1.0-r2.ebuild
index d8baa074cc5..f5fdca4ddcd 100644
--- a/app-emulation/libvirt/libvirt-4.1.0-r1.ebuild
+++ b/app-emulation/libvirt/libvirt-4.1.0-r2.ebuild
@@ -126,6 +126,7 @@ PATCHES=(
        "${FILESDIR}"/${PN}-1.2.16-fix_paths_in_libvirt-guests_sh.patch
        "${FILESDIR}"/${PN}-3.10.0-r2-fix_paths_for_apparmor.patch
        "${FILESDIR}"/${PN}-3.1.0-musl-fix-includes.patch # bug #609488
+       "${FILESDIR}"/${P}-unbreak_my_bridge.patch # bug 650660
 )
 
 pkg_setup() {
@@ -238,12 +239,6 @@ src_prepare() {
 }
 
 src_configure() {
-       #
-       # With 4.1.0 we should always enable networking support - otherwise not
-       # even minimal networking is available. Yes, this degrades
-       # USE=virt-network to a mere runtime-dep USE flag. But let's keep it
-       # for compatibility and convenience.
-       #
        local myeconfargs=(
                $(use_with apparmor)
                $(use_with apparmor apparmor-profiles)
@@ -277,6 +272,7 @@ src_configure() {
                $(use_with udev)
                $(use_with uml)
                $(use_with vepa virtualport)
+               $(use_with virt-network network)
                $(use_with wireshark-plugins wireshark-dissector)
                $(use_with xen)
                $(use_with xen xen-inotify)
@@ -284,8 +280,6 @@ src_configure() {
                $(use_with zeroconf avahi)
                $(use_with zfs storage-zfs)
 
-               --with-network
-
                --without-hal
                --without-netcf
                --without-sanlock

Reply via email to