Subject: Re: bug#25100: 'guix system reconfigure' fails when new generation already exists
From: [email-masked] (Ludovic Courtès)
To: Chris Marusich <[email-masked]>
Cc: [email-masked]
Date: Mon, 05 Dec 2016 21:35:40 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi!

Chris Marusich <[email-masked]> skribis:

> I've noticed that, in GuixSD, if one rolls back the system with 'guix
> system roll-back' or switches to a previous generation with 'guix system
> switch-generation', and then one tries to run 'guix system reconfigure',
> the operation fails because the symlink for the new generation already
> exists.  I expected the operation to succeed and overwrite the existing
> generation, since that mirrors the behavior of 'guix package'.
>
> Specifically, if the current generation is N and generation N+1 exists,
> then running 'guix system reconfigure' should overwrite generation N+1
> with the new system.  Currently, it fails to create the symlink.  I've
> attached a patch which modifies the behavior to be what I expected.

Indeed.

> From 526f78a38dabeb12196a21cebe174f073c217c12 Mon Sep 17 00:00:00 2001
> From: Chris Marusich <[email-masked]>
> Date: Fri, 2 Dec 2016 01:52:04 -0800
> Subject: [PATCH] system: If the new system generation already exists,
>  overwrite it.
>
> * guix/scripts/system.scm (switch-to-system): Create the symlink to the new
>   system generation using the procedure "switch-symlink" instead of "symlink".
>   That way, if the link already exists, we update it instead of failing.
>
> * doc/guix.texi (Using the Configuration System, Invoking guix system):
>   Document the behavior.

[...]

> +overwritten.  This behavior mirrors that of @command{guix package}
> +@pxref{Invoking guix package}.

Note: @pxref is for parenthetical expressions (info "(texinfo) pxref").

I adjusted this and the commit log and committed.

Thank you!

Ludo’.