aboutsummaryrefslogtreecommitdiff
path: root/gnu/services
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2024-03-20 18:48:38 +0100
committerLudovic Courtès <ludo@gnu.org>2024-03-21 17:43:15 +0100
commit6f9d844d2ece7b369d17bbe678978462425f869c (patch)
tree71ba92a36c85e053e7c6c3910022d5914ad5f50c /gnu/services
parent2b052fe3c0fa85e9faa8873a581568ad4c78e151 (diff)
downloadguix-6f9d844d2ece7b369d17bbe678978462425f869c.tar
guix-6f9d844d2ece7b369d17bbe678978462425f869c.tar.gz
services: shepherd: Load each service file in a fresh module.
Fixes <https://issues.guix.gnu.org/67649>. * gnu/home/services/shepherd.scm (home-shepherd-configuration-file)[config]: Define ‘make-user-module’. Call ‘load’ in ‘save-module-excursion’. * gnu/services/shepherd.scm (shepherd-configuration-file): Likewise. Reported-by: Attila Lendvai <attila@lendvai.name> Change-Id: I7df11c81b5bbbf2b24a8daa02502a000e0826fe0
Diffstat (limited to 'gnu/services')
-rw-r--r--gnu/services/shepherd.scm13
1 files changed, 12 insertions, 1 deletions
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index f5bcde721f..455e972535 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -383,6 +383,12 @@ as shepherd package."
(use-modules (srfi srfi-34)
(system repl error-handling))
+ (define (make-user-module)
+ ;; Copied from (shepherd support), where it's private.
+ (let ((m (make-fresh-user-module)))
+ (module-use! m (resolve-interface '(shepherd service)))
+ m))
+
;; There's code run from shepherd that uses 'call-with-input-file' &
;; co.--e.g., the 'urandom-seed' service. Starting from Shepherd
;; 0.9.2, users need to make sure not to leak non-close-on-exec file
@@ -416,7 +422,12 @@ as shepherd package."
(register-services
(parameterize ((current-warning-port
(%make-void-port "w")))
- (map load-compiled '#$(map scm->go files))))))
+ (map (lambda (file)
+ (save-module-excursion
+ (lambda ()
+ (set-current-module (make-user-module))
+ (load-compiled file))))
+ '#$(map scm->go files))))))
(format #t "starting services...~%")
(let ((services-to-start