guix system: Make 'init' idempotent again.
This fixes a regression introduced in
df2f6400b1: 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
					
				
					 1 changed files with 5 additions and 1 deletions
				
			
		|  | @ -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 | ||||
|     ;; while trying to overwrite it (see <http://bugs.gnu.org/20722>), and | ||||
|     ;; (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)) | ||||
| 
 | ||||
|     (copy-recursively item dest | ||||
|  |  | |||
		Reference in a new issue