(zilch nix daemon): Upgrade daemon version to 2.18-like
This is necessary for support with recent Lix. Change-Id: I6a6a69648db16e23ee82a5107cec858ccc06fb42
This commit is contained in:
parent
a80266d9d8
commit
e76c57a388
1 changed files with 30 additions and 20 deletions
|
|
@ -193,7 +193,7 @@
|
|||
(set-daemon-link-protocol-minor! link protocol-minor)
|
||||
(unless (= worker-magic #x6478696f) (error "handshake: received wrong WORKER_MAGIC_2" worker-magic))
|
||||
(unless (= protocol-major 1) (error "handshake: invalid major version protocol" protocol-major))
|
||||
(daemon-write-u64 link #x121)
|
||||
(daemon-write-u64 link #x123)
|
||||
(daemon-write-u64 link 0) ; cpu affinity
|
||||
(daemon-write-u64 link 0)
|
||||
(daemon-flush link)
|
||||
|
|
@ -202,6 +202,7 @@
|
|||
(set! daemon-version (daemon-read-string link)))
|
||||
(when (< protocol-minor #x20)
|
||||
(error (string-append "Nix daemon version " daemon-version " is too old!")))
|
||||
(daemon-read-u64 link) ; trusted
|
||||
(set-daemon-link-daemon-version! link daemon-version)
|
||||
(daemon-read-log-events link)
|
||||
(daemon-wop-set-options link))
|
||||
|
|
@ -262,17 +263,40 @@
|
|||
(daemon-read-log-events link)
|
||||
(daemon-read-u64 link)))
|
||||
|
||||
;; Process a framed sink.
|
||||
;; `proc` will be called to provide the contents.
|
||||
(define (handle-framed-sink link proc)
|
||||
(define write-blob
|
||||
(case-lambda
|
||||
((bv) (daemon-write-u64 link (bytevector-length bv)) (write-bytevector bv (daemon-link-out-port link)))
|
||||
((bv start) (daemon-write-u64 link (- (bytevector-length bv) start)) (write-bytevector bv (daemon-link-out-port link) start))
|
||||
((bv start end) (daemon-write-u64 link (- end start)) (write-bytevector bv (daemon-link-out-port link) start end))))
|
||||
|
||||
(define data-thread
|
||||
(make-thread
|
||||
(lambda ()
|
||||
(proc write-blob)
|
||||
(daemon-write-u64 link 0) ; send an EOF
|
||||
(daemon-flush link))))
|
||||
(thread-start! data-thread)
|
||||
(daemon-read-log-events link)
|
||||
(thread-join! data-thread))
|
||||
|
||||
;; Write a simple text file to the store. `refs` is expected to be sorted.
|
||||
;; Returns the (string) store path at which the file has been created.
|
||||
;; Actually calls `AddToStore` internally.
|
||||
(define (daemon-wop-add-text-to-store link suffix s refs)
|
||||
(daemon-write-u64 link 8)
|
||||
(daemon-write-u64 link 7)
|
||||
(daemon-write-string link suffix)
|
||||
(daemon-write-string link s)
|
||||
(daemon-write-string link "text:sha256")
|
||||
(daemon-write-u64 link (length refs))
|
||||
(for-each (lambda (l) (daemon-write-string link l)) refs)
|
||||
(daemon-write-u64 link 0) ; repair flag
|
||||
(daemon-flush link)
|
||||
(daemon-read-log-events link)
|
||||
(daemon-read-string link))
|
||||
(handle-framed-sink link (lambda (write-blob) (write-blob (string->utf8 s))))
|
||||
(define path (daemon-read-string link))
|
||||
(daemon-read-valid-path-info link)
|
||||
path)
|
||||
|
||||
;; Contains the information Nix stores about a valid store path.
|
||||
(define-record-type <valid-path-info>
|
||||
|
|
@ -355,21 +379,7 @@
|
|||
(daemon-write-u64 link 0) ; dontCheckSigs
|
||||
|
||||
(daemon-flush link)
|
||||
(define write-blob
|
||||
(case-lambda
|
||||
((bv) (daemon-write-u64 link (bytevector-length bv)) (write-bytevector bv (daemon-link-out-port link)))
|
||||
((bv start) (daemon-write-u64 link (- (bytevector-length bv) start)) (write-bytevector bv (daemon-link-out-port link) start))
|
||||
((bv start end) (daemon-write-u64 link (- end start)) (write-bytevector bv (daemon-link-out-port link) start end))))
|
||||
|
||||
(define data-thread
|
||||
(make-thread
|
||||
(lambda ()
|
||||
(proc write-blob)
|
||||
(daemon-write-u64 link 0) ; send an EOF
|
||||
(daemon-flush link))))
|
||||
(thread-start! data-thread)
|
||||
(daemon-read-log-events link)
|
||||
(thread-join! data-thread))
|
||||
(handle-framed-sink link proc))
|
||||
|
||||
;; Requests an alist of output name to output store path for the derivation at `store-path`.
|
||||
(define (daemon-wop-query-derivation-output-map link store-path)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue