(zilch nix drv): fix serialized derivation format caching
This was broken at some point, and I'm not sure if this is a load-bearing bug. Let's find out.
This commit is contained in:
parent
fc2d2551fe
commit
5b4bb8cd8a
1 changed files with 12 additions and 11 deletions
|
|
@ -71,10 +71,11 @@
|
||||||
(serialized derivation-cached-data-serialized set-derivation-cached-data-serialized!))
|
(serialized derivation-cached-data-serialized set-derivation-cached-data-serialized!))
|
||||||
|
|
||||||
(define-record-printer (<derivation-cached-data> drv out)
|
(define-record-printer (<derivation-cached-data> drv out)
|
||||||
(fprintf out "#<derivation-cached-data path: ~S, hash: ~S, deferred: ~S>"
|
(fprintf out "#<derivation-cached-data path: ~S, hash: ~S, deferred: ~S (has serialized? ~S)>"
|
||||||
(derivation-cached-data-path drv)
|
(derivation-cached-data-path drv)
|
||||||
(derivation-cached-data-modulo-hash drv)
|
(derivation-cached-data-modulo-hash drv)
|
||||||
(derivation-cached-data-is-deferred drv)))
|
(derivation-cached-data-is-deferred drv)
|
||||||
|
(not (not (derivation-cached-data-serialized drv)))))
|
||||||
|
|
||||||
;; An entire derivation.
|
;; An entire derivation.
|
||||||
;; `outputs` is stored as an alist of output name to `<derivation-output>` object.
|
;; `outputs` is stored as an alist of output name to `<derivation-output>` object.
|
||||||
|
|
@ -498,14 +499,14 @@
|
||||||
(define derivation-serialize
|
(define derivation-serialize
|
||||||
(case-lambda
|
(case-lambda
|
||||||
((drv) (derivation-serialize drv (current-output-port)))
|
((drv) (derivation-serialize drv (current-output-port)))
|
||||||
((drv port) (derivation-serialize drv port (derivation-input-drvs drv)))
|
((drv port)
|
||||||
((drv port masked)
|
|
||||||
(if masked (derivation-serialize-internal drv port masked)
|
|
||||||
(if (derivation-cached-data-serialized (derivation-cached-data drv))
|
(if (derivation-cached-data-serialized (derivation-cached-data drv))
|
||||||
(write-bytevector (derivation-cached-data-serialized (derivation-cached-data drv)) port)
|
(write-bytevector (derivation-cached-data-serialized (derivation-cached-data drv)) port)
|
||||||
(call-with-port (open-output-bytevector)
|
(call-with-port (open-output-bytevector)
|
||||||
(lambda (nport)
|
(lambda (nport)
|
||||||
(derivation-serialize-internal drv nport #f)
|
(derivation-serialize-internal drv nport (derivation-input-drvs drv))
|
||||||
(set-derivation-cached-data-serialized! (derivation-cached-data drv) (get-output-bytevector nport))
|
(set-derivation-cached-data-serialized! (derivation-cached-data drv) (get-output-bytevector nport))
|
||||||
(write-bytevector (get-output-bytevector nport) port))))))))))
|
(write-bytevector (get-output-bytevector nport) port)))))
|
||||||
|
((drv port masked)
|
||||||
|
(derivation-serialize-internal drv port masked))))))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue