guix-commits
[Top][All Lists]
Advanced

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

01/03: gexp: 'ungexp-splicing' properly accounts for nested native input


From: Ludovic Courtès
Subject: 01/03: gexp: 'ungexp-splicing' properly accounts for nested native inputs.
Date: Mon, 17 Jul 2017 17:42:34 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 578dfbe07bcd1bdef9129c6ce8529332a0abcba6
Author: Ludovic Courtès <address@hidden>
Date:   Mon Jul 17 23:21:55 2017 +0200

    gexp: 'ungexp-splicing' properly accounts for nested native inputs.
    
    Previously, (gexp-native-inputs #~#$@(list #~#+foo)) would return '().
    
    This is a followup to 5b14a7902c58d9fb7923f9e16871f549fbe59b6e.
    
    * guix/gexp.scm (gexp-inputs)[add-reference-inputs]: In the list case,
    remove 'if' around 'fold-right'.  In 'map' lambda, always inherit N?.
    * tests/gexp.scm ("gexp list splicing + ungexp-splicing"): New test.
---
 guix/gexp.scm  | 20 +++++++++++---------
 tests/gexp.scm |  8 ++++++++
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/guix/gexp.scm b/guix/gexp.scm
index d9c4cb4..2094c49 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -706,15 +706,17 @@ references; otherwise, return only non-native references."
            (cons `(,thing ,output) result)
            result))
       (($ <gexp-input> (lst ...) output n?)
-       (if (eqv? native? n?)
-           (fold-right add-reference-inputs result
-                       ;; XXX: For now, automatically convert LST to a list of
-                       ;; gexp-inputs.
-                       (map (match-lambda
-                              ((? gexp-input? x) x)
-                              (x (%gexp-input x "out" (or n? native?))))
-                            lst))
-           result))
+       (fold-right add-reference-inputs result
+                   ;; XXX: For now, automatically convert LST to a list of
+                   ;; gexp-inputs.  Inherit N?.
+                   (map (match-lambda
+                          ((? gexp-input? x)
+                           (%gexp-input (gexp-input-thing x)
+                                        (gexp-input-output x)
+                                        n?))
+                          (x
+                           (%gexp-input x "out" n?)))
+                        lst)))
       (_
        ;; Ignore references to other kinds of objects.
        result)))
diff --git a/tests/gexp.scm b/tests/gexp.scm
index cf88a9d..5873abd 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -355,6 +355,14 @@
          (equal? (gexp->sexp* exp)                ;native
                  (gexp->sexp* exp "mips64el-linux")))))
 
+(test-assert "gexp list splicing + ungexp-splicing"
+  (let* ((inner (gexp (ungexp-native glibc)))
+         (exp   (gexp (list (ungexp-splicing (list inner))))))
+    (and (equal? `((,glibc "out")) (gexp-native-inputs exp))
+         (null? (gexp-inputs exp))
+         (equal? (gexp->sexp* exp)                ;native
+                 (gexp->sexp* exp "mips64el-linux")))))
+
 (test-equal "output list"
   2
   (let ((exp (gexp (begin (mkdir (ungexp output))



reply via email to

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