Hello community,

here is the log from the commit of package libvirt for openSUSE:Factory checked 
in at 2015-05-28 09:57:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libvirt (Old)
 and      /work/SRC/openSUSE:Factory/.libvirt.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libvirt"

Changes:
--------
--- /work/SRC/openSUSE:Factory/libvirt/libvirt.changes  2015-05-15 
07:44:45.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libvirt.new/libvirt.changes     2015-05-28 
09:57:23.000000000 +0200
@@ -1,0 +2,7 @@
+Wed May 20 08:29:00 UTC 2015 - dmacvi...@suse.de
+
+- qemu: fix regression defaulting to host arch
+  8910e063-arch-caps.patch
+  rhb#1219191
+
+-------------------------------------------------------------------

New:
----
  8910e063-arch-caps.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libvirt.spec ++++++
--- /var/tmp/diff_new_pack.RcDtBr/_old  2015-05-28 09:57:24.000000000 +0200
+++ /var/tmp/diff_new_pack.RcDtBr/_new  2015-05-28 09:57:24.000000000 +0200
@@ -445,6 +445,7 @@
 Source99:       baselibs.conf
 # Upstream patches
 Patch0:         c0d3f608-libxl-soundhw.patch
+Patch1:         8910e063-arch-caps.patch
 # Patches pending upstream review
 # Need to go upstream
 Patch150:       xen-pv-cdrom.patch
@@ -975,6 +976,7 @@
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1
 %patch150 -p1
 %patch151 -p1
 %patch152 -p1

++++++ 8910e063-arch-caps.patch ++++++
commit 8910e063dbafc09695b2100c80213be569abb7ef
Author: Cole Robinson <crobi...@redhat.com>
Date:   Wed May 6 18:32:05 2015 -0400

    caps: Fix regression defaulting to host arch
    
    My commit 747761a79 (v1.2.15 only) dropped this bit of logic when filling
    in a default arch in the XML:
    
    -    /* First try to find one matching host arch */
    -    for (i = 0; i < caps->nguests; i++) {
    -        if (caps->guests[i]->ostype == ostype) {
    -            for (j = 0; j < caps->guests[i]->arch.ndomains; j++) {
    -                if (caps->guests[i]->arch.domains[j]->type == domain &&
    -                    caps->guests[i]->arch.id == caps->host.arch)
    -                    return caps->guests[i]->arch.id;
    -            }
    -        }
    -    }
    
    That attempt to match host.arch is important, otherwise we end up
    defaulting to i686 on x86_64 host for KVM, which is not intended.
    Duplicate it in the centralized CapsLookup function.
    
    Additionally add some testcases that would have caught this.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1219191

Index: libvirt-1.2.15/src/conf/capabilities.c
===================================================================
--- libvirt-1.2.15.orig/src/conf/capabilities.c
+++ libvirt-1.2.15/src/conf/capabilities.c
@@ -607,25 +607,13 @@ virCapsDomainDataCompare(virCapsGuestPtr
     return true;
 }
 
