~ruther/guix-local

547965aa27b6a09cadf42130b7ec7db3f1aee61f — Ludovic Courtès 3 years ago 67a7eaa
services: herd: Remove workaround for Shepherd < 0.5.0.

* gnu/services/herd.scm (load-services/safe): Remove workaround for
Shepherd < 0.5.0, released in 2018.
1 files changed, 7 insertions(+), 17 deletions(-)

M gnu/services/herd.scm
M gnu/services/herd.scm => gnu/services/herd.scm +7 -17
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016-2019, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016-2019, 2022-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.


@@ 284,22 284,12 @@ returns a shepherd <service> object."

(define (load-services/safe files)
  "This is like 'load-services', but make sure only the subset of FILES that
can be safely reloaded is actually reloaded.

This is done to accommodate the Shepherd < 0.15.0 where services lacked the
'replacement' slot, and where 'register-services' would throw an exception
when passed a service with an already-registered name."
  (eval-there `(let* ((services     (map primitive-load ',files))
                      (slots        (map slot-definition-name
                                         (class-slots <service>)))
                      (can-replace? (memq 'replacement slots)))
                 (define (registered? service)
                   (not (null? (lookup-services (canonical-name service)))))

                 (apply register-services
                        (if can-replace?
                            services
                            (remove registered? services))))))
can be safely reloaded is actually reloaded."
  (eval-there `(let ((services (map primitive-load ',files)))
                 ;; Since version 0.5.0 of the Shepherd, registering a service
                 ;; that has the same name as an already-registered service
                 ;; makes it a "replacement" of that previous service.
                 (apply register-services services))))

(define* (start-service name #:optional (arguments '()))
  (invoke-action name 'start arguments