summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-02-05 11:51:53 +0100
committerLudovic Courtès <ludo@gnu.org>2019-02-05 12:03:25 +0100
commit596fb4baf0c82dbf2bdba43171c743f26fa5b924 (patch)
tree1eaafaf4fcae3014cb8ad0a1174d8dacd1018226
parentba514b601ba6be15b823e0a12d4b6e42f9d2489e (diff)
status: Display the current build phase.
* guix/status.scm (spin!): Add 'phase' parameter and honor it. Callers updated. (print-build-event)[report-progress]: Likewise.
-rw-r--r--guix/status.scm33
1 files changed, 24 insertions, 9 deletions
diff --git a/guix/status.scm b/guix/status.scm
index c3c219219d..984f329964 100644
--- a/guix/status.scm
+++ b/guix/status.scm
@@ -345,14 +345,21 @@ build-log\" traces."
(define spin!
(let ((steps (circular-list "\\" "|" "/" "-")))
- (lambda (port)
- "Display a spinner on PORT."
+ (lambda (phase port)
+ "Display a spinner on PORT. If PHASE is true, display it as a hint of
+the current build phase."
(when (isatty?* port)
(match steps
((first . rest)
(set! steps rest)
(display "\r\x1b[K" port)
(display first port)
+ (when phase
+ (display " " port)
+ ;; TRANSLATORS: The word "phase" here denotes a "build phase";
+ ;; "~a" is a placeholder for the untranslated name of the current
+ ;; build phase--e.g., 'configure' or 'build'.
+ (format port (G_ "'~a' phase") phase))
(force-output port)))))))
(define (color-output? port)
@@ -458,12 +465,18 @@ addition to build events."
(cut colorize-string <> 'RED 'BOLD)
identity))
- (define (report-build-progress %)
+ (define (report-build-progress phase %)
(let ((% (min (max % 0) 100))) ;sanitize
(erase-current-line port)
- (format port "~3d% " (inexact->exact (round %)))
- (display (progress-bar % (- (current-terminal-columns) 5))
- port)
+ (let* ((prefix (format #f "~3d% ~@['~a' ~]"
+ (inexact->exact (round %))
+ (case phase
+ ((build) #f) ;not useful to display it
+ (else phase))))
+ (length (string-length prefix)))
+ (display prefix port)
+ (display (progress-bar % (- (current-terminal-columns) length))
+ port))
(force-output port)))
(define print-log-line
@@ -477,10 +490,12 @@ addition to build events."
(match (build-status-building status)
((build) ;single job
(match (build-completion build)
- ((? number? %) (report-build-progress %))
- (_ (spin! port))))
+ ((? number? %)
+ (report-build-progress (build-phase build) %))
+ (_
+ (spin! (build-phase build) port))))
(_
- (spin! port))))))
+ (spin! #f port))))))
(define erase-current-line*
(if (isatty?* port)