[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
07/07: self: Add a progress report while loading modules.
From: |
Ludovic Courtès |
Subject: |
07/07: self: Add a progress report while loading modules. |
Date: |
Wed, 22 Nov 2017 09:02:47 -0500 (EST) |
civodul pushed a commit to branch wip-pull-reload
in repository guix.
commit 62dbd6e10b5317f8a167e40bf5a5421f48761c0e
Author: Ludovic Courtès <address@hidden>
Date: Wed Nov 22 10:58:17 2017 +0100
self: Add a progress report while loading modules.
* guix/self.scm (reload-guix): Use 'call-with-progress-reporter'. Use
'G_' for internationalization.
* po/guix/POTFILES.in: Add guix/self.scm.
---
guix/self.scm | 31 ++++++++++++++++++++++---------
po/guix/POTFILES.in | 1 +
2 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/guix/self.scm b/guix/self.scm
index 3067c74..98a809c 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -26,7 +26,9 @@
#:use-module (guix packages)
#:use-module (guix sets)
#:use-module (guix modules)
+ #:use-module (guix progress)
#:use-module (guix build utils)
+ #:use-module (guix i18n)
#:use-module (gnu packages)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
@@ -563,8 +565,11 @@ list of file-name/file-like objects suitable as inputs to
'imported-files'."
(resolve-module module #f #f
#:ensure #f))
(source-module-closure '((guix packages)))))
- (guix-submodules (recursive-submodules guix))
- (gnu-submodules (recursive-submodules gnu)))
+ (guix-submodules (lset-difference eq? (recursive-submodules guix)
core))
+ (gnu-submodules (recursive-submodules gnu))
+ (total (+ 2 (length (delete-duplicates
+ (append core guix-submodules
+ gnu-submodules))))))
(define (reload module)
;; Reload MODULE, unless it's already been reloaded indirectly in the
;; meantime.
@@ -579,18 +584,26 @@ list of file-name/file-like objects suitable as inputs to
'imported-files'."
;; end up with a mixture of old and new modules when we reload (which
;; wouldn't work, because we'd have two different <package> record types,
;; for instance.)
- (format log-port "Unloading current Guix...~%")
+ (format log-port (G_ "Unloading current Guix...~%"))
(unload-module-tree! gnu)
(unload-module-tree! guix)
;; When reloading, we compile the core modules and interpret the rest.
;; This appears to be the most efficient approach.
- (format log-port "Loading new Guix...~%")
- (for-each reload core)
- (set! %load-should-auto-compile #f)
- (for-each reload (append guix-submodules (list guix)))
- (for-each reload (append gnu-submodules (list gnu)))
- (format log-port "New modules successfully loaded.~%")))
+ (call-with-progress-reporter
+ (progress-reporter/bar total
+ (G_ "Loading new modules...")
+ log-port)
+ (lambda (report)
+ (let ((reload (lambda (module)
+ (report)
+ (reload module))))
+ (for-each reload core)
+ (set! %load-should-auto-compile #f)
+ (for-each reload (append guix-submodules (list guix)))
+ (for-each reload (append gnu-submodules (list gnu))))))
+
+ (format log-port (G_ "New modules successfully loaded.~%"))))
;;;
diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in
index 6510b99..616daad 100644
--- a/po/guix/POTFILES.in
+++ b/po/guix/POTFILES.in
@@ -9,6 +9,7 @@ gnu/system/shadow.scm
guix/scripts.scm
guix/scripts/build.scm
guix/discovery.scm
+guix/self.scm
guix/scripts/download.scm
guix/scripts/package.scm
guix/scripts/gc.scm
- branch wip-pull-reload created (now 62dbd6e), Ludovic Courtès, 2017/11/22
- 05/07: progress: Add 'progress-reporter/bar'., Ludovic Courtès, 2017/11/22
- 07/07: self: Add a progress report while loading modules.,
Ludovic Courtès <=
- 04/07: progress: 'progress-bar' accounts for brackets., Ludovic Courtès, 2017/11/22
- 03/07: progress: Factorize erase-in-line., Ludovic Courtès, 2017/11/22
- 02/07: DRAFT pull: Reload modules before doing anything else., Ludovic Courtès, 2017/11/22
- 06/07: weather: Use (guix progress) for progress report., Ludovic Courtès, 2017/11/22
- 01/07: gnu: Fix ambiguous 'zip' reference., Ludovic Courtès, 2017/11/22