Subject: bug#31365: libvirt/virt-manager: Embeds full path to qemu-system in saved .xml files

From: Vagrant Cascadian <[email-masked]>
Date: Fri, 04 May 2018 17:01:03 -0700

When i create a new libvirt instance with virt-manager, it embeds the
full path to the qemu binary used at the time. For the machine named
"networkboot":

  # grep qemu-system /etc/libvirt/qemu/networkboot.xml
  <emulator>/gnu/store/0rzb7rjri2kb258j58asndw2pnp0xv9p-qemu-2.11.1/bin/qemu-system-x86_64:</emulator>

If I later run "guix gc" and it happens to remove this particular qemu
version, the system no longer runs, of course:

  # virsh start networkboot
  error: Failed to start domain networkboot
  error: Cannot check QEMU binary
      /gnu/store/0rzb7rjri2kb258j58asndw2pnp0xv9p-qemu-2.11.1/bin/qemu-system-x86_64:
      No such file or directory

It also means each virtual machine may be running on an older version of
qemu, for better or worse.

Manaully replacing the emulator entry in the .xml file with
/run/current-system/profie/bin/qemu-system-x86_64 works around the
issue, and might be the easiest fix.

It wouldn't take advantage of a qemu install done in the user's
profile. I'm not sure if libvirtd can be run as a user-installed
profile, so maybe it has to use the system path anyways. I believe
libvirtd is normally run as it's own user, with it's own PATH.

live well,
  vagrant