diff --git a/guix/profiles.scm b/guix/profiles.scm index 980229ca7..52a8bd2ea 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -157,6 +157,19 @@ ;; Convenient alias, to avoid name clashes. (define make-manifest manifest) +(define (manifest-transitive-entries manifest) + "Return the entries of MANIFEST along with their propagated inputs, +recursively." + (let loop ((entries (manifest-entries manifest)) + (result '())) + (match entries + (() + (reverse result)) + ((head . tail) + (loop (append (manifest-entry-dependencies head) + tail) + (cons head result)))))) + (define-record-type* manifest-entry make-manifest-entry manifest-entry? @@ -250,7 +263,7 @@ file name." (#f ;no conflict (return result)))) #t - (manifest-entries manifest)))) + (manifest-transitive-entries manifest)))) (define* (package->manifest-entry package #:optional (output "out") #:key (parent (delay #f)))