summaryrefslogtreecommitdiff
path: root/guix/monad-repl.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-01-14 13:34:52 +0100
committerLudovic Courtès <ludo@gnu.org>2015-01-14 13:34:52 +0100
commite87f0591f3117ed61285f33c7cc3548f72e551ad (patch)
treefcfbd9ee742721b4d30ddc2b863436f5bd0c17c2 /guix/monad-repl.scm
parent1ed194646b22600e002ab8050905fd428d3036fc (diff)
downloadgnu-guix-e87f0591f3117ed61285f33c7cc3548f72e551ad.tar
gnu-guix-e87f0591f3117ed61285f33c7cc3548f72e551ad.tar.gz
monads: Move '%store-monad' and related procedures where they belong.
This turns (guix monads) into a generic module for monads, and moves the store monad and related monadic procedures in their corresponding module. * guix/monads.scm (store-return, store-bind, %store-monad, store-lift, text-file, interned-file, package-file, package->derivation, package->cross-derivation, origin->derivation, imported-modules, compiled, modules, built-derivations, run-with-store): Move to... * guix/store.scm (store-return, store-bind, %store-monad, store-lift, text-file, interned-file): ... here. (%guile-for-build): New variable. (run-with-store): Moved from monads.scm. Remove default value for #:guile-for-build. * guix/packages.scm (default-guile): Export. (set-guile-for-build): New procedure. (package-file, package->derivation, package->cross-derivation, origin->derivation): Moved from monads.scm. * guix/derivations.scm (%guile-for-build): Remove. (imported-modules): Rename to... (%imported-modules): ... this. (compiled-modules): Rename to... (%compiled-modules): ... this. (built-derivations, imported-modules, compiled-modules): New procedures. * gnu/services/avahi.scm, gnu/services/base.scm, gnu/services/dbus.scm, gnu/services/dmd.scm, gnu/services/networking.scm, gnu/services/ssh.scm, gnu/services/xorg.scm, gnu/system/install.scm, gnu/system/linux-initrd.scm, gnu/system/shadow.scm, guix/download.scm, guix/gexp.scm, guix/git-download.scm, guix/profiles.scm, guix/svn-download.scm, tests/monads.scm: Adjust imports accordingly. * guix/monad-repl.scm (default-guile-derivation): New procedure. (store-monad-language, run-in-store): Use it. * build-aux/hydra/gnu-system.scm (qemu-jobs): Add explicit 'set-guile-for-build' call. * guix/scripts/archive.scm (derivation-from-expression): Likewise. * guix/scripts/build.scm (options/resolve-packages): Likewise. * guix/scripts/environment.scm (guix-environment): Likewise. * guix/scripts/system.scm (guix-system): Likewise. * doc/guix.texi (The Store Monad): Adjust module names accordingly.
Diffstat (limited to 'guix/monad-repl.scm')
-rw-r--r--guix/monad-repl.scm26
1 files changed, 19 insertions, 7 deletions
diff --git a/guix/monad-repl.scm b/guix/monad-repl.scm
index 5242f5448b..ebd9151065 100644
--- a/guix/monad-repl.scm
+++ b/guix/monad-repl.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -19,6 +19,8 @@
(define-module (guix monad-repl)
#:use-module (guix store)
#:use-module (guix monads)
+ #:use-module (guix utils)
+ #:use-module (guix packages)
#:use-module (ice-9 pretty-print)
#:use-module (system repl repl)
#:use-module (system repl common)
@@ -54,20 +56,30 @@
#:make-default-environment
(language-make-default-environment scheme))))
+(define* (default-guile-derivation store #:optional (system (%current-system)))
+ "Return the derivation of the default "
+ (package-derivation store (default-guile) system))
+
(define (store-monad-language)
"Return a compiler language for the store monad."
- (let ((store (open-connection)))
+ (let* ((store (open-connection))
+ (guile (or (%guile-for-build)
+ (default-guile-derivation store))))
(monad-language %store-monad
- (cut run-with-store store <>)
+ (cut run-with-store store <>
+ #:guile-for-build guile)
'store-monad)))
(define-meta-command ((run-in-store guix) repl (form))
"run-in-store EXP
Run EXP through the store monad."
- (let ((value (with-store store
- (run-with-store store (repl-eval repl form)))))
- (run-hook before-print-hook value)
- (pretty-print value)))
+ (with-store store
+ (let* ((guile (or (%guile-for-build)
+ (default-guile-derivation store)))
+ (value (run-with-store store (repl-eval repl form)
+ #:guile-for-build guile)))
+ (run-hook before-print-hook value)
+ (pretty-print value))))
(define-meta-command ((enter-store-monad guix) repl)
"enter-store-monad