Browse Source

store: Add 'with-store' convenience macro.

* guix/store.scm (with-store): New macro.
wip-grafts
Ludovic Courtès 8 years ago
parent
commit
ce4a482983
  1. 1
      .dir-locals.el
  2. 12
      guix/store.scm

1
.dir-locals.el

@ -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))

12
guix/store.scm

@ -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)))

Loading…
Cancel
Save