gexp: 'file-append' correctly handles bases without an expander.
This fixes this use case: (file-append (let-system ...) ...) * guix/gexp.scm (file-append-compiler): When BASE lacks an expander, delegate to LOWERED. * tests/gexp.scm ("let-system in file-append"): New test.master
parent
61ad9bc2ad
commit
6b30eb189e
|
@ -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)))))))
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Reference in New Issue