download: 'built-in-builders*' relies on the functional cache.

The previous caching strategy, which used STORE as an 'eq?' key, would
no longer work when the functional cache is used because subsequent
store values are not 'eq?'.

* guix/download.scm (built-in-builders*): Rewrite in terms of
'mcached'.
This commit is contained in:
Ludovic Courtès 2017-06-26 23:09:39 +02:00
parent 87b711d200
commit 40cc850aeb
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -411,17 +411,11 @@ (define %content-addressed-mirror-file
(object->string %content-addressed-mirrors)))
(define built-in-builders*
(let ((cache (make-weak-key-hash-table)))
(let ((proc (store-lift built-in-builders)))
(lambda ()
"Return, as a monadic value, the list of built-in builders supported by
the daemon."
(lambda (store)
;; Memoize the result to avoid repeated RPCs.
(values (or (hashq-ref cache store)
(let ((result (built-in-builders store)))
(hashq-set! cache store result)
result))
store)))))
the daemon; cache the return value."
(mcached (proc) built-in-builders))))
(define* (built-in-download file-name url
#:key system hash-algo hash