diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-03-30 22:39:54 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-03-31 00:06:36 +0200 |
commit | 1a9a373eb445d21add006a46c18df0da11e52cbe (patch) | |
tree | ea707789b4f18b122a0ce657c569047b7d704971 | |
parent | a187cc562890895ad41dfad00eb1d5c4a4b00936 (diff) |
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.
-rw-r--r-- | guix/profiles.scm | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/guix/profiles.scm b/guix/profiles.scm index 1362c4092a..e3bbc6dd6d 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -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 |