qemu: Simplify QEMU binary search

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>
This commit is contained in:
Andrea Bolognani 2018-09-18 17:45:40 +02:00
parent ed5efee914
commit 3df264080e

View 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);