virt-manager/virtinst-graphics-add-check-for-qemu-modules-in-spice-graphic.patch
Charles Arnold 552f64b200 Accepting request 850809 from home:bfrogers:branches:Virtualization
- boo#1178141 - Accomodate qemu modularization with respect to v5.2
  qemu changes, where 3 additional modular shared objects need to
  be present for spice support. This change simply augments what
  was done before, adding the additional code to the same patch

OBS-URL: https://build.opensuse.org/request/show/850809
OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=528
2020-11-30 15:07:26 +00:00

69 lines
3.4 KiB
Diff

From dc5e834199e19ad09de17ac13e9834d3f17bd112 Mon Sep 17 00:00:00 2001
From: Bruce Rogers <brogers@suse.com>
Date: Wed, 25 Nov 2020 10:34:56 -0700
Subject: [PATCH] graphics: add check for qemu modules in spice graphics
detection
For SLE and openSUSE qemu, starting with v5.1, spice and spice related
qemu modules have been split away from the main system emulator and
are packaged as Recommends, meaning that they may not be present.
Up to now virt-manager has assumed spice is available for x86 qemu, but
that is no longer the case. Unfortunately the standard libvirt feature
detection can't yet help us out here, so we leapfrog libvirt by doing
our own detection of whether the qemu modules needed to support the
default guest install using spice, usb redirection, and qxl video are
present.
With v5.2, some additional qemu modules are also required, so we add
a separate detection for that version, and add corresponding additional
module checks.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
virtinst/devices/graphics.py | 19 +++++++++++++++++++
virtinst/support.py | 2 ++
2 files changed, 21 insertions(+)
Index: virt-manager-3.1.0/virtinst/devices/graphics.py
===================================================================
--- virt-manager-3.1.0.orig/virtinst/devices/graphics.py
+++ virt-manager-3.1.0/virtinst/devices/graphics.py
@@ -135,6 +135,25 @@ class DeviceGraphics(Device):
# Spice has issues on some host arches, like ppc, so allow it
if self.conn.caps.host.cpu.arch not in ["i686", "x86_64"]:
return False
+ if self.conn.support.conn_spice_modular1():
+ if self.conn.caps.host.cpu.arch in ["x86_64"]:
+ if not (os.path.exists("/usr/lib64/qemu/hw-usb-redirect.so") and
+ os.path.exists("/usr/lib64/qemu/hw-display-qxl.so")):
+ return False
+ if self.conn.support.conn_spice_modular2():
+ if not (os.path.exists("/usr/lib64/qemu/chardev-spice.so") and
+ os.path.exists("/usr/lib64/qemu/ui-spice-core.so") and
+ os.path.exists("/usr/lib64/qemu/ui-opengl.so")):
+ return False
+ else:
+ if not (os.path.exists("/usr/lib/qemu/hw-usb-redirect.so") and
+ os.path.exists("/usr/lib/qemu/hw-display-qxl.so")):
+ return False
+ if self.conn.support.conn_spice_modular2():
+ if not (os.path.exists("/usr/lib/qemu/chardev-spice.so") and
+ os.path.exists("/usr/lib/qemu/ui-spice-core.so") and
+ os.path.exists("/usr/lib/qemu/ui-opengl.so")):
+ return False
return True
def _listen_need_port(self):
Index: virt-manager-3.1.0/virtinst/support.py
===================================================================
--- virt-manager-3.1.0.orig/virtinst/support.py
+++ virt-manager-3.1.0/virtinst/support.py
@@ -282,6 +282,8 @@ class SupportCache:
conn_disk_driver_name_qemu = _make(
hv_version={"qemu": 0, "xen": "4.2.0"},
hv_libvirt_version={"qemu": 0, "xen": "1.1.0"})
+ conn_spice_modular1 = _make(hv_version={"qemu": "5.1.0", "test": 0})
+ conn_spice_modular2 = _make(hv_version={"qemu": "5.2.0", "test": 0})
# Domain checks
domain_xml_inactive = _make(function="virDomain.XMLDesc", run_args=(),