[gnome-boxes] Enable USB redirection

Zeeshan Ali zeenix at fedoraproject.org
Wed Oct 24 12:50:34 UTC 2012


commit 3655a3bade8317b4f951c935ae61d7635fc0b807
Author: Zeeshan Ali (Khattak) <zeeshanak at gnome.org>
Date:   Tue Oct 16 17:32:50 2012 +0300

    Enable USB redirection
    
    We can't apply this patch in upstream Boxes yet as doing so breaks
    migration/saving of domains in vanila upstream Qemu. Since the issue has
    been resolved in Fedora's Qemu, we can enable this very popular and
    useful feature of USB redirection at least in Fedora.

 ...-Add-USB-devices-to-newly-created-domains.patch |   63 ++++++++++++++++++++
 gnome-boxes.spec                                   |   10 +++-
 2 files changed, 72 insertions(+), 1 deletions(-)
---
diff --git a/0001-Add-USB-devices-to-newly-created-domains.patch b/0001-Add-USB-devices-to-newly-created-domains.patch
new file mode 100644
index 0000000..2320400
--- /dev/null
+++ b/0001-Add-USB-devices-to-newly-created-domains.patch
@@ -0,0 +1,63 @@
+From 28ab0502bb6ab306d5a998ab1e95133ac4c5090d Mon Sep 17 00:00:00 2001
+From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>
+Date: Fri, 16 Mar 2012 17:19:13 +0200
+Subject: [PATCH] Add USB devices to newly created domains
+
+co-author: Christophe Fergeau <cfergeau at redhat.com>
+
+https://bugzilla.gnome.org/show_bug.cgi?id=672268
+---
+ src/vm-configurator.vala | 30 ++++++++++++++++++++++++++++++
+ 1 file changed, 30 insertions(+)
+
+diff --git a/src/vm-configurator.vala b/src/vm-configurator.vala
+index a83a2c4..eda29ca 100644
+--- a/src/vm-configurator.vala
++++ b/src/vm-configurator.vala
+@@ -74,6 +74,23 @@ public static Domain create_domain_config (InstallerMedia install_media, string
+         channel.set_source (vmc);
+         domain.add_device (channel);
+ 
++        // USB redirection channel
++        var usb_redir = new DomainRedirdev ();
++        usb_redir.set_bus (DomainRedirdevBus.USB);
++        vmc = new DomainChardevSourceSpiceVmc ();
++        usb_redir.set_source (vmc);
++        domain.add_device (usb_redir);
++
++        // USB controllers
++        var master_controller = create_usb_controller (DomainControllerUsbModel.ICH9_EHCI1);
++        domain.add_device (master_controller);
++        var controller = create_usb_controller (DomainControllerUsbModel.ICH9_UHCI1, master_controller, 0, 0);
++        domain.add_device (controller);
++        controller = create_usb_controller (DomainControllerUsbModel.ICH9_UHCI2, master_controller, 0, 2);
++        domain.add_device (controller);
++        controller = create_usb_controller (DomainControllerUsbModel.ICH9_UHCI3, master_controller, 0, 4);
++        domain.add_device (controller);
++
+         set_video_config (domain, install_media);
+         set_sound_config (domain, install_media);
+         set_tablet_config (domain, install_media);
+@@ -292,6 +309,19 @@ private static StoragePermissions get_default_permissions () {
+         return null;
+     }
+ 
++    private static DomainControllerUsb create_usb_controller (DomainControllerUsbModel model,
++                                                              DomainControllerUsb?     master = null,
++                                                              uint                     index = 0,
++                                                              uint                     start_port = 0) {
++        var controller = new DomainControllerUsb ();
++        controller.set_model (model);
++        controller.set_index (index);
++        if (master != null)
++            controller.set_master (master, start_port);
++
++        return controller;
++    }
++
+     private static CapabilitiesGuest get_best_guest_caps (Capabilities caps, InstallerMedia install_media)
+                                                           throws VMConfiguratorError {
+         var guests_caps = caps.get_guests ();
+-- 
+1.7.12.1
+
diff --git a/gnome-boxes.spec b/gnome-boxes.spec
index cc8dffe..e70073b 100644
--- a/gnome-boxes.spec
+++ b/gnome-boxes.spec
@@ -3,7 +3,7 @@
 
 Name:		gnome-boxes
 Version:	3.6.1.1
-Release:	1%{?dist}
+Release:	2%{?dist}
 Summary:	A simple GNOME 3 application to access remote or virtual systems
 
 Group:		Applications/Emulators
@@ -11,6 +11,10 @@ License:	LGPLv2+
 URL:		https://live.gnome.org/Boxes
 Source0:	http://download.gnome.org/sources/%{name}/%{url_ver}/%{name}-%{version}.tar.xz
 
+# We can't apply this upstream as USB redirection still breaks migration/saving
+# of domains in upstream Qemu.
+Patch01:	0001-Add-USB-devices-to-newly-created-domains.patch
+
 BuildRequires:	intltool
 BuildRequires:	vala-devel >= 0.14.0
 BuildRequires:	vala-tools >= 0.14.0
@@ -53,6 +57,7 @@ gnome-boxes lets you easily create, setup, access, and use:
 
 %prep
 %setup -q
+%patch01 -p1
 
 %build
 #fedora-legal and the fedora board permit logos to be enabled
@@ -100,6 +105,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
 %{_datadir}/gnome-shell/search-providers/gnome-boxes-search-provider.ini
 
 %changelog
+* Mon Oct 16 2012 Zeeshan Ali <zeenix at redhat.com> - 3.6.1.1-2
+- Enable USB redirection in new domains.
+
 * Mon Oct 16 2012 Zeeshan Ali <zeenix at redhat.com> - 3.6.1.1-1
 - Update to 3.6.1.1
 


More information about the scm-commits mailing list