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

View file

@ -264,17 +264,24 @@ (define mapping
(define* (lower-manifest-entry entry system #:key target) (define* (lower-manifest-entry entry system #:key target)
"Lower ENTRY for SYSTEM and TARGET such that its 'item' field is a store "Lower ENTRY for SYSTEM and TARGET such that its 'item' field is a store
file name." 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))) (let ((item (manifest-entry-item entry)))
(if (string? item) (if (string? item)
(with-monad %store-monad (with-monad %store-monad
(return entry)) (return entry))
(mlet %store-monad ((drv (lower-object item system (mlet %store-monad ((drv (lower-object item system
#:target target)) #:target target))
(dependencies (recurse entry))
(output -> (manifest-entry-output entry))) (output -> (manifest-entry-output entry)))
(return (manifest-entry (return (manifest-entry
(inherit 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) (define* (check-for-collisions manifest system #:key target)
"Check whether the entries of MANIFEST conflict with one another; raise a "Check whether the entries of MANIFEST conflict with one another; raise a