(zilch nix daemon): make options runtime-configurable
This commit is contained in:
parent
589a0bf5cc
commit
2ed428e37d
1 changed files with 52 additions and 23 deletions
|
|
@ -2,7 +2,7 @@
|
||||||
;;
|
;;
|
||||||
;; Currently implements protocol 1.21, from around Nix 2.4.
|
;; Currently implements protocol 1.21, from around Nix 2.4.
|
||||||
(define-library (zilch nix daemon)
|
(define-library (zilch nix daemon)
|
||||||
(import (scheme base) (scheme write) (zilch lib hash) srfi-151
|
(import (scheme base) (scheme write) (scheme case-lambda) (zilch lib hash) srfi-151
|
||||||
(zilch nix binproto) socket
|
(zilch nix binproto) socket
|
||||||
(chicken format))
|
(chicken format))
|
||||||
|
|
||||||
|
|
@ -15,17 +15,27 @@
|
||||||
daemon-write-string daemon-read-string
|
daemon-write-string daemon-read-string
|
||||||
|
|
||||||
*logger*
|
*logger*
|
||||||
daemon-wop-handshake daemon-wop-add-text-to-store
|
daemon-wop-handshake daemon-wop-set-options
|
||||||
daemon-wop-add-to-store-nar daemon-wop-build-paths
|
daemon-wop-add-text-to-store daemon-wop-add-to-store-nar
|
||||||
daemon-wop-query-derivation-output-map)
|
daemon-wop-build-paths daemon-wop-query-derivation-output-map)
|
||||||
|
|
||||||
(begin
|
(begin
|
||||||
|
(define-record-type <daemon-link-settings>
|
||||||
|
(make-daemon-link-settings verbosity max-build-jobs use-substitutes)
|
||||||
|
daemon-link-settings?
|
||||||
|
(verbosity daemon-link-settings-verbosity set-daemon-link-settings-verbosity!)
|
||||||
|
(max-build-jobs daemon-link-settings-max-build-jobs set-daemon-link-settings-max-build-jobs!)
|
||||||
|
(use-substitutes daemon-link-settings-use-substitutes set-daemon-link-settings-use-substitutes!))
|
||||||
|
|
||||||
(define-record-type <daemon-link>
|
(define-record-type <daemon-link>
|
||||||
(make-daemon-link in-port out-port)
|
(internal-make-daemon-link in-port out-port settings)
|
||||||
daemon-link?
|
daemon-link?
|
||||||
(in-port daemon-link-in-port)
|
(in-port daemon-link-in-port)
|
||||||
(out-port daemon-link-out-port))
|
(out-port daemon-link-out-port)
|
||||||
|
(settings daemon-link-settings))
|
||||||
|
|
||||||
|
(define (make-daemon-link in-port out-port)
|
||||||
|
(internal-make-daemon-link in-port out-port (make-daemon-link-settings 3 32 #t)))
|
||||||
|
|
||||||
;; Equivalent to port-{read,write}-{u64,bytevector,string} but on the <daemon-link> instead.
|
;; Equivalent to port-{read,write}-{u64,bytevector,string} but on the <daemon-link> instead.
|
||||||
(define (daemon-write-u64 link val) (port-write-u64 val (daemon-link-out-port link)))
|
(define (daemon-write-u64 link val) (port-write-u64 val (daemon-link-out-port link)))
|
||||||
|
|
@ -137,25 +147,44 @@
|
||||||
(daemon-write-u64 link 0)
|
(daemon-write-u64 link 0)
|
||||||
(daemon-flush link)
|
(daemon-flush link)
|
||||||
(daemon-read-log-events link)
|
(daemon-read-log-events link)
|
||||||
|
(daemon-wop-set-options link))
|
||||||
|
|
||||||
|
(define daemon-wop-set-options
|
||||||
|
(case-lambda
|
||||||
|
((link)
|
||||||
|
(define settings (daemon-link-settings link))
|
||||||
|
(daemon-wop-set-options link (daemon-link-settings-verbosity settings) (daemon-link-settings-max-build-jobs settings) (daemon-link-settings-use-substitutes settings)))
|
||||||
|
((link verbosity)
|
||||||
|
(define settings (daemon-link-settings link))
|
||||||
|
(set-daemon-link-settings-verbosity! settings verbosity)
|
||||||
|
(daemon-wop-set-options link verbosity (daemon-link-settings-max-build-jobs settings) (daemon-link-settings-use-substitutes settings)))
|
||||||
|
((link verbosity max-build-jobs)
|
||||||
|
(define settings (daemon-link-settings link))
|
||||||
|
(set-daemon-link-settings-verbosity! settings verbosity)
|
||||||
|
(set-daemon-link-settings-max-build-jobs! settings max-build-jobs)
|
||||||
|
(daemon-wop-set-options link verbosity max-build-jobs (daemon-link-settings-use-substitutes settings)))
|
||||||
|
((link verbosity max-build-jobs use-substitutes)
|
||||||
|
(define settings (daemon-link-settings link))
|
||||||
|
(set-daemon-link-settings-verbosity! settings verbosity)
|
||||||
|
(set-daemon-link-settings-max-build-jobs! settings max-build-jobs)
|
||||||
|
(set-daemon-link-settings-use-substitutes! settings use-substitutes)
|
||||||
|
|
||||||
; Send wopSetOptions too, to adjust verbosity.
|
|
||||||
(daemon-write-u64 link 19)
|
(daemon-write-u64 link 19)
|
||||||
(daemon-write-u64 link 0) ; keepFailed
|
(daemon-write-u64 link 0) ; keepFailed
|
||||||
(daemon-write-u64 link 0) ; keepGoing
|
(daemon-write-u64 link 0) ; keepGoing
|
||||||
(daemon-write-u64 link 0) ; tryFallback
|
(daemon-write-u64 link 0) ; tryFallback
|
||||||
(daemon-write-u64 link 3) ; verbosity (lvlInfo)
|
(daemon-write-u64 link verbosity) ; verbosity (lvlInfo)
|
||||||
(daemon-write-u64 link 30) ; maxBuildJobs
|
(daemon-write-u64 link max-build-jobs) ; maxBuildJobs
|
||||||
(daemon-write-u64 link 0) ; maxSilentTime
|
(daemon-write-u64 link 0) ; maxSilentTime
|
||||||
(daemon-write-u64 link 0) ; obsolete, useBuildHook
|
(daemon-write-u64 link 0) ; obsolete, useBuildHook
|
||||||
(daemon-write-u64 link 0) ; verboseBuild (unused?)
|
(daemon-write-u64 link 0) ; verboseBuild (unused?)
|
||||||
(daemon-write-u64 link 0) ; obsolete, logType
|
(daemon-write-u64 link 0) ; obsolete, logType
|
||||||
(daemon-write-u64 link 0) ; obsolete, printBuildTrace
|
(daemon-write-u64 link 0) ; obsolete, printBuildTrace
|
||||||
(daemon-write-u64 link 0) ; buildCores
|
(daemon-write-u64 link 0) ; buildCores
|
||||||
(daemon-write-u64 link 0) ; useSubstitutes
|
(daemon-write-u64 link (if use-substitutes 1 0)) ; useSubstitutes
|
||||||
(daemon-write-u64 link 0) ; settings overrides
|
(daemon-write-u64 link 0) ; settings overrides
|
||||||
(daemon-flush link)
|
(daemon-flush link)
|
||||||
(daemon-read-log-events link))
|
(daemon-read-log-events link))))
|
||||||
|
|
||||||
|
|
||||||
;; Request to the daemon that the paths in PATHS have to be built.
|
;; Request to the daemon that the paths in PATHS have to be built.
|
||||||
;; Each path may either be an output path, or `<drv>!<output name>`.
|
;; Each path may either be an output path, or `<drv>!<output name>`.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue