diff --git a/guix/inferior.scm b/guix/inferior.scm index 572114f626..f6866d2083 100644 --- a/guix/inferior.scm +++ b/guix/inferior.scm @@ -188,6 +188,8 @@ (define* (port->inferior pipe #:optional (close close-port)) (inferior-eval '(use-modules (srfi srfi-34)) result) (inferior-eval '(define %package-table (make-hash-table)) result) + (inferior-eval '(define %previous-object-cache #f) + result) result)) (_ #f))) @@ -559,6 +561,10 @@ (define (inferior-eval-with-store inferior store code) (let ((store (if (defined? 'port->connection) (port->connection socket #:version ,proto) (open-connection)))) + (when %previous-object-cache + (set-store-connection-cache! store (@@ (guix store) %object-cache-id) + %previous-object-cache)) + (dynamic-wind (const #t) (lambda () @@ -570,6 +576,9 @@ (define (inferior-eval-with-store inferior store code) `(store-protocol-error ,(error-message c)))) `(result ,(proc store)))) (lambda () + (set! %previous-object-cache + (store-connection-cache store + (@@ (guix store) %object-cache-id))) (close-connection store) (close-port socket))))) inferior)