offload: Recognize build failures due to lack of disk space.
Previously, if a remote build would fail due to lack of disk space, this would be considered a permanent failure and thus cached as a build failure if the local daemon runs with '--cache-failures'. * guix/scripts/offload.scm (transfer-and-offload): Upon 'nix-protocol-error?' call 'node-free-disk-space' and return 1 instead of 100 if the result if lower than 10 MiB.
This commit is contained in:
parent
63b0c3eacc
commit
b96e05aefd
1 changed files with 13 additions and 3 deletions
|
@ -367,9 +367,19 @@ (define store
|
|||
(derivation-file-name drv)
|
||||
(build-machine-name machine)
|
||||
(nix-protocol-error-message c))
|
||||
;; Use exit code 100 for a permanent build failure. The daemon
|
||||
;; interprets other non-zero codes as transient build failures.
|
||||
(primitive-exit 100)))
|
||||
(let* ((space (false-if-exception
|
||||
(node-free-disk-space (make-node session)))))
|
||||
|
||||
;; Use exit code 100 for a permanent build failure. The daemon
|
||||
;; interprets other non-zero codes as transient build failures.
|
||||
(if (and space (< space (* 10 (expt 2 20))))
|
||||
(begin
|
||||
(format (current-error-port)
|
||||
(G_ "build failure may have been caused by lack \
|
||||
of free disk space on '~a'~%")
|
||||
(build-machine-name machine))
|
||||
(primitive-exit 1))
|
||||
(primitive-exit 100)))))
|
||||
(parameterize ((current-build-output-port (build-log-port)))
|
||||
(build-derivations store (list drv))))
|
||||
|
||||
|
|
Loading…
Reference in a new issue