gexp: Add system and target support to gexp->file.

* guix/gexp.scm (gexp->file): Add system and target arguments and pass them to
gexp->derivation and load-path-expression calls,
(scheme-file-compiler): adapt accordingly to pass system and target arguments.
This commit is contained in:
Mathieu Othacehe 2019-12-14 17:52:53 +01:00
parent 80a61b38b8
commit 3cd1444df7
No known key found for this signature in database
GPG key ID: 8354763531769CA6

View file

@ -2,6 +2,7 @@
;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -456,7 +457,10 @@ (define-gexp-compiler (scheme-file-compiler (file <scheme-file>)
;; Compile FILE by returning a derivation that builds the file.
(match file
(($ <scheme-file> name gexp splice?)
(gexp->file name gexp #:splice? splice?))))
(gexp->file name gexp
#:splice? splice?
#:system system
#:target target))))
;; Appending SUFFIX to BASE's output file name.
(define-record-type <file-append>
@ -1598,7 +1602,9 @@ (define* (gexp->script name exp
(define* (gexp->file name exp #:key
(set-load-path? #t)
(module-path %load-path)
(splice? #f))
(splice? #f)
(system (%current-system))
target)
"Return a derivation that builds a file NAME containing EXP. When SPLICE?
is true, EXP is considered to be a list of expressions that will be spliced in
the resulting file.
@ -1621,10 +1627,14 @@ (define extensions (gexp-extensions exp))
exp
(gexp ((ungexp exp)))))))))
#:local-build? #t
#:substitutable? #f)
#:substitutable? #f
#:system system
#:target target)
(mlet %store-monad ((set-load-path
(load-path-expression modules module-path
#:extensions extensions)))
#:extensions extensions
#:system system
#:target target)))
(gexp->derivation name
(gexp
(call-with-output-file (ungexp output)
@ -1637,7 +1647,9 @@ (define extensions (gexp-extensions exp))
(gexp ((ungexp exp)))))))))
#:module-path module-path
#:local-build? #t
#:substitutable? #f))))
#:substitutable? #f
#:system system
#:target target))))
(define* (text-file* name #:rest text)
"Return as a monadic value a derivation that builds a text file containing