summaryrefslogtreecommitdiff
path: root/guix/serialization.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-12-14 17:59:32 +0100
committerLudovic Courtès <ludo@gnu.org>2020-12-19 23:25:01 +0100
commitc7c7f068c15e419aaf5ef616516aa5ad4e55c2fa (patch)
treef672bba546f451bb452174ebf24d30a68ea644ee /guix/serialization.scm
parent3c799ccb98ba2ea4c19747306289586e42ae493b (diff)
downloadguix-patches-c7c7f068c15e419aaf5ef616516aa5ad4e55c2fa.tar
guix-patches-c7c7f068c15e419aaf5ef616516aa5ad4e55c2fa.tar.gz
daemon: Delegate deduplication to 'guix substitute'.
This removes the main source of latency between subsequent downloads. * nix/libstore/build.cc (SubstitutionGoal::tryToRun): Add a "deduplicate" key to ENV. (SubstitutionGoal::finished): Remove call to 'optimisePath'. * guix/scripts/substitute.scm (process-substitution)[destination-in-store?] [dump-file/deduplicate*]: New variables. Pass #:dump-file to 'restore-file'. * guix/scripts/substitute.scm (guix-substitute)[deduplicate?]: New variable. Pass #:deduplicate? to 'process-substitution'. * guix/serialization.scm (dump-file): Export and augment 'dump-file'.
Diffstat (limited to 'guix/serialization.scm')
-rw-r--r--guix/serialization.scm8
1 files changed, 6 insertions, 2 deletions
diff --git a/guix/serialization.scm b/guix/serialization.scm
index 9e2dce8bb0..59cd93fb18 100644
--- a/guix/serialization.scm
+++ b/guix/serialization.scm
@@ -51,7 +51,8 @@
write-file
write-file-tree
fold-archive
- restore-file))
+ restore-file
+ dump-file))
;;; Comment:
;;;
@@ -458,7 +459,10 @@ depends on TYPE."
(&nar-read-error (port port) (file file) (token x)))))))))
(define (dump-file file input size type)
- "Dump SIZE bytes from INPUT to FILE."
+ "Dump SIZE bytes from INPUT to FILE.
+
+This procedure is suitable for use as the #:dump-file argument to
+'restore-file'."
(call-with-output-file file
(lambda (output)
(dump input output size))))