guix system: Make 'init' idempotent again.
This fixes a regression introduced in df2f6400b1fbc282ef4d6dd7124ea1c17adc23c2: since the new 'register-path' (actually 'reset-timestamps') would make files read-only, 'delete-file-recursively' would fail to delete them. Thus, re-running 'guix system init' on an already-populated store would fail with a 'delete-file' EPERM. * guix/scripts/system.scm (copy-item): Use 'lstat' instead of 'file-exists?'. Call 'make-file-writable' on each directory below DEST.
This commit is contained in:
parent
90b144d22d
commit
f3f1d0a557
|
@ -126,7 +126,11 @@ REFERENCES as its set of references."
|
||||||
;; Remove DEST if it exists to make sure that (1) we do not fail badly
|
;; 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
|
;; while trying to overwrite it (see <http://bugs.gnu.org/20722>), and
|
||||||
;; (2) we end up with the right contents.
|
;; (2) we end up with the right contents.
|
||||||
(when (file-exists? dest)
|
(when (false-if-exception (lstat dest))
|
||||||
|
(for-each make-file-writable
|
||||||
|
(find-files dest (lambda (file stat)
|
||||||
|
(eq? 'directory (stat:type stat)))
|
||||||
|
#:directories? #t))
|
||||||
(delete-file-recursively dest))
|
(delete-file-recursively dest))
|
||||||
|
|
||||||
(copy-recursively item dest
|
(copy-recursively item dest
|
||||||
|
|
Loading…
Reference in New Issue