summaryrefslogtreecommitdiff
path: root/guix/build
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-03-21 23:08:04 +0100
committerLudovic Courtès <ludo@gnu.org>2020-03-22 00:02:23 +0100
commit4a6ec23a9780bd75a7e527bd0dfb1943347869bb (patch)
treedb3317449ea9ddebc7423e6cc428229100823d15 /guix/build
parent70236bae9ea7b23191a5fc452323b6fa20f31242 (diff)
downloadgnu-guix-4a6ec23a9780bd75a7e527bd0dfb1943347869bb.tar
gnu-guix-4a6ec23a9780bd75a7e527bd0dfb1943347869bb.tar.gz
download: Delete the output file upon failure.
This allows ENOSPC conditions to be properly reported as such rather than as a hash mismatch due to the availability of a truncated file. Fixes <https://bugs.gnu.org/39993>. Reported by Maxim Cournoyer <maxim.cournoyer@gmail.com>. * guix/build/download.scm (url-fetch): In the failure case, delete FILE.
Diffstat (limited to 'guix/build')
-rw-r--r--guix/build/download.scm7
1 files changed, 7 insertions, 0 deletions
diff --git a/guix/build/download.scm b/guix/build/download.scm
index c647d00f6b..46af149b2f 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -693,6 +693,13 @@ otherwise simply ignore them."
(()
(format (current-error-port) "failed to download ~s from ~s~%"
file url)
+
+ ;; Remove FILE in case we made an incomplete download, for example due
+ ;; to ENOSPC.
+ (catch 'system-error
+ (lambda ()
+ (delete-file file))
+ (const #f))
#f))))
;;; download.scm ends here