~ruther/guix-local

ce4a482983abaf7090d098cdda973139cefb56b7 — Ludovic Courtès 12 years ago 045111e
store: Add 'with-store' convenience macro.

* guix/store.scm (with-store): New macro.
2 files changed, 13 insertions(+), 0 deletions(-)

M .dir-locals.el
M guix/store.scm
M .dir-locals.el => .dir-locals.el +1 -0
@@ 18,6 18,7 @@
   (eval . (put 'manifest-entry 'scheme-indent-function 0))
   (eval . (put 'manifest-pattern 'scheme-indent-function 0))
   (eval . (put 'substitute-keyword-arguments 'scheme-indent-function 1))
   (eval . (put 'with-store 'scheme-indent-function 1))
   (eval . (put 'with-error-handling 'scheme-indent-function 0))
   (eval . (put 'with-mutex 'scheme-indent-function 1))
   (eval . (put 'with-atomic-file-output 'scheme-indent-function 1))

M guix/store.scm => guix/store.scm +12 -0
@@ 53,6 53,7 @@

            open-connection
            close-connection
            with-store
            set-build-options
            valid-path?
            query-path-hash


@@ 323,6 324,17 @@ operate, should the disk become full.  Return a server object."
  "Close the connection to SERVER."
  (close (nix-server-socket server)))

(define-syntax-rule (with-store store exp ...)
  "Bind STORE to an open connection to the store and evaluate EXPs;
automatically close the store when the dynamic extent of EXP is left."
  (let ((store (open-connection)))
    (dynamic-wind
      (const #f)
      (lambda ()
        exp ...)
      (lambda ()
        (false-if-exception (close-connection store))))))

(define current-build-output-port
  ;; The port where build output is sent.
  (make-parameter (current-error-port)))