diff options
author | Ludovic Courtès <ludo@gnu.org> | 2022-01-31 23:29:37 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-02-02 18:12:22 +0100 |
commit | 9679123ce083c69cdfd1505d95a4066d41280394 (patch) | |
tree | c163a7ca6978fc2da86801cc0b12e158b3874561 | |
parent | 62e3ba78afb8fc4e2b32cb55e18a7d6dcbb26bcb (diff) |
guix system: 'describe' shows the running system, not the current one.
* 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.
-rw-r--r-- | doc/guix.texi | 14 | ||||
-rw-r--r-- | guix/profiles.scm | 13 | ||||
-rw-r--r-- | guix/scripts/system.scm | 4 |
3 files changed, 24 insertions, 7 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index b10f0d085b..ceec0d0cf5 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -35811,9 +35811,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 @@ paths." (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 @@ argument list and OPTS is the option alist." (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 |