[bug#77189,2/3] services: guix: Streamline the default ‘start’ case.
Commit Message
* gnu/services/base.scm (guix-shepherd-service): In ‘start’ method, use
‘fork+exec-command’ in the default case.
Change-Id: Id04d3d2651f89fbcdb2f17f027df91e132ff9ed1
---
gnu/services/base.scm | 31 ++++++++++++++-----------------
1 file changed, 14 insertions(+), 17 deletions(-)
@@ -2137,23 +2137,20 @@ (define (guix-shepherd-service config)
(gid (if group (group:gid (getgrnam group)) -1)))
(chown "/var/guix/daemon-socket" uid gid))
- ;; Start the guix-daemon from a container, when supported,
- ;; to solve an installation issue. See the comment below for
- ;; more details.
- (fork+exec-command/container
- daemon-command
-
- ;; When running the installer, we need guix-daemon to
- ;; operate from within the same MNT namespace as the
- ;; installation container. In that case only, enter the
- ;; namespace of the process PID passed as start argument.
- ;; Otherwise, for symmetry purposes enter the caller
- ;; namespaces which is a no-op.
- #:pid (match args
- ((pid) (string->number pid))
- (else (getpid)))
- #:environment-variables environment-variables
- #:log-file #$log-file))))
+ (match args
+ (((= string->number (? integer? pid)))
+ ;; Start the guix-daemon in the same mnt namespace as
+ ;; PID. This is necessary when running the installer.
+ (fork+exec-command/container
+ daemon-command
+ #:pid pid
+ #:environment-variables environment-variables
+ #:log-file #$log-file))
+ (()
+ (fork+exec-command daemon-command
+ #:environment-variables
+ environment-variables
+ #:log-file #$log-file))))))
(stop #~(make-kill-destructor))))))
(define (guix-accounts config)