Ludovic Courtès writes: > Christopher Baines skribis: > >> At least in guix weather, these changes make the progress bar actually appear. >> >> * guix/scripts/substitute.scm (fetch-narinfos): Use (guix progress) for >> progress reporting. > > Cool. I noticed that something was wrong with ‘guix weather’, but I > suspected it had to do with the order in which the erase-line sequence > and \r are sent. > >> - (lambda () >> - (display "\r\x1b[K" (current-error-port)) ;erase current line >> - (force-output (current-error-port)) >> - (format (current-error-port) >> - (G_ "updating substitutes from '~a'... ~5,1f%") >> - url (* 100. (/ done total))) >> - (set! done (+ 1 done))))) >> + (define fetch-narinfos-progress-reporter >> + (progress-reporter/bar (length paths))) > > The problem here is that we’d see a progress bar without knowing what it > represents. > > Besides, currently output from ‘guix substitute’ is printed as is by > client commands, regardless of whether stdout is a tty. The problem > already exists but it would become a bit more visible as logs get filled > with progress bars. Maybe it's best to circle back to fixing guix weather after trying to restructure some of the guix substitute code. I've made an initial attempt at moving things around in [1]. If the underlying code can live in a module, and then the substitute, weather and challenge scripts use that code with whatever UI stuff they want, maybe that will allow for better addressing this weather specific issue. 1: https://issues.guix.info/45409