diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-12-09 21:50:21 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-12-15 17:32:09 +0100 |
commit | 465d2cb286170933577de045e6e6dad7205bfe10 (patch) | |
tree | 7dba0ec00536a6fa8483f88e11e3adbe682ccbf4 /guix | |
parent | 7a2897149d60816c33c63b7b7254ad283f8c3602 (diff) | |
download | guix-patches-465d2cb286170933577de045e6e6dad7205bfe10.tar guix-patches-465d2cb286170933577de045e6e6dad7205bfe10.tar.gz |
serialization: 'fold-archive' notifies about directory processing completion.
* guix/serialization.scm (fold-archive): Call PROC with a
'directory-complete tag when done with a directory.
(restore-file): Handle it.
* guix/scripts/archive.scm (list-contents): Likewise.
* guix/scripts/challenge.scm (archive-contents): Likewise.
* tests/nar.scm ("write-file-tree + fold-archive"): Adjust accordingly.
Diffstat (limited to 'guix')
-rw-r--r-- | guix/scripts/archive.scm | 2 | ||||
-rw-r--r-- | guix/scripts/challenge.scm | 1 | ||||
-rw-r--r-- | guix/serialization.scm | 5 |
3 files changed, 7 insertions, 1 deletions
diff --git a/guix/scripts/archive.scm b/guix/scripts/archive.scm index c04baf9784..1f73fff711 100644 --- a/guix/scripts/archive.scm +++ b/guix/scripts/archive.scm @@ -347,6 +347,8 @@ output port." (match type ('directory (format #t "D ~a~%" file)) + ('directory-complete + #t) ('symlink (format #t "S ~a -> ~a~%" file content)) ((or 'regular 'executable) diff --git a/guix/scripts/challenge.scm b/guix/scripts/challenge.scm index 39bd2c1c0f..d0a456ac1d 100644 --- a/guix/scripts/challenge.scm +++ b/guix/scripts/challenge.scm @@ -210,6 +210,7 @@ taken since we do not import the archives." (cons `(,file ,type ,(port-sha256* port size)) result)))) ('directory result) + ('directory-complete result) ('symlink (cons `(,file ,type ,contents) result)))) '() diff --git a/guix/serialization.scm b/guix/serialization.scm index 836ad06caf..cc56134ef4 100644 --- a/guix/serialization.scm +++ b/guix/serialization.scm @@ -444,7 +444,8 @@ depends on TYPE." (file file) (token x)))))) (loop (read-string port) result))))) - (")" result) ;done with DIR + (")" ;done with DIR + (proc file 'directory-complete #f result)) (x (raise (condition @@ -463,6 +464,8 @@ Restore it as FILE." (match type ('directory (mkdir file)) + ('directory-complete + #t) ('symlink (symlink content file)) ((or 'regular 'executable) |