~ruther/guix-local

53e89b1732d2935d69a199c0213568ae1e66eb60 — Ludovic Courtès 12 years ago 79c0c8c
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.
2 files changed, 16 insertions(+), 7 deletions(-)

M guix/gexp.scm
M guix/monads.scm
M guix/gexp.scm => guix/gexp.scm +9 -5
@@ 129,9 129,8 @@ 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)
                                      system))))
                                     (package->derivation (default-guile)
                                                          system))))
    (raw-derivation name
                    (string-append (derivation->output-path guile)
                                   "/bin/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))

M guix/monads.scm => guix/monads.scm +7 -2
@@ 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)))