[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
05/09: guix system: Simplify closure copy.
From: |
Ludovic Courtès |
Subject: |
05/09: guix system: Simplify closure copy. |
Date: |
Fri, 1 Dec 2017 10:00:38 -0500 (EST) |
civodul pushed a commit to branch master
in repository guix.
commit e4ecd51e239adba226709a793240cc6f1a396858
Author: Ludovic Courtès <address@hidden>
Date: Thu Nov 30 14:17:24 2017 +0100
guix system: Simplify closure copy.
* guix/scripts/system.scm (copy-item): Add 'references' argument and
remove 'references*' call. Turn into a non-monadic procedure.
(copy-closure): Remove initial call to 'references*'. Only pass ITEM to
'topologically-sorted*' since that's equivalent. Compute the list of
references corresponding to TO-COPY and pass it to 'copy-item'.
---
guix/scripts/system.scm | 67 +++++++++++++++++++++++--------------------------
1 file changed, 32 insertions(+), 35 deletions(-)
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index e50f1d8..acfa5fd 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -107,47 +107,44 @@ BODY..., and restore them."
(store-lift topologically-sorted))
-(define* (copy-item item target
+(define* (copy-item item references target
#:key (log-port (current-error-port)))
- "Copy ITEM to the store under root directory TARGET and register it."
- (mlet* %store-monad ((refs (references* item)))
- (let ((dest (string-append target item))
- (state (string-append target "/var/guix")))
- (format log-port "copying '~a'...~%" item)
-
- ;; 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)
- (delete-file-recursively dest))
-
- (copy-recursively item dest
- #:log (%make-void-port "w"))
-
- ;; Register ITEM; as a side-effect, it resets timestamps, etc.
- ;; Explicitly use "TARGET/var/guix" as the state directory, to avoid
- ;; reproducing the user's current settings; see
- ;; <http://bugs.gnu.org/18049>.
- (unless (register-path item
- #:prefix target
- #:state-directory state
- #:references refs)
- (leave (G_ "failed to register '~a' under '~a'~%")
- item target))
-
- (return #t))))
+ "Copy ITEM to the store under root directory TARGET and register it with
+REFERENCES as its set of references."
+ (let ((dest (string-append target item))
+ (state (string-append target "/var/guix")))
+ (format log-port "copying '~a'...~%" item)
+
+ ;; 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)
+ (delete-file-recursively dest))
+
+ (copy-recursively item dest
+ #:log (%make-void-port "w"))
+
+ ;; Register ITEM; as a side-effect, it resets timestamps, etc.
+ ;; Explicitly use "TARGET/var/guix" as the state directory, to avoid
+ ;; reproducing the user's current settings; see
+ ;; <http://bugs.gnu.org/18049>.
+ (unless (register-path item
+ #:prefix target
+ #:state-directory state
+ #:references references)
+ (leave (G_ "failed to register '~a' under '~a'~%")
+ item target))))
(define* (copy-closure item target
#:key (log-port (current-error-port)))
"Copy ITEM and all its dependencies to the store under root directory
TARGET, and register them."
- (mlet* %store-monad ((refs (references* item))
- (to-copy (topologically-sorted*
- (delete-duplicates (cons item refs)
- string=?))))
- (sequence %store-monad
- (map (cut copy-item <> target #:log-port log-port)
- to-copy))))
+ (mlet* %store-monad ((to-copy (topologically-sorted* (list item)))
+ (refs (mapm %store-monad references* to-copy)))
+ (for-each (cut copy-item <> <> target #:log-port log-port)
+ to-copy refs)
+
+ (return *unspecified*)))
(define* (install-bootloader installer-drv
#:key
- branch master updated (e695d79 -> c7ffbfe), Ludovic Courtès, 2017/12/01
- 01/09: progress: Factorize erase-in-line., Ludovic Courtès, 2017/12/01
- 02/09: progress: 'progress-bar' accounts for brackets., Ludovic Courtès, 2017/12/01
- 03/09: progress: Add 'progress-reporter/bar'., Ludovic Courtès, 2017/12/01
- 05/09: guix system: Simplify closure copy.,
Ludovic Courtès <=
- 09/09: gnu: guile: Add version 2.2.3., Ludovic Courtès, 2017/12/01
- 04/09: weather: Use (guix progress) for progress report., Ludovic Courtès, 2017/12/01
- 08/09: gnu: gnome-default-applications: Add Evince for PDF and PS., Ludovic Courtès, 2017/12/01
- 07/09: services: xorg: Add 'font-misc-misc' to the default font set., Ludovic Courtès, 2017/12/01
- 06/09: guix system: 'init' displays a progress bar while copying., Ludovic Courtès, 2017/12/01