aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2024-07-16 09:04:57 +0100
committerChristopher Baines <mail@cbaines.net>2024-07-18 11:18:29 +0100
commitf3e17f9ff1bf77b4ebddf0de3340e77e2ec8a830 (patch)
tree579b05cae6aee82b0659fbd74606c2c18e3dc133
parentd82ac48b076dca156319c16e78acfadab52fd3e5 (diff)
downloadguix-f3e17f9ff1bf77b4ebddf0de3340e77e2ec8a830.tar.gz
guix-f3e17f9ff1bf77b4ebddf0de3340e77e2ec8a830.zip
inferior: Use the host built-in-builders with inferior.
Rather than querying the built-in-builders from the inferior, as using the host value allows specifying it when opening the connection. * guix/inferior.scm (port->inferior): Have cached-store-connection take the built-in-builders. (inferior-eval-with-store): Call cached-store-connection with the store connection built-in-builders. Change-Id: I27c20732355c0c6aa646748a02df39db302cd568
-rw-r--r--guix/inferior.scm25
1 files changed, 19 insertions, 6 deletions
diff --git a/guix/inferior.scm b/guix/inferior.scm
index 190ba01b3c..b60bf1ab01 100644
--- a/guix/inferior.scm
+++ b/guix/inferior.scm
@@ -253,7 +253,8 @@ inferior."
result)
(inferior-eval '(begin
(define %store-table (make-hash-table))
- (define (cached-store-connection store-id version)
+ (define (cached-store-connection store-id version
+ built-in-builders)
;; Cache connections to store ID. This ensures that
;; the caches within <store-connection> (in
;; particular the object cache) are reused across
@@ -268,9 +269,19 @@ inferior."
;; risk of talking to the wrong daemon or having
;; our build result reclaimed (XXX).
(let ((store (if (defined? 'port->connection)
- (port->connection %bridge-socket
- #:version
- version)
+ ;; #:built-in-builders was
+ ;; added in 2024
+ (catch 'keyword-argument-error
+ (lambda ()
+ (port->connection %bridge-socket
+ #:version
+ version
+ #:built-in-builders
+ built-in-builders))
+ (lambda _
+ (port->connection %bridge-socket
+ #:version
+ version)))
(open-connection))))
(hashv-set! %store-table store-id store)
store))))
@@ -690,11 +701,13 @@ thus be the code of a one-argument procedure that accepts a store."
;; The address of STORE itself is not a good identifier because it
;; keeps changing through the use of "functional caches". The
;; address of its socket port makes more sense.
- (store-id (object-address (store-connection-socket store))))
+ (store-id (object-address (store-connection-socket store)))
+ (store-built-in-builders (built-in-builders store)))
(ensure-store-bridge! inferior)
(send-inferior-request
`(let ((proc ,code)
- (store (cached-store-connection ,store-id ,proto)))
+ (store (cached-store-connection ,store-id ,proto
+ ',store-built-in-builders)))
;; Serialize '&store-protocol-error' conditions. The exception
;; serialization mechanism that 'read-repl-response' expects is
;; unsuitable for SRFI-35 error conditions, hence this special case.