From d4f8884fdb897e648fd7f4262b2142d8c363ac76 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 31 Aug 2016 15:23:32 +0200 Subject: guix system: Do not unload services depended on. Reported by Mark H Weaver at . * guix/scripts/system.scm (service-upgrade)[live-service-required?]: New procedure. [obsolete?]: Use it. * tests/system.scm ("service-upgrade: service depended on is not unloaded", "service-upgrade: obsolete services that depend on each other"): New tests. --- guix/scripts/system.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'guix/scripts/system.scm') diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 80f62fb109..bcf19dbb7e 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -298,9 +298,14 @@ needs to be loaded." (service (and (not (live-service-running service)) service)))) + (define live-service-dependents + (shepherd-service-back-edges live + #:provision live-service-provision + #:requirement live-service-requirement)) + (define (obsolete? service) (match (lookup-target (first (live-service-provision service))) - (#f #t) + (#f (every obsolete? (live-service-dependents service))) (_ #f))) (define to-load -- cgit v1.2.3