guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/06: profiles: 'lower-manifest-entry' recurses on dependencies.


From: guix-commits
Subject: 03/06: profiles: 'lower-manifest-entry' recurses on dependencies.
Date: Mon, 30 Mar 2020 18:07:40 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 1a9a373eb445d21add006a46c18df0da11e52cbe
Author: Ludovic Courtès <address@hidden>
AuthorDate: Mon Mar 30 22:39:54 2020 +0200

    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.
---
 guix/profiles.scm | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/guix/profiles.scm b/guix/profiles.scm
index 1362c40..e3bbc6d 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]