~ruther/guix-local

07254feb24d755a01c63b64c1df1bfb68ac469bf — Ludovic Courtès 11 years ago 240a277
ui: Avoid circularity with (guix gexp).

Fixes a regression introduced in 56b8210 ("guix build: Allow gexps to be
passed to '-e'.")

* guix/ui.scm (%guix-user-module): Wrap in 'delay'.
  (read/eval): Adjust accordingly.
1 files changed, 8 insertions(+), 6 deletions(-)

M guix/ui.scm
M guix/ui.scm => guix/ui.scm +8 -6
@@ 240,11 240,13 @@ interpreted."

(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))
  ;; Compute lazily to avoid circularity with (guix gexp).
  (delay
    (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."


@@ 256,7 258,7 @@ interpreted."
                        str args)))))
    (catch #t
      (lambda ()
        (eval exp %guix-user-module))
        (eval exp (force %guix-user-module)))
      (lambda args
        (leave (_ "failed to evaluate expression `~a': ~s~%")
               exp args)))))