profiles: 'lower-manifest-entry' recurses on dependencies.

* guix/profiles.scm (lower-manifest-entry)[recurse]: New procedure.
Call it on dependencies and set the 'dependencies' field accordingly.
This commit is contained in:
Ludovic Courtès 2020-03-30 22:39:54 +02:00
parent a187cc5628
commit 1a9a373eb4
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 9 additions and 2 deletions

View File

@ -264,17 +264,24 @@ procedure takes two arguments: the entry name and output."
(define* (lower-manifest-entry entry system #:key target)
"Lower ENTRY for SYSTEM and TARGET such that its 'item' field is a store
file name."
(define (recurse entry)
(mapm/accumulate-builds (lambda (entry)
(lower-manifest-entry entry system
#:target target))
(manifest-entry-dependencies entry)))
(let ((item (manifest-entry-item entry)))
(if (string? item)
(with-monad %store-monad
(return entry))
(mlet %store-monad ((drv (lower-object item system
#:target target))
(dependencies (recurse entry))
(output -> (manifest-entry-output entry)))
(return (manifest-entry
(inherit entry)
;; TODO: Lower dependencies, recursively.
(item (derivation->output-path drv output))))))))
(item (derivation->output-path drv output))
(dependencies dependencies)))))))
(define* (check-for-collisions manifest system #:key target)
"Check whether the entries of MANIFEST conflict with one another; raise a