~ruther/guix-local

78acff7c11507c68b63ad289b2bbe396602b9dcf — Ludovic Courtès 10 years ago aea9b23
guix system: init: Overwrite the items in the target store.

Fixes <http://bugs.gnu.org/20722>.
Reported by Eric Bavier <ericbavier@openmailbox.org>.

* guix/scripts/system.scm (copy-item): Check whether DEST exists and remove it
  if it does.
1 files changed, 7 insertions(+), 0 deletions(-)

M guix/scripts/system.scm
M guix/scripts/system.scm => guix/scripts/system.scm +7 -0
@@ 76,6 76,13 @@
    (let ((dest  (string-append target item))
          (state (string-append target "/var/guix")))
      (format log-port "copying '~a'...~%" item)

      ;; Remove DEST if it exists to make sure that (1) we do not fail badly
      ;; while trying to overwrite it (see <http://bugs.gnu.org/20722>), and
      ;; (2) we end up with the right contents.
      (when (file-exists? dest)
        (delete-file-recursively dest))

      (copy-recursively item dest
                        #:log (%make-void-port "w"))