aboutsummaryrefslogtreecommitdiff
path: root/guix/ui.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-06-14 22:37:24 +0200
committerLudovic Courtès <ludo@gnu.org>2014-06-14 22:55:59 +0200
commit56b821069722c6341e9079299d90ae1cdfe9a916 (patch)
tree31207af9b6ec534010dd03b89f661b93eb936b3a /guix/ui.scm
parenta83c6a6471b0f1950ab5c53acb278e1b88d51c11 (diff)
downloadguix-56b821069722c6341e9079299d90ae1cdfe9a916.tar
guix-56b821069722c6341e9079299d90ae1cdfe9a916.tar.gz
guix build: Allow gexps to be passed to '-e'.
* guix/ui.scm (%guix-user-module): New variable. (read/eval): Pass it as the second argument to 'eval'. * guix/scripts/build.scm (options/resolve-packages): Add case for 'gexp?'. * tests/guix-build.sh: Add tests. * doc/guix.texi (Invoking guix build): Document '-e gexp'. guxi build: Allow gexps to be passed to '-e'. * guix/ui.scm (%guix-user-module): New variable. (read/eval): Pass it as the second argument to 'eval'. * guix/scripts/build.scm (options/resolve-packages): Add case for 'gexp?'. * tests/guix-build.sh: Add tests. * doc/guix.texi (Invoking guix build): Document '-e gexp'.
Diffstat (limited to 'guix/ui.scm')
-rw-r--r--guix/ui.scm10
1 files changed, 9 insertions, 1 deletions
diff --git a/guix/ui.scm b/guix/ui.scm
index 6fef9b36e4..beb41e925a 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -238,6 +238,14 @@ interpreted."
(leave (_ "~a: ~a~%") proc
(apply format #f format-string format-args))))))
+(define %guix-user-module
+ ;; Module in which user expressions are evaluated.
+ (let ((module (make-module)))
+ (beautify-user-module! module)
+ ;; Use (guix gexp) so that one can use #~ & co.
+ (module-use! module (resolve-interface '(guix gexp)))
+ module))
+
(define (read/eval str)
"Read and evaluate STR, raising an error if something goes wrong."
(let ((exp (catch #t
@@ -248,7 +256,7 @@ interpreted."
str args)))))
(catch #t
(lambda ()
- (eval exp the-root-module))
+ (eval exp %guix-user-module))
(lambda args
(leave (_ "failed to evaluate expression `~a': ~s~%")
exp args)))))