Subject: bug#32837: closed (Re: [bug#32837] [PATCH 0/5] Improvements to the UI with colors)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 27 Sep 2018 22:33:02 +0000

Your bug report

#32837: [PATCH 0/5] Improvements to the UI with colors

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
32837: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=32837
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [bug#32837] [PATCH 0/5] Improvements to the UI with colors
From: [email-masked] (Ludovic Courtès)
To: Ricardo Wurmus <[email-masked]>
Cc: [email-masked], Danny Milosavljevic <[email-masked]>
Date: Fri, 28 Sep 2018 00:31:39 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

Ricardo Wurmus <[email-masked]> skribis:

>> Let me know what you think!  I’d be happy to go ahead with this variant
>> soon.  :-)
>
> I really like this patch series.  It implements a very flexible
> mechanism that allows us to track the build state more accurately.  In
> fact, it would enable a GUI developer to display the build progress in
> an intuitive way that is a few steps removed from the raw build log
> style.

Yeah, that’s my hope too.  We would need Fibers/coroutines to make a
neat (G)UI, and also better multiplexing of build logs when max-jobs > 1
(the “extended build traces” are not full proof: we can’t guarantee
they’ll appear at the beginning of a line currently), but it’s a first
step.

> I noticed a few typos in patch 4/5:

Fixed!

Thanks Danny for reviewing, and thank you Ricardo for reviewing,
testing, and for the suggestions, which led to a much improved patch!

> As to the way we display build progress: we can improve on that later.
> The mechanism proposed in this patch series is very nice and I’d love to
> see it merged soon.

I have a snippet here to estimate build time based on past build logs,
we’ll see…

I’ve pushed the patches as 240a9c69a6064544a616acc521c993542c364948,
with a daemon update in 5abcb1b0e6fe849d206b3683444c76d91f21a3d4.

Bug reports & suggestions welcome!

Ludo’.

Subject: [PATCH 0/5] Improvements to the UI with colors
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Cc: Ricardo Wurmus <[email-masked]>,Ludovic Courtès <[email-masked]>
Date: Tue, 25 Sep 2018 17:11:40 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello Guix!

This is a followup to the UI work by Sahithi and Ricardo:

  https://issues.guix.info/issue/32634

The output of ‘guix build’ is almost the same as on ‘master’.

The main difference is for ‘guix package’: downloads URLs are
now displayed, “updating substitutes from URL” messages and
download progress bars are back, both for substitutes and for
‘url-fetch’ kind of downloads, and max-jobs > 1 is reasonably
well handled.  Upon failure the file name of the build log
is printed.

‘guix pack’ and ‘guix environment’ produce output similar to
that of ‘guix build’ (that is, build logs are shown.)  ‘guix system
{init,reconfigure}’ produce concise output similar to ‘guix package’.
Other ‘guix system’ sub-commands produce verbose output like
‘guix build’.

Internally everything is handled by the (guix status) module.
This module keeps track of the on-going and completed builds and
downloads (substitutes and fixed-output derivations.)  To do that
the build side is modified to print additional machine-readable
“build traces” (with the new #:print-extended-build-traces? option
of ‘set-build-options’.)

Old clients talking to the new daemon won’t see the difference
because build-side code will produce the same output as before.
New clients talking to an old daemon won’t be able to display
progress bars and URLs for downloads because the build side
won’t produce those “extended build traces”; IOW, it should be
as on current ‘master’.

It would be great if people could give it a try and report back!
You’ll have to run:

  guix pull --branch=wip-ui

and then you can try building things with and without substitutes,
with ‘guix package’, with ‘guix build’, etc.

If we agree on the mechanism, then we can always fine-tune the
output later.

Thanks,
Ludo’.

Ludovic Courtès (5):
  progress: 'progress-reporter-report!' takes any number of arguments.
  substitute: Progress port really closes underlying port.
  progress: Add 'display-download-progress'.
  Add (guix status) and use it for pretty colored output.
  perform-download: Optionally report a "download-progress" trace.

 .dir-locals.el                    |   1 +
 Makefile.am                       |   2 +
 guix/build/download.scm           |  31 +-
 guix/progress.scm                 | 106 ++++---
 guix/scripts/build.scm            |  15 +-
 guix/scripts/environment.scm      | 110 +++----
 guix/scripts/pack.scm             | 140 ++++-----
 guix/scripts/package.scm          |  24 +-
 guix/scripts/perform-download.scm |  17 +-
 guix/scripts/substitute.scm       |  44 ++-
 guix/scripts/system.scm           |  11 +-
 guix/status.scm                   | 463 ++++++++++++++++++++++++++++++
 guix/store.scm                    |  14 +-
 guix/ui.scm                       | 108 +------
 nix/libstore/builtins.cc          |   5 +-
 po/guix/POTFILES.in               |   1 +
 tests/status.scm                  | 115 ++++++++
 17 files changed, 901 insertions(+), 306 deletions(-)
 create mode 100644 guix/status.scm
 create mode 100644 tests/status.scm

-- 
2.19.0