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

From: Ludovic Courtès <[email-masked]>
Date: Tue, 25 Sep 2018 17:11:40 +0200

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