mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
services: ‘shepherd-service-upgrade’ handles canonical name changes.
Partly fixes <https://issues.guix.gnu.org/76315>. Fixes a bug whereby a service whose canonical name has changed would not be restarted—e.g., if '(syslogd) has a replacement providing '(system-log syslogd). * gnu/services/shepherd.scm (shepherd-service-upgrade)[running?]: Remove. [to-restart]: Change to a subset of LIVE. Look up all the names of each element of TARGET. * guix/scripts/system/reconfigure.scm (upgrade-shepherd-services): TO-RESTART is now a list of <live-service>; adjust accordingly. * tests/services.scm ("shepherd-service-upgrade: one unchanged, one upgraded, one new"): ("shepherd-service-upgrade: service depended on is not unloaded"): ("shepherd-service-upgrade: obsolete services that depend on each other"): ("shepherd-service-upgrade: transient service"): Adjust accordingly. ("shepherd-service-upgrade: service has new canonical name"): New test. Reported-by: Tomas Volf <~@wolfsden.cz> Change-Id: I7cec495b4e824da5fad5518f039607cf92f935d9
This commit is contained in:
parent
c92fbc83d4
commit
749eb1a2dd
3 changed files with 33 additions and 14 deletions
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015-2019, 2022, 2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015-2019, 2022-2023, 2025 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -225,7 +225,7 @@
|
|||
(start #t)))))
|
||||
(lambda (unload restart)
|
||||
(list (map live-service-provision unload)
|
||||
(map shepherd-service-provision restart)))))
|
||||
(map live-service-provision restart)))))
|
||||
|
||||
(test-equal "shepherd-service-upgrade: service depended on is not unloaded"
|
||||
'(((baz)) ;unload
|
||||
|
@ -243,7 +243,7 @@
|
|||
(start #t)))))
|
||||
(lambda (unload restart)
|
||||
(list (map live-service-provision unload)
|
||||
(map shepherd-service-provision restart)))))
|
||||
(map live-service-provision restart)))))
|
||||
|
||||
(test-equal "shepherd-service-upgrade: obsolete services that depend on each other"
|
||||
'(((foo) (bar) (baz)) ;unload
|
||||
|
@ -260,7 +260,7 @@
|
|||
(start #t)))))
|
||||
(lambda (unload restart)
|
||||
(list (map live-service-provision unload)
|
||||
(map shepherd-service-provision restart)))))
|
||||
(map live-service-provision restart)))))
|
||||
|
||||
(test-equal "shepherd-service-upgrade: transient service"
|
||||
;; Transient service must not be unloaded:
|
||||
|
@ -277,7 +277,24 @@
|
|||
(start #t)))))
|
||||
(lambda (unload restart)
|
||||
(list (map live-service-provision unload)
|
||||
(map shepherd-service-provision restart)))))
|
||||
(map live-service-provision restart)))))
|
||||
|
||||
(test-equal "shepherd-service-upgrade: service has new canonical name"
|
||||
'(((qux)) ;unload
|
||||
((ssh) (foo))) ;restart
|
||||
(call-with-values
|
||||
(lambda ()
|
||||
(shepherd-service-upgrade
|
||||
(list (live-service '(ssh) '() #f 42) ;running
|
||||
(live-service '(foo) '() #f #t) ;changed canonical name
|
||||
(live-service '(qux) '() #f #t)) ;obsolete
|
||||
(list (shepherd-service (provision '(ssh))
|
||||
(start #t))
|
||||
(shepherd-service (provision '(bar foo))
|
||||
(start #t)))))
|
||||
(lambda (unload restart)
|
||||
(list (map live-service-provision unload)
|
||||
(map live-service-provision restart)))))
|
||||
|
||||
(test-eq "lookup-service-types"
|
||||
system-service-type
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue