]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Simplify QEMU binary search
authorAndrea Bolognani <abologna@redhat.com>
Tue, 18 Sep 2018 15:45:40 +0000 (17:45 +0200)
committerAndrea Bolognani <abologna@redhat.com>
Fri, 21 Sep 2018 13:53:57 +0000 (15:53 +0200)
Now that we have reduced the number of sensible options down
to either the native QEMU binary or RHEL's qemu-kvm, we can
make virQEMUCapsInitGuest() a bit simpler.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
src/qemu/qemu_capabilities.c

index 0f8e31fd9c907d13cea53ef16abd54c51c9ff9df..38f9ca29ebd33c695b235826c569d081ace0a0a4 100644 (file)
@@ -746,7 +746,6 @@ virQEMUCapsInitGuest(virCapsPtr caps,
                      virArch hostarch,
                      virArch guestarch)
 {
-    size_t i;
     char *binary = NULL;
     virQEMUCapsPtr qemubinCaps = NULL;
     int ret = -1;
@@ -756,6 +755,13 @@ virQEMUCapsInitGuest(virCapsPtr caps,
      */
     binary = virQEMUCapsFindBinaryForArch(hostarch, guestarch);
 
+    /* RHEL doesn't follow the usual naming for QEMU binaries and ships
+     * a single binary named qemu-kvm outside of $PATH instead */
+    if (virQEMUCapsGuestIsNative(hostarch, guestarch) && !binary) {
+        if (VIR_STRDUP(binary, "/usr/libexec/qemu-kvm") < 0)
+            return -1;
+    }
+
     /* Ignore binary if extracting version info fails */
     if (binary) {
         if (!(qemubinCaps = virQEMUCapsCacheLookup(cache, binary))) {
@@ -764,27 +770,6 @@ virQEMUCapsInitGuest(virCapsPtr caps,
         }
     }
 
-    if (virQEMUCapsGuestIsNative(hostarch, guestarch) && !binary) {
-        const char *kvmbins[] = {
-            "/usr/libexec/qemu-kvm", /* RHEL */
-        };
-
-        for (i = 0; i < ARRAY_CARDINALITY(kvmbins); ++i) {
-            binary = virFindFileInPath(kvmbins[i]);
-
-            if (!binary)
-                continue;
-
-            if (!(qemubinCaps = virQEMUCapsCacheLookup(cache, binary))) {
-                virResetLastError();
-                VIR_FREE(binary);
-                continue;
-            }
-
-            break;
-        }
-    }
-
     ret = virQEMUCapsInitGuestFromBinary(caps,
                                          binary, qemubinCaps,
                                          guestarch);