diff --git a/0004-Fix-package-install-with-PackageKit-0.8.4.patch b/0004-Fix-package-install-with-PackageKit-0.8.4.patch new file mode 100644 index 0000000..5b2b4ca --- /dev/null +++ b/0004-Fix-package-install-with-PackageKit-0.8.4.patch @@ -0,0 +1,46 @@ +From 983e3b9fcf6d1410396e16bb0141e21939e69da7 Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Sun, 28 Oct 2012 20:09:32 -0400 +Subject: [PATCH] Fix package install with PackageKit 0.8.4 (cherry picked + from commit 35bab2cc98ee4aef87f8a908c4951f2717455c8c) + +--- + src/virtManager/packageutils.py | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +diff --git a/src/virtManager/packageutils.py b/src/virtManager/packageutils.py +index 6478360..736b98c 100644 +--- a/src/virtManager/packageutils.py ++++ b/src/virtManager/packageutils.py +@@ -135,7 +135,15 @@ def packagekit_install(package_list): + timeout=timeout) + + def packagekit_search(session, pk_control, package_name, packages): +- tid = pk_control.GetTid() ++ newstyle = False ++ try: ++ tid = pk_control.GetTid() ++ except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name() != "org.freedesktop.DBus.Error.UnknownMethod": ++ raise ++ newstyle = True ++ tid = pk_control.CreateTransaction() ++ + pk_trans = dbus.Interface( + session.get_object("org.freedesktop.PackageKit", tid), + "org.freedesktop.PackageKit.Transaction") +@@ -160,7 +168,10 @@ def packagekit_search(session, pk_control, package_name, packages): + pk_trans.connect_to_signal('ErrorCode', error) + pk_trans.connect_to_signal('Package', package) + try: +- pk_trans.SearchNames("installed", [package_name]) ++ searchtype = "installed" ++ if newstyle: ++ searchtype = 2 ** 2 ++ pk_trans.SearchNames(searchtype, [package_name]) + except dbus.exceptions.DBusException, e: + if e.get_dbus_name() != "org.freedesktop.DBus.Error.UnknownMethod": + raise +-- +1.7.12.1 + diff --git a/0005-Fix-detection-of-running-libvirtd-via-systemd.patch b/0005-Fix-detection-of-running-libvirtd-via-systemd.patch new file mode 100644 index 0000000..4d5ac5f --- /dev/null +++ b/0005-Fix-detection-of-running-libvirtd-via-systemd.patch @@ -0,0 +1,69 @@ +From b8d61f6602f82b6e90199d9ce430f9eebb1c894a Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Sun, 28 Oct 2012 20:18:51 -0400 +Subject: [PATCH] Fix detection of running libvirtd via systemd (cherry picked + from commit 2163ba3a3035ea8fccd5113d53d120801ba12040) + +--- + src/virtManager/engine.py | 6 ++++-- + src/virtManager/packageutils.py | 5 ++++- + 2 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/src/virtManager/engine.py b/src/virtManager/engine.py +index 337fc67..2ec455b 100644 +--- a/src/virtManager/engine.py ++++ b/src/virtManager/engine.py +@@ -178,8 +178,11 @@ class vmmEngine(vmmGObject): + manager.set_startup_error(msg) + return + ++ do_start = not did_install_libvirt + if did_install_libvirt: + didstart = packageutils.start_libvirtd() ++ do_start = didstart ++ + warnmsg = _( + "Libvirt was just installed, so the 'libvirtd' service will\n" + "will need to be started.\n" +@@ -189,8 +192,7 @@ class vmmEngine(vmmGObject): + if not didstart: + self.err.ok(_("Libvirt service must be started"), warnmsg) + +- self.connect_to_uri(tryuri, autoconnect=True, +- do_start=not did_install_libvirt) ++ self.connect_to_uri(tryuri, autoconnect=True, do_start=do_start) + + + def load_stored_uris(self): +diff --git a/src/virtManager/packageutils.py b/src/virtManager/packageutils.py +index 736b98c..63cf2b5 100644 +--- a/src/virtManager/packageutils.py ++++ b/src/virtManager/packageutils.py +@@ -217,7 +217,7 @@ def start_libvirtd(): + state = props.Get("org.freedesktop.systemd1.Unit", "ActiveState") + + logging.debug("libvirtd state=%s", state) +- if state == "Active": ++ if str(state).lower() == "active": + logging.debug("libvirtd already active, not starting") + return True + except: +@@ -226,12 +226,15 @@ def start_libvirtd(): + + # Connect to system-config-services and offer to start + try: ++ logging.debug("libvirtd not running, asking system-config-services " ++ "to start it") + scs = dbus.Interface(bus.get_object( + "org.fedoraproject.Config.Services", + "/org/fedoraproject/Config/Services/systemd1"), + "org.freedesktop.systemd1.Manager") + scs.StartUnit(unitname, "replace") + time.sleep(2) ++ logging.debug("Starting libvirtd appeared to succeed") + return True + except: + logging.exception("Failed to talk to system-config-services") +-- +1.7.12.1 + diff --git a/0006-domain-Fix-more-backtraces-from-PMSUSPEND-status.patch b/0006-domain-Fix-more-backtraces-from-PMSUSPEND-status.patch new file mode 100644 index 0000000..4720a36 --- /dev/null +++ b/0006-domain-Fix-more-backtraces-from-PMSUSPEND-status.patch @@ -0,0 +1,45 @@ +From f55c0cefba2a71d4e44003802ac4ca59db0542ad Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Mon, 29 Oct 2012 18:55:51 -0400 +Subject: [PATCH] domain: Fix more backtraces from PMSUSPEND status (cherry + picked from commit + 538420e03239da7870b5b051c043072109f68fda) + +--- + src/virtManager/domain.py | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/src/virtManager/domain.py b/src/virtManager/domain.py +index d536f77..56087b4 100644 +--- a/src/virtManager/domain.py ++++ b/src/virtManager/domain.py +@@ -1389,6 +1389,8 @@ class vmmDomain(vmmLibvirtObject): + elif (hasattr(libvirt, "VIR_DOMAIN_PMSUSPENDED") and + status == libvirt.VIR_DOMAIN_PMSUSPENDED): + return _("Suspended") ++ ++ logging.debug("Unknown status %d, returning 'Unknown'") + return _("Unknown") + + def _normalize_status(self, status): +@@ -1429,9 +1431,16 @@ class vmmDomain(vmmLibvirtObject): + libvirt.VIR_DOMAIN_SHUTDOWN: "state_shutoff", + libvirt.VIR_DOMAIN_SHUTOFF: "state_shutoff", + libvirt.VIR_DOMAIN_NOSTATE: "state_running", ++ # VIR_DOMAIN_PMSUSPENDED ++ 7: "state_paused", + } + +- return status_icons[self.status()] ++ status = self.status() ++ if status not in status_icons: ++ logging.debug("Unknown status %d, using NOSTATE") ++ status = libvirt.VIR_DOMAIN_NOSTATE ++ ++ return status_icons[status] + + def force_update_status(self): + """ +-- +1.7.12.1 + diff --git a/virt-manager.spec b/virt-manager.spec index b098708..cae3866 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -2,7 +2,7 @@ %define _package virt-manager %define _version 0.9.4 -%define _release 2 +%define _release 3 %define virtinst_version 0.600.3 %define qemu_user "qemu" @@ -47,6 +47,11 @@ Patch1: 0001-virt-manager-Fix-KVM_PACKAGES-substitution-variable.patch Patch2: 0002-domain-Handle-PMSUSPENDED-status.patch # Fix 'browse local' behavior when choosing directory (bz #855335) Patch3: 0003-browse_local-Fix-choosing-directory-of-F17.patch +# Fix first run packagekit interaction (bz 870851) +Patch4: 0004-Fix-package-install-with-PackageKit-0.8.4.patch +Patch5: 0005-Fix-detection-of-running-libvirtd-via-systemd.patch +# Fix another backtrace if guest is pmsuspended (bz 871237) +Patch6: 0006-domain-Fix-more-backtraces-from-PMSUSPEND-status.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch @@ -148,6 +153,9 @@ Common files used by the different Virtual Machine Manager interfaces. %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 %build %if %{qemu_user} @@ -270,6 +278,10 @@ update-desktop-database -q %{_datadir}/applications %endif %changelog +* Tue Oct 30 2012 Cole Robinson - 0.9.4-3 +- Fix first run packagekit interaction (bz #870851) +- Fix another backtrace if guest is pmsuspended (bz #871237) + * Wed Oct 24 2012 Cole Robinson - 0.9.4-2 - Fix KVM package install on app first run - Fix listing domain with 'suspended' state (bz #850954)