Subject: Re: bug#54831: guix home reconfigure fails with“rmdir: No such file or directory”
From: Ludovic Courtès <[email-masked]>
To: Brian Cully <[email-masked]>, Madhavan Krishnan <[email-masked]>, Christopher Rodriguez <[email-masked]>
Cc: [email-masked]
Date: Mon, 11 Apr 2022 22:46:56 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi all,

Brian Cully <[email-masked]> skribis:

> For the last few days, attempting to issue a home reconfigure fails:
>
> ---[snip]---
> $ guix home reconfigure ./guix-home/config-new.scm
> substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
> substitute: updating substitutes from 'https://bordeaux.guix.gnu.org'... 100.0%
> The following derivations will be built:
>   /gnu/store/rbnri9gpvh98qagyk7ws4y5xdvz4skg7-home.drv
>   /gnu/store/hg5whdfsq2ldibfsikhbwppr9pms5vc8-provenance.drv
>   /gnu/store/rsil5s5fs14y2jvysbiv7vi2f0i3gnw2-activate.drv
>   /gnu/store/j85krrfbnc7x6s5wdn0wnp8ikah9gl46-update-symlinks.drv
>
> building /gnu/store/hg5whdfsq2ldibfsikhbwppr9pms5vc8-provenance.drv...
> building /gnu/store/j85krrfbnc7x6s5wdn0wnp8ikah9gl46-update-symlinks.drv...
> building /gnu/store/rsil5s5fs14y2jvysbiv7vi2f0i3gnw2-activate.drv...
> building /gnu/store/rbnri9gpvh98qagyk7ws4y5xdvz4skg7-home.drv...
> Cleaning up symlinks from previous home at /gnu/store/zmp2brsdr0nvrhpbk4kqqc6y8jx90kb1-home.
>
> guix home: error: rmdir: No such file or directory
> ---[snip]---

Christopher Rodriguez <[email-masked]> skribis:

> Seems like the issue is during the deployment, as Madhavan
> said. Specifically, the error message in that form only appears in
> `gnu/home/services/symlink-manager.scm', in the function
> `cleanup-symlinks'.
>
> It seems that, right now, the issue is that `ENOTEMPTY' and `ENOTDIR'
> are tested for and handled, but `ENOENT' is not. Ideally, this should be
> handled and tell the user /which/ file or directory is missing, not halt
> the entire process. And, since we are testing for a missing file (and
> thus have no chance of overwriting a user's data), it would probably
> make the most sense to just create the file that is missing in the next
> step, without stopping at all.
>
> I'll throw together a patch real quick to test with. I could be very off
> base, but I think this should fix this issue.

You were right.

This is fixed by commit 435e1cef0025fbe6cbb71b472218e8d132d1681c, pushed
yesterday.  The patch had been submitted as part of
<https://issues.guix.gnu.org/52808> but had not been applied.  Apologies
for the breakage.

Thanks,
Ludo’.