diff options
-rw-r--r-- | guix/gexp.scm | 3 | ||||
-rw-r--r-- | tests/gexp.scm | 11 |
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) |