-/**
- * virCapabilitiesDomainDataLookup:
- * @caps: capabilities to query
- * @ostype: guest operating system type, of enum VIR_DOMAIN_OSTYPE
- * @arch: Architecture to search for
- * @domaintype: domain type to search for, of enum VIR_DOMAIN_VIRT
- * @emulator: Emulator path to search for
- * @machinetype: Machine type to search for
- *
- * Search capabilities for the passed values, and if found return
- * virCapabilitiesDomainDataLookup filled in with the default values
- */
-virCapsDomainDataPtr
-virCapabilitiesDomainDataLookup(virCapsPtr caps,
-                                int ostype,
-                                virArch arch,
-                                int domaintype,
-                                const char *emulator,
-                                const char *machinetype)
+static virCapsDomainDataPtr
+virCapabilitiesDomainDataLookupInternal(virCapsPtr caps,
+                                        int ostype,
+                                        virArch arch,
+                                        int domaintype,
+                                        const char *emulator,
+                                        const char *machinetype)
 {
     virCapsGuestPtr foundguest = NULL;
     virCapsGuestDomainPtr founddomain = NULL;
@@ -730,6 +718,43 @@ virCapabilitiesDomainDataLookup(virCapsP
     return ret;
 }
 
+/**
+ * virCapabilitiesDomainDataLookup:
+ * @caps: capabilities to query
+ * @ostype: guest operating system type, of enum VIR_DOMAIN_OSTYPE
+ * @arch: Architecture to search for
+ * @domaintype: domain type to search for, of enum VIR_DOMAIN_VIRT
+ * @emulator: Emulator path to search for
+ * @machinetype: Machine type to search for
+ *
+ * Search capabilities for the passed values, and if found return
+ * virCapabilitiesDomainDataLookup filled in with the default values
+ */
+virCapsDomainDataPtr
+virCapabilitiesDomainDataLookup(virCapsPtr caps,
+                                int ostype,
+                                virArch arch,
+                                int domaintype,
+                                const char *emulator,
+                                const char *machinetype)
+{
+    virCapsDomainDataPtr ret;
+
+    if (arch == VIR_ARCH_NONE) {
+        /* Prefer host arch if its available */
+        ret = virCapabilitiesDomainDataLookupInternal(caps, ostype,
+                                                      caps->host.arch,
+                                                      domaintype,
+                                                      emulator, machinetype);
+        if (ret)
+            return ret;
+    }
+
+    return virCapabilitiesDomainDataLookupInternal(caps, ostype,
+                                                   arch, domaintype,
+                                                   emulator, machinetype);
+}
+
 static int
 virCapabilitiesFormatNUMATopology(virBufferPtr buf,
                                   size_t ncells,
Index: 
libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.args
===================================================================
--- /dev/null
+++ 
libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.args
@@ -0,0 +1,4 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
+/usr/bin/kvm -S -machine pc,accel=kvm -m 4096 -smp 4 -nographic \
+-monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -usb -net none \
+-serial none -parallel none
Index: 
libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.xml
===================================================================
--- /dev/null
+++ libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.xml
@@ -0,0 +1,11 @@
+<domain type='kvm'>
+  <name>kvm</name>
+  <uuid>d091ea82-29e6-2e34-3005-f02617b36e87</uuid>
+  <memory unit='KiB'>4194304</memory>
+  <currentMemory unit='KiB'>4194304</currentMemory>
+  <vcpu placement='static'>4</vcpu>
+  <os>
+    <type>hvm</type>
+    <boot dev='hd'/>
+  </os>
+</domain>
Index: 
libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-qemu-host-arch.args
===================================================================
--- /dev/null
+++ 
libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-qemu-host-arch.args
@@ -0,0 +1,4 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-system-x86_64 -S -machine pc-0.11,accel=tcg -m 4096 -smp 4 \
+-nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c \
+-usb -net none -serial none -parallel none
Index: 
libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-qemu-host-arch.xml
===================================================================
--- /dev/null
+++ 
libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-qemu-host-arch.xml
@@ -0,0 +1,11 @@
+<domain type='qemu'>
+  <name>qemu-host</name>
+  <uuid>d091ea82-29e6-2e34-3005-f02617b36e87</uuid>
+  <memory unit='KiB'>4194304</memory>
+  <currentMemory unit='KiB'>4194304</currentMemory>
+  <vcpu placement='static'>4</vcpu>
+  <os>
+    <type>hvm</type>
+    <boot dev='hd'/>
+  </os>
+</domain>
Index: libvirt-1.2.15/tests/qemuxml2argvtest.c
===================================================================
--- libvirt-1.2.15.orig/tests/qemuxml2argvtest.c
+++ libvirt-1.2.15/tests/qemuxml2argvtest.c
@@ -595,6 +595,8 @@ mymain(void)
     DO_TEST("machine-usb-opt", QEMU_CAPS_MACHINE_OPT,
             QEMU_CAPS_MACHINE_USB_OPT);
     DO_TEST("kvm", QEMU_CAPS_MACHINE_OPT);
+    DO_TEST("default-kvm-host-arch", QEMU_CAPS_MACHINE_OPT);
+    DO_TEST("default-qemu-host-arch", QEMU_CAPS_MACHINE_OPT);
     DO_TEST("boot-cdrom", NONE);
     DO_TEST("boot-network", NONE);
     DO_TEST("boot-floppy", NONE);
Index: 
libvirt-1.2.15/tests/qemuxml2xmloutdata/qemuxml2xmlout-default-kvm-host-arch.xml
===================================================================
--- /dev/null
+++ 
libvirt-1.2.15/tests/qemuxml2xmloutdata/qemuxml2xmlout-default-kvm-host-arch.xml
@@ -0,0 +1,21 @@
+<domain type='kvm'>
+  <name>kvm</name>
+  <uuid>d091ea82-29e6-2e34-3005-f02617b36e87</uuid>
+  <memory unit='KiB'>4194304</memory>
+  <currentMemory unit='KiB'>4194304</currentMemory>
+  <vcpu placement='static'>4</vcpu>
+  <os>
+    <type arch='x86_64' machine='pc'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/kvm</emulator>
+    <controller type='usb' index='0'/>
+    <controller type='pci' index='0' model='pci-root'/>
+    <memballoon model='virtio'/>
+  </devices>
+</domain>
Index: 
libvirt-1.2.15/tests/qemuxml2xmloutdata/qemuxml2xmlout-default-qemu-host-arch.xml
===================================================================
--- /dev/null
+++ 
libvirt-1.2.15/tests/qemuxml2xmloutdata/qemuxml2xmlout-default-qemu-host-arch.xml
@@ -0,0 +1,21 @@
+<domain type='qemu'>
+  <name>qemu-host</name>
+  <uuid>d091ea82-29e6-2e34-3005-f02617b36e87</uuid>
+  <memory unit='KiB'>4194304</memory>
+  <currentMemory unit='KiB'>4194304</currentMemory>
+  <vcpu placement='static'>4</vcpu>
+  <os>
+    <type arch='x86_64' machine='pc-0.11'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu-system-x86_64</emulator>
+    <controller type='usb' index='0'/>
+    <controller type='pci' index='0' model='pci-root'/>
+    <memballoon model='virtio'/>
+  </devices>
+</domain>
Index: libvirt-1.2.15/tests/qemuxml2xmltest.c
===================================================================
--- libvirt-1.2.15.orig/tests/qemuxml2xmltest.c
+++ libvirt-1.2.15/tests/qemuxml2xmltest.c
@@ -346,6 +346,8 @@ mymain(void)
     DO_TEST("minimal");
     DO_TEST("machine-core-on");
     DO_TEST("machine-core-off");
+    DO_TEST_DIFFERENT("default-kvm-host-arch");
+    DO_TEST_DIFFERENT("default-qemu-host-arch");
     DO_TEST("boot-cdrom");
     DO_TEST("boot-network");
     DO_TEST("boot-floppy");
Index: libvirt-1.2.15/tests/testutilsqemu.c
===================================================================
--- libvirt-1.2.15.orig/tests/testutilsqemu.c
+++ libvirt-1.2.15/tests/testutilsqemu.c
@@ -354,6 +354,18 @@ virCapsPtr testQemuCapsInit(void)
                                       NULL) == NULL)
         goto cleanup;
 
+    if ((machines = testQemuAllocMachines(&nmachines)) == NULL)
+        goto cleanup;
+
+    if (virCapabilitiesAddGuestDomain(guest,
+                                      VIR_DOMAIN_VIRT_KVM,
+                                      "/usr/bin/qemu-kvm",
+                                      NULL,
+                                      nmachines,
+                                      machines) == NULL)
+        goto cleanup;
+    machines = NULL;
+
     if ((machines = testQemuAllocNewerMachines(&nmachines)) == NULL)
         goto cleanup;
 


Reply via email to