[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#29926] [PATCH 1/5] gexp: Add 'eval-gexp'.
From: |
宋文武 |
Subject: |
[bug#29926] [PATCH 1/5] gexp: Add 'eval-gexp'. |
Date: |
Mon, 1 Jan 2018 18:33:32 +0800 |
* guix/gexp.scm (eval-gexp): New procedure.
---
guix/gexp.scm | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/guix/gexp.scm b/guix/gexp.scm
index f005c4d29..9709c5ecb 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -76,6 +76,7 @@
gexp->derivation
gexp->file
gexp->script
+ eval-gexp
text-file*
mixed-text-file
file-union
@@ -1167,6 +1168,21 @@ and '%load-compiled-path' to honor EXP's imported
modules."
#:local-build? #t
#:substitutable? #f)))))
+(define* (eval-gexp exp #:optional (name "computed-value"))
+ "Return as a monadic value the EXP (a gexp) evaluate to. This is
+implemented by building a store file NAME that contains the textual
+representation of EXP's value, and then @code{read} from it."
+ (mlet* %store-monad
+ ((drv (gexp->derivation
+ name
+ (gexp (with-output-to-file (ungexp output)
+ (lambda ()
+ (write (eval (quote (ungexp exp)) (current-module))))))
+ #:local-build? #t
+ #:substitutable? #f))
+ (_ (built-derivations (list drv))))
+ (return (call-with-input-file (derivation->output-path drv) read))))
+
(define* (text-file* name #:rest text)
"Return as a monadic value a derivation that builds a text file containing
all of TEXT. TEXT may list, in addition to strings, objects of any type that
--
2.13.3
- [bug#29928] [PATCH 0/5] Optimize profile hooks, 宋文武, 2018/01/01
- [bug#29927] [PATCH 2/5] profiles: info-dir-file: Don't consider unwanted manifest entries., 宋文武, 2018/01/01
- [bug#29926] [PATCH 1/5] gexp: Add 'eval-gexp'.,
宋文武 <=
- [bug#29925] [PATCH 3/5] guix package: Disable profile hooks on dry runs., 宋文武, 2018/01/01
- [bug#29929] [PATCH 5/5] profiles: Sort manifest inputs for profile hooks., 宋文武, 2018/01/01
- [bug#29930] [PATCH 4/5] profiles: Filter out unwanted manifest entries for profile hooks., 宋文武, 2018/01/01
- [bug#29928] [PATCH 0/5] Optimize profile hooks, Ludovic Courtès, 2018/01/11