diff mbox series

[bug#46560,2/2] scripts: system: Activate system when switching generations.

Message ID 20210216132235.15811-2-brice@waegenei.re
State Accepted
Headers show
Series Activate system when switching generations. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Brice Waegeneire Feb. 16, 2021, 1:22 p.m. UTC
Fixes #38884.

* guix/scripts/system.scm (switch-to-system-generation): Load the
activate script for that generation.
---
 guix/scripts/system.scm | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Ludovic Courtès March 1, 2021, 3:56 p.m. UTC | #1
Brice Waegeneire <brice@waegenei.re> skribis:

> Fixes #38884.

Nitpick: “Fixes <https://bugs.gnu.org/38884>.”

> * guix/scripts/system.scm (switch-to-system-generation): Load the
> activate script for that generation.

[...]

> +          (switch-to-generation* %system-profile number)
> +          (primitive-load activate))

I suppose you need to wrap catch 'system-error here and to keep going
upon ENOENT.

Could you send an updated patch?

Thanks!

Ludo’.
diff mbox series

Patch

diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 19b8c5163c..4c7af52ad5 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -8,6 +8,7 @@ 
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -363,11 +364,14 @@  connection to the store."
   "Switch the system profile to the generation specified by SPEC, and
 re-install bootloader with a configuration file that uses the specified system
 generation as its default entry.  STORE is an open connection to the store."
-  (let ((number (relative-generation-spec->number %system-profile spec)))
+  (let* ((number (relative-generation-spec->number %system-profile spec))
+         (generation (generation-file-name %system-profile number))
+         (activate (string-append generation "/activate")))
     (if number
         (begin
           (reinstall-bootloader store number)
-          (switch-to-generation* %system-profile number))
+          (switch-to-generation* %system-profile number)
+          (primitive-load activate))
         (leave (G_ "cannot switch to system generation '~a'~%") spec))))
 
 (define* (system-bootloader-name #:optional (system %system-profile))