Subject: Re: bug#47541: libvirt does not work

From: Pierre Langlois <[email-masked]>
Date: Thu, 01 Apr 2021 23:05:19 +0100

Hello!

qblade via Bug reports for GNU Guix writes:

> after this commit, the `virsh` does not work corrent:
>
> ```
> commit 383b02a370252c08eb1d43ac94d659c1d3993a35
> Author: Pierre Langlois <[email-masked]>
> Date:   Sat Mar 20 21:31:22 2021 +0000
>
>     gnu: libvirt: Update to 7.1.0.
>
>     * gnu/packages/virtualization.scm (libvirt): Update to 7.1.0.
>     [source]: Remove libvirt-create-machine-cgroup.patch, add
>     libvirt-do-not-create-var-dirs.patch.
>     [build-system]: Switch to meson-build-system.
>     [arguments]: Use meson-0.55.  Adapt #:configure-flags for meson, there is no
>     need for --docdir anymore.  Remove fix-BOURNE_SHELL-definition phase.  Add
>     fix-sysconfdir-and-localstatedir phase.  Adapt disable-broken-tests to meson.
>     [native-inputs]: Add python-docutils and rpcsvc-proto.
>     * gnu/packages/patches/libvirt-create-machine-cgroup.patch: Delete.
>     * gnu/packages/patches/libvirt-do-not-create-var-dirs.patch: New patch.
>     * gnu/local.mk (dist_patch_DATA): Add new patch, remove the other.
>
>     Signed-off-by: Ludovic Courtès <[email-masked]>
>
> ```

Ooh no! Sorry for the breakage!

>
> Command to reproduce wrong:
> ```
> # This is wrong:
> # After commit
> luhux@thinkpad-x230 ~ [date: Thu 01 Apr 2021 09:16:37 PM HKT]
> $ GUIX_BUILD_OPTIONS="" guix time-machine --commit=383b02a370252c08eb1d43ac94d659c1d3993a35 -c 8 -M 8 -- environment --ad-hoc libvirt -- virsh connect
>  qemu:///system
> error: failed to connect to the hypervisor
> error: Failed to connect socket to 'var/run/libvirt/libvirt-sock': No such file or directory
>
>
> ```
>
> It uses the wrong path to connect to libvirtd of the current system.

I see, I tried to cover all cases where libvirt would not use the
correct /var and /etc but clearly missed some :-/.

>
> Command to reproduce corrent:
> ```
> # This is corrent:
> # Before commit
>
>
> luhux@thinkpad-x230 ~ [date: Thu 01 Apr 2021 09:16:32 PM HKT]
> $ GUIX_BUILD_OPTIONS="" guix time-machine --commit=c536f0b217714917988d2f412999d978c2f2f495 -c 8 -M 8 -- environment --ad-hoc libvirt -- virsh connect qemu:///system
> error: failed to connect to the hypervisor
> error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory
> ```
>
> I use strace to create verbose log:
>
>
> ```
> luhux@thinkpad-x230 ~ [date: Thu 01 Apr 2021 09:22:18 PM HKT]
> $ GUIX_BUILD_OPTIONS="" guix time-machine --commit=383b02a370252c08eb1d43ac94d659c1d3993a35 -c 8 -M 8 -- environment --ad-hoc libvirt strace -- strace -o strace.log -- virsh connect qemu:///system
> error: failed to connect to the hypervisor
> error: Failed to connect socket to 'var/run/libvirt/libvirt-sock': No such file or directory
>
>
> ```
>
> strace shows that it did use the wrong path:
>
> ```
>   1056  access("var/run/libvirt/virtqemud-sock", F_OK) = -1 ENOENT (No such file or directory)
>   1057  access("var/run/libvirt/libvirt-sock", F_OK) = -1 ENOENT (No such file or directory)
> ```
>
> full strace log is in the attachment
>  | | |
>  V V V
>
>
> My guess is that the patch in the commit caused this problem, but I have no ability to fix it.
> Please fix it

I'll see if I can look into it at the weekend, although I'm not sure
I'll be able to get to it, so in the meantime we should probably just
revert the updates. Thanks a lot for investigating though, I think we
ought to write a system test that uses virsh to connect if that's
possible.

All that being said, I just noticed somebody had already posted an
alternative patch to do the update before I did, maybe that one is
correct! https://issues.guix.gnu.org/46623

Anyways, I'll revert the patches tomorrow unless there are any
objections!

Sorry again,

Pierre