* [bug#34228] [PATCH 0/5] Display a progress bar for on-going builds
@ 2019-01-27 22:14 Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 1/5] status: Record more information about builds Ludovic Courtès
2019-01-29 11:11 ` bug#34228: [PATCH 0/5] Display a progress bar for on-going builds Ludovic Courtès
0 siblings, 2 replies; 8+ messages in thread
From: Ludovic Courtès @ 2019-01-27 22:14 UTC (permalink / raw)
To: 34228
Hello Guix!
Some build tools (CMake, Ninja, GHC, etc.) emit progress reports
like “[ 3/42]”. This patch series is about making use of them
to display a progress bar for on-going builds on --verbosity=1.
This can be tested for example with ‘ghc-libmpd’, ‘hugin’,
‘libinput’, or with our ‘module-import-compiled.drv’. With
‘libinput’ and ‘hugin’ you get a second progress bar starting
anew for the tests, but that’s reasonable I think. Eventually,
we could prefix the progress bar by the name of the build phase.
The completion percentage is kept in <build> records referenced
by the <build-status> record. Then we simply display it as
needed. (guix self) will now also emit appropriate progress
reports so that ‘guix pull -v1’ is able to print progress bars.
(I had initially implemented it with <build-status> unchanged
and arranged to do the regexp-matching dance only upon ‘-v1’,
but the implementation turned out to be somewhat ugly and it’s
probably OK to regexp-exec build output lines in general—we
already do it for colorization anyway.)
Feedback welcome!
Ludo’.
Ludovic Courtès (5):
status: Record more information about builds.
status: Keep track of build completion as reported by build tools.
status: Print a progress bar for on-going builds when possible.
self: Produce progress reports compatible with (guix status).
pull: Default to verbosity level 1.
guix/scripts/pull.scm | 2 +-
guix/self.scm | 18 +++--
guix/status.scm | 157 +++++++++++++++++++++++++++++++++++-------
tests/status.scm | 59 ++++++++++++----
4 files changed, 195 insertions(+), 41 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [bug#34228] [PATCH 1/5] status: Record more information about builds.
2019-01-27 22:14 [bug#34228] [PATCH 0/5] Display a progress bar for on-going builds Ludovic Courtès
@ 2019-01-27 22:26 ` Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 2/5] status: Keep track of build completion as reported by build tools Ludovic Courtès
` (3 more replies)
2019-01-29 11:11 ` bug#34228: [PATCH 0/5] Display a progress bar for on-going builds Ludovic Courtès
1 sibling, 4 replies; 8+ messages in thread
From: Ludovic Courtès @ 2019-01-27 22:26 UTC (permalink / raw)
To: 34228
* guix/status.scm (<build>): New record type.
(build, matching-build): New procedures.
(compute-status): Adjust to manipulate <build> records instead of
derivation file names in 'build-status-builds-completed' and
'build-status-building'.
(build-event-output-port)[process-line]: Use 'string-split' to preserve
spaces.
* tests/status.scm ("compute-status, builds + substitutes")
("compute-status, missing events"): Adjust to expect <build> records.
Produce complete "build-started" events.
("compute-status, multiplexed build output"): Likewise, and remove
"bar.drv" from 'builds-completed'.
---
guix/status.scm | 76 +++++++++++++++++++++++++++++++++++++-----------
tests/status.scm | 28 +++++++++---------
2 files changed, 74 insertions(+), 30 deletions(-)
diff --git a/guix/status.scm b/guix/status.scm
index 93e119bed1..0a5ff59236 100644
--- a/guix/status.scm
+++ b/guix/status.scm
@@ -50,6 +50,11 @@
build-status-builds-completed
build-status-downloads-completed
+ build?
+ build
+ build-derivation
+ build-system
+
download?
download
download-item
@@ -85,15 +90,28 @@
;; Builds and substitutions performed by the daemon.
(define-record-type* <build-status> build-status make-build-status
build-status?
- (building build-status-building ;list of drv
+ (building build-status-building ;list of <build>
(default '()))
(downloading build-status-downloading ;list of <download>
(default '()))
- (builds-completed build-status-builds-completed ;list of drv
+ (builds-completed build-status-builds-completed ;list of <build>
(default '()))
- (downloads-completed build-status-downloads-completed ;list of store items
+ (downloads-completed build-status-downloads-completed ;list of <download>
(default '())))
+;; On-going or completed build.
+(define-record-type <build>
+ (%build derivation id system log-file)
+ build?
+ (derivation build-derivation) ;string (.drv file name)
+ (id build-id) ;#f | integer
+ (system build-system) ;string
+ (log-file build-log-file)) ;#f | string
+
+(define* (build derivation system #:key id log-file)
+ "Return a new build."
+ (%build derivation id system log-file))
+
;; On-going or completed downloads. Downloads can be stem from substitutes
;; and from "builtin:download" fixed-output derivations.
(define-record-type <download>
@@ -113,6 +131,11 @@
"Return a new download."
(%download item uri size start end transferred))
+(define (matching-build drv)
+ "Return a predicate that matches builds of DRV."
+ (lambda (build)
+ (string=? drv (build-derivation build))))
+
(define (matching-download item)
"Return a predicate that matches downloads of ITEM."
(lambda (download)
@@ -126,15 +149,29 @@
"Given EVENT, a tuple like (build-started \"/gnu/store/...-foo.drv\" ...),
compute a new status based on STATUS."
(match event
- (('build-started drv _ ...)
- (build-status
- (inherit status)
- (building (cons drv (build-status-building status)))))
+ (('build-started drv "-" system log-file . rest)
+ (let ((build (build drv system
+ #:id (match rest
+ ((pid . _) (string->number pid))
+ (_ #f))
+ #:log-file (if (string-null? log-file)
+ #f
+ log-file))))
+ (build-status
+ (inherit status)
+ (building (cons build (build-status-building status))))))
(((or 'build-succeeded 'build-failed) drv _ ...)
- (build-status
- (inherit status)
- (building (delete drv (build-status-building status)))
- (builds-completed (cons drv (build-status-builds-completed status)))))
+ (let ((build (find (matching-build drv)
+ (build-status-building status))))
+ ;; If BUILD is #f, this may be because DRV corresponds to a
+ ;; fixed-output derivation that is listed as a download.
+ (if build
+ (build-status
+ (inherit status)
+ (building (delq build (build-status-building status)))
+ (builds-completed
+ (cons build (build-status-builds-completed status))))
+ status)))
;; Note: Ignore 'substituter-started' and 'substituter-succeeded' because
;; they're not as informative as 'download-started' and
@@ -146,10 +183,11 @@ compute a new status based on STATUS."
;; because ITEM is different from DRV's output.
(build-status
(inherit status)
- (building (remove (lambda (drv)
- (equal? (false-if-exception
- (derivation-path->output-path drv))
- item))
+ (building (remove (lambda (build)
+ (let ((drv (build-derivation build)))
+ (equal? (false-if-exception
+ (derivation-path->output-path drv))
+ item)))
(build-status-building status)))
(downloading (cons (download item uri #:size size
#:start (current-time time-monotonic))
@@ -394,7 +432,7 @@ addition to build events."
(N_ "The following build is still in progress:~%~{ ~a~%~}~%"
"The following builds are still in progress:~%~{ ~a~%~}~%"
(length ongoing))
- ongoing))))
+ (map build-derivation ongoing)))))
(('build-failed drv . _)
(format port (failure (G_ "build of ~a failed")) drv)
(newline port)
@@ -570,7 +608,11 @@ The second return value is a thunk to retrieve the current state."
(define (process-line line)
(cond ((string-prefix? "@ " line)
- (match (string-tokenize (string-drop line 2))
+ ;; Note: Drop the trailing \n, and use 'string-split' to preserve
+ ;; spaces (the log file part of 'build-started' events can be the
+ ;; empty string.)
+ (match (string-split (string-drop (string-drop-right line 1) 2)
+ #\space)
(("build-log" (= string->number pid) (= string->number len))
(set! %build-output-pid pid)
(set! %build-output '())
diff --git a/tests/status.scm b/tests/status.scm
index 08a3153218..e3ea768968 100644
--- a/tests/status.scm
+++ b/tests/status.scm
@@ -36,18 +36,18 @@
(test-equal "compute-status, builds + substitutes"
(list (build-status
- (building '("foo.drv"))
+ (building (list (build "foo.drv" "x86_64-linux")))
(downloading (list (download "bar" "http://example.org/bar"
#:size 500
#:start 'now))))
(build-status
- (building '("foo.drv"))
+ (building (list (build "foo.drv" "x86_64-linux")))
(downloading (list (download "bar" "http://example.org/bar"
#:size 500
#:transferred 42
#:start 'now))))
(build-status
- (builds-completed '("foo.drv"))
+ (builds-completed (list (build "foo.drv" "x86_64-linux")))
(downloads-completed (list (download "bar" "http://example.org/bar"
#:size 500
#:transferred 500
@@ -58,7 +58,7 @@
(compute-status event status
#:current-time
(const 'now))))))
- (display "@ build-started foo.drv\n" port)
+ (display "@ build-started foo.drv - x86_64-linux \n" port)
(display "@ substituter-started bar\n" port)
(display "@ download-started bar http://example.org/bar 500\n" port)
(display "various\nthings\nget\nwritten\n" port)
@@ -76,7 +76,8 @@
(test-equal "compute-status, missing events"
(list (build-status
- (building '("foo.drv"))
+ (building (list (build "foo.drv" "x86_64-linux"
+ #:log-file "foo.log")))
(downloading (list (download "baz" "http://example.org/baz"
#:size 500
#:transferred 42
@@ -86,7 +87,8 @@
#:transferred 0
#:start 'now))))
(build-status
- (builds-completed '("foo.drv"))
+ (builds-completed (list (build "foo.drv" "x86_64-linux"
+ #:log-file "foo.log")))
(downloads-completed (list (download "baz" "http://example.org/baz"
#:size 500
#:transferred 500
@@ -103,7 +105,7 @@
(compute-status event status
#:current-time
(const 'now))))))
- (display "@ build-started foo.drv\n" port)
+ (display "@ build-started foo.drv - x86_64-linux foo.log\n" port)
(display "@ download-started bar http://example.org/bar 999\n" port)
(display "various\nthings\nget\nwritten\n" port)
(display "@ download-progress baz http://example.org/baz 500 42\n"
@@ -136,19 +138,19 @@
(test-equal "compute-status, multiplexed build output"
(list (build-status
- (building '("foo.drv"))
+ (building (list (build "foo.drv" "x86_64-linux" #:id 121)))
(downloading (list (download "bar" "http://example.org/bar"
#:size 999
#:start 'now))))
(build-status
- (building '("foo.drv"))
+ (building (list (build "foo.drv" "x86_64-linux" #:id 121)))
(downloading (list (download "bar" "http://example.org/bar"
#:size 999
#:transferred 42
#:start 'now))))
(build-status
- ;; XXX: Should "bar.drv" be present twice?
- (builds-completed '("bar.drv" "foo.drv"))
+ ;; "bar" is now only listed as a download.
+ (builds-completed (list (build "foo.drv" "x86_64-linux" #:id 121)))
(downloads-completed (list (download "bar" "http://example.org/bar"
#:size 999
#:transferred 999
@@ -162,8 +164,8 @@
#:derivation-path->output-path
(match-lambda
("bar.drv" "bar")))))))
- (display "@ build-started foo.drv 121\n" port)
- (display "@ build-started bar.drv 144\n" port)
+ (display "@ build-started foo.drv - x86_64-linux 121\n" port)
+ (display "@ build-started bar.drv - armhf-linux bar.log 144\n" port)
(display "@ build-log 121 6\nHello!" port)
(display "@ build-log 144 50
@ download-started bar http://example.org/bar 999\n" port)
--
2.20.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [bug#34228] [PATCH 2/5] status: Keep track of build completion as reported by build tools.
2019-01-27 22:26 ` [bug#34228] [PATCH 1/5] status: Record more information about builds Ludovic Courtès
@ 2019-01-27 22:26 ` Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 3/5] status: Print a progress bar for on-going builds when possible Ludovic Courtès
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Ludovic Courtès @ 2019-01-27 22:26 UTC (permalink / raw)
To: 34228
* guix/status.scm (<build>)[completion]: New field.
(build): Add #:completion parameter.
(%percentage-line-rx, %fraction-line-rx): New variables.
(update-build): New procedure.
(compute-status): Add 'build-log' case.
* tests/status.scm ("compute-status, build completion"): New test.
---
guix/status.scm | 62 ++++++++++++++++++++++++++++++++++++++++++++----
tests/status.scm | 31 ++++++++++++++++++++++++
2 files changed, 89 insertions(+), 4 deletions(-)
diff --git a/guix/status.scm b/guix/status.scm
index 0a5ff59236..0435d14d6a 100644
--- a/guix/status.scm
+++ b/guix/status.scm
@@ -101,16 +101,17 @@
;; On-going or completed build.
(define-record-type <build>
- (%build derivation id system log-file)
+ (%build derivation id system log-file completion)
build?
(derivation build-derivation) ;string (.drv file name)
(id build-id) ;#f | integer
(system build-system) ;string
- (log-file build-log-file)) ;#f | string
+ (log-file build-log-file) ;#f | string
+ (completion build-completion)) ;#f | integer (percentage)
-(define* (build derivation system #:key id log-file)
+(define* (build derivation system #:key id log-file completion)
"Return a new build."
- (%build derivation id system log-file))
+ (%build derivation id system log-file completion))
;; On-going or completed downloads. Downloads can be stem from substitutes
;; and from "builtin:download" fixed-output derivations.
@@ -141,6 +142,57 @@
(lambda (download)
(string=? item (download-item download))))
+(define %percentage-line-rx
+ ;; Things like CMake write lines like "[ 10%] gcc -c …". This regexp
+ ;; matches them.
+ (make-regexp "^[[:space:]]*\\[ *([0-9]+)%\\]"))
+
+(define %fraction-line-rx
+ ;; The 'compiled-modules' derivations and Ninja produce reports like
+ ;; "[ 1/32]" at the beginning of each line, while GHC prints "[ 6 of 45]".
+ ;; This regexp matches these.
+ (make-regexp "^[[:space:]]*\\[ *([0-9]+) *(/|of) *([0-9]+)\\]"))
+
+(define (update-build status id line)
+ "Update STATUS based on LINE, a build output line for ID that might contain
+a completion indication."
+ (define (set-completion b %)
+ (build (build-derivation b)
+ (build-system b)
+ #:id (build-id b)
+ #:log-file (build-log-file b)
+ #:completion %))
+
+ (define (find-build)
+ (find (lambda (build)
+ (and (build-id build)
+ (= (build-id build) id)))
+ (build-status-building status)))
+
+ (define (update %)
+ (let ((build (find-build)))
+ (build-status
+ (inherit status)
+ (building (cons (set-completion build %)
+ (delq build (build-status-building status)))))))
+
+ (cond ((string-any #\nul line)
+ ;; Don't try to match a regexp here.
+ status)
+ ((regexp-exec %percentage-line-rx line)
+ =>
+ (lambda (match)
+ (let ((% (string->number (match:substring match 1))))
+ (update %))))
+ ((regexp-exec %fraction-line-rx line)
+ =>
+ (lambda (match)
+ (let ((done (string->number (match:substring match 1)))
+ (total (string->number (match:substring match 3))))
+ (update (* 100. (/ done total))))))
+ (else
+ status)))
+
(define* (compute-status event status
#:key
(current-time current-time)
@@ -242,6 +294,8 @@ compute a new status based on STATUS."
(current-time time-monotonic))
#:transferred transferred)
downloads)))))
+ (('build-log (? integer? pid) line)
+ (update-build status pid line))
(_
status)))
diff --git a/tests/status.scm b/tests/status.scm
index e3ea768968..f3afadfcd0 100644
--- a/tests/status.scm
+++ b/tests/status.scm
@@ -180,4 +180,35 @@
(display "@ build-succeeded bar.drv\n" port)
(list first second (get-status))))))
+(test-equal "compute-status, build completion"
+ (list (build-status
+ (building (list (build "foo.drv" "x86_64-linux" #:id 121))))
+ (build-status
+ (building (list (build "foo.drv" "x86_64-linux" #:id 121
+ #:completion 0.))))
+ (build-status
+ (building (list (build "foo.drv" "x86_64-linux" #:id 121
+ #:completion 50.))))
+ (build-status
+ (builds-completed (list (build "foo.drv" "x86_64-linux" #:id 121
+ #:completion 100.)))))
+ (let-values (((port get-status)
+ (build-event-output-port (lambda (event status)
+ (compute-status event status
+ #:current-time
+ (const 'now))))))
+ (display "@ build-started foo.drv - x86_64-linux 121\n" port)
+ (display "@ build-log 121 6\nHello!" port)
+ (let ((first (get-status)))
+ (display "@ build-log 121 20\n[ 0/100] building X\n" port)
+ (display "@ build-log 121 6\nHello!" port)
+ (let ((second (get-status)))
+ (display "@ build-log 121 20\n[50/100] building Y\n" port)
+ (display "@ build-log 121 6\nHello!" port)
+ (let ((third (get-status)))
+ (display "@ build-log 121 21\n[100/100] building Z\n" port)
+ (display "@ build-log 121 6\nHello!" port)
+ (display "@ build-succeeded foo.drv\n" port)
+ (list first second third (get-status)))))))
+
(test-end "status")
--
2.20.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [bug#34228] [PATCH 3/5] status: Print a progress bar for on-going builds when possible.
2019-01-27 22:26 ` [bug#34228] [PATCH 1/5] status: Record more information about builds Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 2/5] status: Keep track of build completion as reported by build tools Ludovic Courtès
@ 2019-01-27 22:26 ` Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 4/5] self: Produce progress reports compatible with (guix status) Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 5/5] pull: Default to verbosity level 1 Ludovic Courtès
3 siblings, 0 replies; 8+ messages in thread
From: Ludovic Courtès @ 2019-01-27 22:26 UTC (permalink / raw)
To: 34228
* guix/status.scm (print-build-event)[report-build-progress]: New
procedure.
[print-log-line]: Add ID parameter. Call 'report-build-progress' when
appropriate.
Adjust callers.
---
guix/status.scm | 27 +++++++++++++++++++++------
1 file changed, 21 insertions(+), 6 deletions(-)
diff --git a/guix/status.scm b/guix/status.scm
index 0435d14d6a..e3375816c5 100644
--- a/guix/status.scm
+++ b/guix/status.scm
@@ -441,14 +441,29 @@ addition to build events."
(cut colorize-string <> 'RED 'BOLD)
identity))
+ (define (report-build-progress %)
+ (let ((% (min (max % 0) 100))) ;sanitize
+ (erase-current-line port)
+ (format port "~3d% " (inexact->exact (round %)))
+ (display (progress-bar % (- (current-terminal-columns) 5))
+ port)
+ (force-output port)))
+
(define print-log-line
(if print-log?
(if colorize?
- (lambda (line)
+ (lambda (id line)
(display (colorize-log-line line) port))
- (cut display <> port))
- (lambda (line)
- (spin! port))))
+ (lambda (id line)
+ (display line port)))
+ (lambda (id line)
+ (match (build-status-building status)
+ ((build) ;single job
+ (match (build-completion build)
+ ((? number? %) (report-build-progress %))
+ (_ (spin! port))))
+ (_
+ (spin! port))))))
(unless print-log?
(display "\r" port)) ;erase the spinner
@@ -552,7 +567,7 @@ addition to build events."
;; through.
(display line port)
(force-output port))
- (print-log-line line))
+ (print-log-line pid line))
(cond ((string-prefix? "substitute: " line)
;; The daemon prefixes early messages coming with 'guix
;; substitute' with "substitute:". These are useful ("updating
@@ -565,7 +580,7 @@ addition to build events."
(display (info (string-trim-right line)) port)
(newline))
(else
- (print-log-line line)))))
+ (print-log-line pid line)))))
(_
event)))
--
2.20.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [bug#34228] [PATCH 4/5] self: Produce progress reports compatible with (guix status).
2019-01-27 22:26 ` [bug#34228] [PATCH 1/5] status: Record more information about builds Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 2/5] status: Keep track of build completion as reported by build tools Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 3/5] status: Print a progress bar for on-going builds when possible Ludovic Courtès
@ 2019-01-27 22:26 ` Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 5/5] pull: Default to verbosity level 1 Ludovic Courtès
3 siblings, 0 replies; 8+ messages in thread
From: Ludovic Courtès @ 2019-01-27 22:26 UTC (permalink / raw)
To: 34228
* guix/self.scm (compiled-modules)[build](report-load)
(report-compilation): Write "[M/N]" progress reports.
Use line-buffering.
---
guix/self.scm | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/guix/self.scm b/guix/self.scm
index d1b8256802..f028bdbfdd 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -856,13 +856,23 @@ containing MODULE-FILES and possibly other files as well."
(define (report-load file total completed)
(display #\cr)
(format #t
- "loading...\t~5,1f% of ~d files" ;FIXME: i18n
+ "[~3@a/~3@a] loading...\t~5,1f% of ~d files"
+
+ ;; Note: Multiply TOTAL by two to account for the
+ ;; compilation phase that follows.
+ completed (* total 2)
+
(* 100. (/ completed total)) total)
(force-output))
(define (report-compilation file total completed)
(display #\cr)
- (format #t "compiling...\t~5,1f% of ~d files" ;FIXME: i18n
+ (format #t "[~3@a/~3@a] compiling...\t~5,1f% of ~d files"
+
+ ;; Add TOTAL to account for the load phase that came
+ ;; before.
+ (+ total completed) (* total 2)
+
(* 100. (/ completed total)) total)
(force-output))
@@ -874,8 +884,8 @@ containing MODULE-FILES and possibly other files as well."
#:report-load report-load
#:report-compilation report-compilation)))
- (setvbuf (current-output-port) 'none)
- (setvbuf (current-error-port) 'none)
+ (setvbuf (current-output-port) 'line)
+ (setvbuf (current-error-port) 'line)
(set! %load-path (cons #+module-tree %load-path))
(set! %load-path
--
2.20.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [bug#34228] [PATCH 5/5] pull: Default to verbosity level 1.
2019-01-27 22:26 ` [bug#34228] [PATCH 1/5] status: Record more information about builds Ludovic Courtès
` (2 preceding siblings ...)
2019-01-27 22:26 ` [bug#34228] [PATCH 4/5] self: Produce progress reports compatible with (guix status) Ludovic Courtès
@ 2019-01-27 22:26 ` Ludovic Courtès
3 siblings, 0 replies; 8+ messages in thread
From: Ludovic Courtès @ 2019-01-27 22:26 UTC (permalink / raw)
To: 34228
* guix/scripts/pull.scm (%default-options): Change 'verbosity to 1.
---
guix/scripts/pull.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index 41c7fb289a..32d55f5357 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -69,7 +69,7 @@
(multiplexed-build-output? . #t)
(graft? . #t)
(debug . 0)
- (verbosity . 2)))
+ (verbosity . 1)))
(define (show-help)
(display (G_ "Usage: guix pull [OPTION]...
--
2.20.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* bug#34228: [PATCH 0/5] Display a progress bar for on-going builds
2019-01-27 22:14 [bug#34228] [PATCH 0/5] Display a progress bar for on-going builds Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 1/5] status: Record more information about builds Ludovic Courtès
@ 2019-01-29 11:11 ` Ludovic Courtès
2019-01-29 11:49 ` [bug#34228] " Ricardo Wurmus
1 sibling, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2019-01-29 11:11 UTC (permalink / raw)
To: 34228-done
Ludovic Courtès <ludo@gnu.org> skribis:
> Some build tools (CMake, Ninja, GHC, etc.) emit progress reports
> like “[ 3/42]”. This patch series is about making use of them
> to display a progress bar for on-going builds on --verbosity=1.
Pushed!
2790b6670b pull: Default to verbosity level 1.
35dcaa119e self: Produce progress reports compatible with (guix status).
3854c6429c status: Print a progress bar for on-going builds when possible.
73a8681a16 status: Keep track of build completion as reported by build tools.
976ef2d978 status: Record more information about builds.
Ludo'.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [bug#34228] [PATCH 0/5] Display a progress bar for on-going builds
2019-01-29 11:11 ` bug#34228: [PATCH 0/5] Display a progress bar for on-going builds Ludovic Courtès
@ 2019-01-29 11:49 ` Ricardo Wurmus
0 siblings, 0 replies; 8+ messages in thread
From: Ricardo Wurmus @ 2019-01-29 11:49 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 34228-done
Ludovic Courtès <ludo@gnu.org> writes:
> Ludovic Courtès <ludo@gnu.org> skribis:
>
>> Some build tools (CMake, Ninja, GHC, etc.) emit progress reports
>> like “[ 3/42]”. This patch series is about making use of them
>> to display a progress bar for on-going builds on --verbosity=1.
>
> Pushed!
>
> 2790b6670b pull: Default to verbosity level 1.
> 35dcaa119e self: Produce progress reports compatible with (guix status).
> 3854c6429c status: Print a progress bar for on-going builds when possible.
> 73a8681a16 status: Keep track of build completion as reported by build tools.
> 976ef2d978 status: Record more information about builds.
This is great! Thank you!
--
Ricardo
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-01-29 11:51 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-27 22:14 [bug#34228] [PATCH 0/5] Display a progress bar for on-going builds Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 1/5] status: Record more information about builds Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 2/5] status: Keep track of build completion as reported by build tools Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 3/5] status: Print a progress bar for on-going builds when possible Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 4/5] self: Produce progress reports compatible with (guix status) Ludovic Courtès
2019-01-27 22:26 ` [bug#34228] [PATCH 5/5] pull: Default to verbosity level 1 Ludovic Courtès
2019-01-29 11:11 ` bug#34228: [PATCH 0/5] Display a progress bar for on-going builds Ludovic Courtès
2019-01-29 11:49 ` [bug#34228] " Ricardo Wurmus
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).