all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#53672] [PATCH] guix system: 'describe' shows the running system, not the current one.
@ 2022-01-31 22:36 Ludovic Courtès
  2022-02-01  9:54 ` 宋文武
  0 siblings, 1 reply; 3+ messages in thread
From: Ludovic Courtès @ 2022-01-31 22:36 UTC (permalink / raw)
  To: 53672; +Cc: Ludovic Courtès

* guix/profiles.scm (generation-number): Add optional 'base-profile'
parameter and use it.
* guix/scripts/system.scm (process-command): Add "/run/current-system"
as first argument to 'generation-number'.
* doc/guix.texi (Invoking guix system): Clarify that 'guix system
describe' shows the running system.
---
 doc/guix.texi           | 14 +++++++++++++-
 guix/profiles.scm       | 13 +++++++++----
 guix/scripts/system.scm |  4 ++--
 3 files changed, 24 insertions(+), 7 deletions(-)

Hello!

Having reconfigured my system, generation N was “current”.  I booted
into generation N-1 and noticed that ‘guix system describe’ would
still display generation N—the “current” generation, but not the one
I’m actually running.

I think it’s counter-intuitive so this patch changes that so that
‘guix system describe’ shows the “running” generation—which, in this
case, is N-1.

Objections? Thoughts?

Ludo’.

diff --git a/doc/guix.texi b/doc/guix.texi
index 94f8e5e481..8f5312217f 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -35724,9 +35724,21 @@ bootloader boot menu:
 @table @code
 
 @item describe
-Describe the current system generation: its file name, the kernel and
+Describe the running system generation: its file name, the kernel and
 bootloader used, etc., as well as provenance information when available.
 
+@quotation Note
+The @emph{running} system generation---referred to by
+@file{/run/current-system}---is not necessarily the @emph{current}
+system generation---referred to by @file{/var/guix/profiles/system}: it
+differs when, for instance, you chose from the bootloader menu to boot
+an older generation.
+
+It can also differ from the @emph{booted} system generation---referred
+to by @file{/run/booted-system}---for instance because you reconfigured
+the system in the meantime.
+@end quotation
+
 @item list-generations
 List a summary of each generation of the operating system available on
 disk, in a human-readable way.  This is similar to the
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 1d354ecb78..96be421727 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014, 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
@@ -2037,9 +2037,14 @@ (define (profile-regexp profile)
   (make-regexp (string-append "^" (regexp-quote (basename profile))
                               "-([0-9]+)")))
 
-(define (generation-number profile)
-  "Return PROFILE's number or 0.  An absolute file name must be used."
-  (or (and=> (false-if-exception (regexp-exec (profile-regexp profile)
+(define* (generation-number profile
+                            #:optional (base-profile profile))
+  "Return PROFILE's number or 0.  An absolute file name must be used.
+
+Optionally, if BASE-PROFILE is provided, use it instead of PROFILE to
+construct the regexp matching generations.  This is useful in special cases
+like: (generation-number \"/run/current-system\" %system-profile)."
+  (or (and=> (false-if-exception (regexp-exec (profile-regexp base-profile)
                                               (basename (readlink profile))))
              (compose string->number (cut match:substring <> 1)))
       0))
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 414e931c8a..430815902d 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016, 2017, 2018 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -1328,7 +1328,7 @@ (define-syntax-rule (with-store* store exp ...)
                       (x (leave (G_ "wrong number of arguments~%"))))))
        (list-generations pattern)))
     ((describe)
-     (match (generation-number %system-profile)
+     (match (generation-number "/run/current-system" %system-profile)
        (0
         (leave (G_ "no system generation, nothing to describe~%")))
        (generation

base-commit: 27c1d58d901dcf48929bcb6f76d861fc21575dbf
-- 
2.34.0





^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [bug#53672] [PATCH] guix system: 'describe' shows the running system, not the current one.
  2022-01-31 22:36 [bug#53672] [PATCH] guix system: 'describe' shows the running system, not the current one Ludovic Courtès
@ 2022-02-01  9:54 ` 宋文武
  2022-02-02 17:13   ` bug#53672: " Ludovic Courtès
  0 siblings, 1 reply; 3+ messages in thread
From: 宋文武 @ 2022-02-01  9:54 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 53672

Ludovic Courtès <ludo@gnu.org> writes:

> * guix/profiles.scm (generation-number): Add optional 'base-profile'
> parameter and use it.
> * guix/scripts/system.scm (process-command): Add "/run/current-system"
> as first argument to 'generation-number'.
> * doc/guix.texi (Invoking guix system): Clarify that 'guix system
> describe' shows the running system.
> ---
>  doc/guix.texi           | 14 +++++++++++++-
>  guix/profiles.scm       | 13 +++++++++----
>  guix/scripts/system.scm |  4 ++--
>  3 files changed, 24 insertions(+), 7 deletions(-)
>
> Hello!
>
> Having reconfigured my system, generation N was “current”.  I booted
> into generation N-1 and noticed that ‘guix system describe’ would
> still display generation N—the “current” generation, but not the one
> I’m actually running.
>
> I think it’s counter-intuitive so this patch changes that so that
> ‘guix system describe’ shows the “running” generation—which, in this
> case, is N-1.
>
> Objections? Thoughts?

Sound good to me!  Well, I think "current" and "running" are the same
thing, I'd call the 'profiles/system' one "latest", so my understand is:

1. /run/booted-system: the system generation booted by bootloader.

2. /run/current-system: the system generation current running, same as
   booted until we do a system 'reconfigure' or 'roll-back'.

3. /var/guix/profiles/system: always point to the latest system-*-link,
   the default one in the bootloader, changed by a system 'reconfigure'
   or 'roll-back'.

Please correct me if it's wrong, thank you!




^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#53672: [PATCH] guix system: 'describe' shows the running system, not the current one.
  2022-02-01  9:54 ` 宋文武
@ 2022-02-02 17:13   ` Ludovic Courtès
  0 siblings, 0 replies; 3+ messages in thread
From: Ludovic Courtès @ 2022-02-02 17:13 UTC (permalink / raw)
  To: 宋文武; +Cc: 53672-done

Hello!

宋文武 <iyzsong@outlook.com> skribis:

> Sound good to me!  Well, I think "current" and "running" are the same
> thing, I'd call the 'profiles/system' one "latest", so my understand is:
>
> 1. /run/booted-system: the system generation booted by bootloader.
>
> 2. /run/current-system: the system generation current running, same as
>    booted until we do a system 'reconfigure' or 'roll-back'.
>
> 3. /var/guix/profiles/system: always point to the latest system-*-link,
>    the default one in the bootloader, changed by a system 'reconfigure'
>    or 'roll-back'.
>
> Please correct me if it's wrong, thank you!

You’re right, except for #3: if you do ‘guix system roll-back’ and
reboot, then /var/guix/profiles/system points to a generation that’s not
the latest system-*-link but that is the currently running one.

It sounds super confusing but it’s quite intuitive I think (I hope?).

Applied now, thanks for taking a look!

Ludo’.




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-02-02 18:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-31 22:36 [bug#53672] [PATCH] guix system: 'describe' shows the running system, not the current one Ludovic Courtès
2022-02-01  9:54 ` 宋文武
2022-02-02 17:13   ` bug#53672: " Ludovic Courtès

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.