summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/gexp.scm3
-rw-r--r--tests/gexp.scm11
2 files changed, 13 insertions, 1 deletions
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 56b1bb4951..01dca902f7 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -685,7 +685,8 @@ SUFFIX."
expander => (lambda (obj lowered output)
(match obj
(($ <file-append> base suffix)
- (let* ((expand (lookup-expander base))
+ (let* ((expand (or (lookup-expander base)
+ (lookup-expander lowered)))
(base (expand base lowered output)))
(string-append base (string-concatenate suffix)))))))
diff --git a/tests/gexp.scm b/tests/gexp.scm
index b720671735..ad8e1d57b8 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -441,6 +441,17 @@
'(system-binding)))
(x x)))))
+(test-assert "let-system in file-append"
+ (let ((mixed (file-append (let-system (system target)
+ (if (not target) grep sed))
+ "/bin"))
+ (grep (file-append grep "/bin"))
+ (sed (file-append sed "/bin")))
+ (and (equal? (gexp->sexp* #~(list #$mixed))
+ (gexp->sexp* #~(list #$grep)))
+ (equal? (gexp->sexp* #~(list #$mixed) "powerpc64le-linux-gnu")
+ (gexp->sexp* #~(list #$sed) "powerpc64le-linux-gnu")))))
+
(test-assert "ungexp + ungexp-native"
(let* ((exp (gexp (list (ungexp-native %bootstrap-guile)
(ungexp coreutils)