daemon: Add '--timeout' and '--max-silent-time'.

* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_TIMEOUT)
(GUIX_OPT_MAX_SILENT_TIME): New macros.
* nix/nix-daemon/guix-daemon.cc (options): Add '--timeout' and
'--max-silent-time'.
(parse_opt): Honor them.
* tests/guix-daemon.sh: Add test.
* doc/guix.texi (Invoking guix-daemon): Document the options.
(Common Build Options): Properly describe default
timeout/max-silent-time value.  Add cross-ref to "Invoking
guix-daemon".
This commit is contained in:
Ludovic Courtès 2017-06-03 23:55:31 +02:00
parent 20214f7115
commit 2ca9f51ec8
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
3 changed files with 71 additions and 2 deletions

View file

@ -145,3 +145,39 @@ guile -c '
(exit
(= 42 (pk (call-with-input-file (derivation->output-path drv)
read)))))))'
kill "$daemon_pid"
# Make sure the daemon's default 'timeout' and 'max-silent-time' settings are
# honored.
client_code='
(use-modules (guix) (gnu packages) (guix tests) (srfi srfi-34))
(with-store store
(let* ((build (add-text-to-store store "build.sh"
"while true ; do : ; done"))
(bash (add-to-store store "bash" #t "sha256"
(search-bootstrap-binary "bash"
(%current-system))))
(drv (derivation store "the-thing" bash
`("-e" ,build)
#:inputs `((,bash) (,build))
#:env-vars `(("x" . ,(random-text))))))
(exit (guard (c ((nix-protocol-error? c)
(->bool
(string-contains (pk (nix-protocol-error-message c))
"failed"))))
(build-derivations store (list drv))
#f))))'
for option in --max-silent-time=1 --timeout=1
do
guix-daemon --listen="$socket" --disable-chroot "$option" &
daemon_pid=$!
GUIX_DAEMON_SOCKET="$socket" guile -c "$client_code"
kill "$daemon_pid"
done