monads, gexp: Remove unintended dependency on (gnu packages …).

* guix/gexp.scm (gexp->derivation, gexp->script): Use 'default-guile'
  instead of an explicit reference to 'guile-final'.
  (default-guile): New procedure.
* guix/monads.scm (run-with-store)[default-guile]: New procedure.
  Use it.
This commit is contained in:
Ludovic Courtès 2014-05-01 18:53:16 +02:00
parent 79c0c8cdf7
commit 53e89b1732
2 changed files with 16 additions and 7 deletions

View File

@ -129,8 +129,7 @@ The other arguments are as for 'derivation'."
(return #f)))
(guile (if guile-for-build
(return guile-for-build)
(package->derivation
(@ (gnu packages base) guile-final)
(package->derivation (default-guile)
system))))
(raw-derivation name
(string-append (derivation->output-path guile)
@ -336,9 +335,14 @@ package/derivation references."
;;; Convenience procedures.
;;;
(define (default-guile)
;; Lazily resolve 'guile-final'. This module must not refer to (gnu …)
;; modules directly, to avoid circular dependencies, hence this hack.
(module-ref (resolve-interface '(gnu packages base))
'guile-final))
(define* (gexp->script name exp
#:key (modules '())
(guile (@ (gnu packages base) guile-final)))
#:key (modules '()) (guile (default-guile)))
"Return an executable script NAME that runs EXP using GUILE with MODULES in
its search path."
(mlet %store-monad ((modules (imported-modules modules))

View File

@ -414,10 +414,15 @@ input list as a monadic value."
(system (%current-system)))
"Run MVAL, a monadic value in the store monad, in STORE, an open store
connection."
(define (default-guile)
;; Lazily resolve 'guile-final'. This module must not refer to (gnu …)
;; modules directly, to avoid circular dependencies, hence this hack.
(module-ref (resolve-interface '(gnu packages base))
'guile-final))
(parameterize ((%guile-for-build (or guile-for-build
(package-derivation store
(@ (gnu packages base)
guile-final)
(default-guile)
system)))
(%current-system system))
(mval store)))