GNU bug report logs - #73494
[PATCH 0/2] tmpfs /run.

Previous Next

Package: guix-patches;

Reported by: Hilton Chain <hako <at> ultrarare.space>

Date: Thu, 26 Sep 2024 07:03:02 UTC

Severity: normal

Tags: patch

Full log


View this message in rfc822 format

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 73494 <at> debbugs.gnu.org
Cc: Hilton Chain <hako <at> ultrarare.space>, Maxim Cournoyer <maxim.cournoyer <at> gmail.com>, Hilton Chain <hako <at> ultrarare.space>, Maxim Cournoyer <maxim.cournoyer <at> gmail.com>, Ludovic Courtès <ludo <at> gnu.org>, Vagrant Cascadian <vagrant <at> debian.org>, Z572 <zhengjunjie <at> iscas.ac.cn>
Subject: [bug#73494] [PATCH v4 1/3] services: activation: Continue on exceptions.
Date: Tue, 29 Apr 2025 16:17:43 +0900
From: Hilton Chain <hako <at> ultrarare.space>

Use ‘invoke’ for backtraces and avoid changing environment.

* gnu/services.scm (activation-script): Execute activation scripts in
‘invoke’.
Warn about failed activation scripts.

Change-Id: I89be31433fbb46d0c4a9dc6115ab167910840b6f
Signed-off-by: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
---
 gnu/services.scm | 32 +++++++++++++++++++++++++++-----
 1 file changed, 27 insertions(+), 5 deletions(-)

diff --git a/gnu/services.scm b/gnu/services.scm
index 8a4002e0724..ed17981ffdd 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -692,15 +692,28 @@ (define* (activation-service->script service)
 (define (activation-script gexps)
   "Return the system's activation script, which evaluates GEXPS."
   (define actions
-    (map (cut program-file "activate-service.scm" <>) gexps))
+    (map (lambda (action)
+           (program-file "activate-service.scm"
+                         (with-imported-modules (source-module-closure
+                                                 '((gnu build activation)
+                                                   (guix build utils)))
+                           #~(begin
+                               (use-modules (gnu build activation)
+                                            (guix build utils))
+                               #$action))))
+         gexps))
 
   (program-file "activate.scm"
                 (with-imported-modules (source-module-closure
                                         '((gnu build activation)
-                                          (guix build utils)))
+                                          (guix build utils)
+                                          (guix diagnostics)
+                                          (guix i18n)))
                   #~(begin
                       (use-modules (gnu build activation)
-                                   (guix build utils))
+                                   (guix build utils)
+                                   (guix diagnostics)
+                                   (guix i18n))
 
                       (mkdir-p "/var/run")
                       ;; Make sure the user accounting database exists.  If it
@@ -719,8 +732,17 @@ (define (activation-script gexps)
                       (activate-current-system)
 
                       ;; Run the services' activation snippets.
-                      ;; TODO: Use 'load-compiled'.
-                      (for-each primitive-load '#$actions)))))
+                      (for-each (lambda (action)
+                                  ;; Don't block activation process when one
+                                  ;; action fails.
+                                  (catch #t
+                                    (lambda ()
+                                      (invoke action))
+                                    (lambda _
+                                      (warning
+                                       (G_ "failed to activate '~a'.~%")
+                                       action))))
+                                '#$actions)))))
 
 (define (gexps->activation-gexp gexps)
   "Return a gexp that runs the activation script containing GEXPS."

base-commit: 2b4680c6c17bd6470f78a1f39d2f7af8b05e279f
-- 
2.49.0





This bug report was last modified 34 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.