[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#44760: [PATCH 01/15] serialization: 'fold-archive' notifies about di
From: |
Ludovic Courtès |
Subject: |
bug#44760: [PATCH 01/15] serialization: 'fold-archive' notifies about directory processing completion. |
Date: |
Fri, 11 Dec 2020 16:09:11 +0100 |
* 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.
---
guix/scripts/archive.scm | 2 ++
guix/scripts/challenge.scm | 1 +
guix/serialization.scm | 5 ++++-
tests/nar.scm | 6 ++++--
4 files changed, 11 insertions(+), 3 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)
diff --git a/tests/nar.scm b/tests/nar.scm
index aeff3d3330..b542ebd47c 100644
--- a/tests/nar.scm
+++ b/tests/nar.scm
@@ -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)
--
2.29.2
- bug#44760: [PATCH 00/15] Speed up 'guix system init' & co., Ludovic Courtès, 2020/12/11
- bug#44760: [PATCH 02/15] serialization: 'restore-file' sets canonical timestamp and permissions., Ludovic Courtès, 2020/12/11
- bug#44760: [PATCH 01/15] serialization: 'fold-archive' notifies about directory processing completion.,
Ludovic Courtès <=
- bug#44760: [PATCH 03/15] nar: Deduplicate files right as they are restored., Ludovic Courtès, 2020/12/11
- bug#44760: [PATCH 04/15] store-copy: 'populate-store' resets timestamps., Ludovic Courtès, 2020/12/11
- bug#44760: [PATCH 05/15] image: 'register-closure' assumes already-reset timestamps., Ludovic Courtès, 2020/12/11
- bug#44760: [PATCH 09/15] database: Remove #:deduplicate? from 'register-items'., Ludovic Courtès, 2020/12/11
- bug#44760: [PATCH 07/15] store-copy: 'populate-store' can optionally deduplicate files., Ludovic Courtès, 2020/12/11
- bug#44760: [PATCH 06/15] database: Remove #:reset-timestamps? from 'register-items'., Ludovic Courtès, 2020/12/11
- bug#44760: [PATCH 08/15] image: 'register-closure' leaves it up to the caller to deduplicate., Ludovic Courtès, 2020/12/11
- bug#44760: [PATCH 00/15] Speed up 'guix system init' & co., Ludovic Courtès, 2020/12/15