summary refs log tree commit diff
path: root/gnu/build
diff options
context:
space:
mode:
authorChris Marusich <cmmarusich@gmail.com>2018-03-15 05:09:11 +0100
committerChris Marusich <cmmarusich@gmail.com>2018-03-24 03:04:10 +0100
commitaf81311b8c7712db207927c8e7b8ed66602be5c7 (patch)
tree5d7ba0da9b16fd3980521e9482e6e5a6e7aebc1a /gnu/build
parent272c07096251ea3dae237fd016fc5d66fe25e147 (diff)
downloadguix-af81311b8c7712db207927c8e7b8ed66602be5c7.tar.gz
vm: Allow control of deduplication in root-partition-initializer.
* gnu/build/vm.scm (root-partition-initializer): Add #:deduplicate?
  keyword argument.
Diffstat (limited to 'gnu/build')
-rw-r--r--gnu/build/vm.scm13
1 files changed, 9 insertions, 4 deletions
diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm
index 7f6801b9dd..4268ad1111 100644
--- a/gnu/build/vm.scm
+++ b/gnu/build/vm.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -307,11 +308,14 @@ it, run its initializer, and unmount it."
 (define* (root-partition-initializer #:key (closures '())
                                      copy-closures?
                                      (register-closures? #t)
-                                     system-directory)
+                                     system-directory
+                                     (deduplicate? #t))
   "Return a procedure to initialize a root partition.
 
-If REGISTER-CLOSURES? is true, register all of CLOSURES is the partition's
-store.  If COPY-CLOSURES? is true, copy all of CLOSURES to the partition.
+If REGISTER-CLOSURES? is true, register all of CLOSURES in the partition's
+store.  If DEDUPLICATE? is true, then also deduplicate files common to
+CLOSURES and the rest of the store when registering the closures.  If
+COPY-CLOSURES? is true, copy all of CLOSURES to the partition.
 SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation."
   (lambda (target)
     (define target-store
@@ -336,7 +340,8 @@ SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation."
       (display "registering closures...\n")
       (for-each (lambda (closure)
                   (register-closure target
-                                    (string-append "/xchg/" closure)))
+                                    (string-append "/xchg/" closure)
+                                    #:deduplicate? deduplicate?))
                 closures)
       (unless copy-closures?
         (umount target-store)))