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.
This commit is contained in:
parent
7a2897149d
commit
465d2cb286
@ -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)
|
||||
|
@ -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))))
|
||||
'()
|
||||
|
@ -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)
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -218,8 +218,10 @@
|
||||
'(("R" directory #f)
|
||||
("R/dir" directory #f)
|
||||
("R/dir/exe" executable "1234")
|
||||
("R/dir" directory-complete #f)
|
||||
("R/foo" regular "abcdefg")
|
||||
("R/lnk" symlink "foo"))
|
||||
("R/lnk" symlink "foo")
|
||||
("R" directory-complete #f))
|
||||
|
||||
(let ()
|
||||
(define-values (port get-bytevector)
|
||||
|
Loading…
Reference in New Issue
Block a user