guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: progress: Fix total size in "@ download-succeeded" traces.


From: Ludovic Courtès
Subject: 01/01: progress: Fix total size in "@ download-succeeded" traces.
Date: Fri, 5 Oct 2018 17:54:24 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 42384b517ed5352bb50fb9c0c5f49b168c198004
Author: Ludovic Courtès <address@hidden>
Date:   Fri Oct 5 23:05:19 2018 +0200

    progress: Fix total size in "@ download-succeeded" traces.
    
    Fixes a regression introduced in
    1d0be47ab680db938ac8da1ee65e1de91e198f67 whereby the total size for
    directories (coming from substitutes) would be 4KiB.  This led the
    progress bar to go back to the start, typically.
    
    * guix/progress.scm (progress-reporter/trace): Add 'total'.  In 'start',
    initialize it.  Adjust 'report' to update it.  Adjust 'stop' to prefer
    SIZE as the actual size and then TOTAL.  Do not use the size of FILE as
    the total since that could be 4KiB when FILE is a directory.
---
 guix/progress.scm | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/guix/progress.scm b/guix/progress.scm
index f846944..9da667a 100644
--- a/guix/progress.scm
+++ b/guix/progress.scm
@@ -289,6 +289,8 @@ tasks is performed.  Write PREFIX at the beginning of the 
line."
                                   #:optional (log-port (current-output-port)))
   "Like 'progress-reporter/file', but instead of returning human-readable
 progress reports, write \"build trace\" lines to be processed elsewhere."
+  (define total 0)                                ;bytes transferred
+
   (define (report-progress transferred)
     (define message
       (format #f "@ download-progress ~a ~a ~a ~a~%"
@@ -299,13 +301,16 @@ progress reports, write \"build trace\" lines to be 
processed elsewhere."
 
   (progress-reporter
    (start (lambda ()
+            (set! total 0)
             (display (format #f "@ download-started ~a ~a ~a~%"
                              file url (or size "-"))
                      log-port)))
-   (report (rate-limited report-progress %progress-interval))
+   (report (let ((report (rate-limited report-progress %progress-interval)))
+             (lambda (transferred)
+               (set! total transferred)
+               (report transferred))))
    (stop (lambda ()
-           (let ((size (or (and=> (stat file #f) stat:size)
-                           size)))
+           (let ((size (or size total)))
              (report-progress size)
              (display (format #f "@ download-succeeded ~a ~a ~a~%"
                               file url size)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]