mbox series

[bug#42481,0/2] Printing a more concise build plan

Message ID 20200722214018.32353-1-ludo@gnu.org
Headers show
Series Printing a more concise build plan | expand

Message

Ludovic Courtès July 22, 2020, 9:40 p.m. UTC
Hello Guix!

These patches implement a suggestion Pierre made a while back:
showing by default fewer details about what will/would be built
or downloaded, and omitting info about grafts and hooks.

The verbosity level here is controlled via the existing
‘--verbosity’ or ‘-v’ flag (which thus now control two things).

Here are examples of the result:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix system disk-image --target=i586-pc-gnu gnu/system/examples/bare-hurd.tmpl -n --no-grafts
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
The following derivations would be built:
   /gnu/store/y2inlprxbigqvknm5qwjwsqgljxfbri4-disk-image.drv
   /gnu/store/gclxh7i8smp71hz0p7wcj6qkf377wigy-image-dir.drv
   /gnu/store/21fin1j5pnjzfwbc70wdpzl3iyjym8xp-genimage.cfg.drv
   /gnu/store/aqcziad6ghfaainjibpdfypc8m2rr1vm-partition.img.drv
   /gnu/store/484d4fd9q9827bc09ia8bi1dgxl8gpwn-grub.cfg.drv
   /gnu/store/nnldmy339w9xxnybir48w14yz2xk0pmx-system.drv

[...]

   /gnu/store/ddxz08xvasphckdralifb624y3c7hrkx-rc.drv
   /gnu/store/kq9qvn0m063m02cxf4kjipkf6x8vbvip-profile.drv
   /gnu/store/y9if6nrykcqfnzxvb4cci2nzhmz1ipx5-parameters.drv
   /gnu/store/w09j0p6126qcacylb455m5dn008yi04g-module-import.drv
49.9 MB would be downloaded
--8<---------------cut here---------------end--------------->8---

Same with grafts:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix system disk-image --target=i586-pc-gnu gnu/system/examples/bare-hurd.tmpl -n
36.2 MB would be downloaded
--8<---------------cut here---------------end--------------->8---

With ‘guix package’:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix install vim-full krita -n
The following packages would be installed:
   vim-full 8.2.1145
   krita    4.2.9

76.9 MB would be downloaded
$ ./pre-inst-env guix install vim-full krita -n --no-grafts
The following packages would be installed:
   vim-full 8.2.1145
   krita    4.2.9

The following derivation would be built:
   /gnu/store/shf0anw8l0y9hg4l8qp1fym4bvwq5kh9-profile.drv
76.9 MB would be downloaded
$ ./pre-inst-env guix install inkscape hugin -n
The following package would be upgraded:
   inkscape (dependencies or package changed)

The following package would be installed:
   hugin 2019.2.0

The following derivation would be built:
   /gnu/store/lsi56ap8lzchfy8y76y7wirzfiqvb3ca-hugin-2019.2.0.drv
46.2 MB would be downloaded
--8<---------------cut here---------------end--------------->8---

The current behavior is obtain with ‘-v2’, which remains the
default for ‘guix build’:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build inkscape hugin -n
The following derivation would be built:
   /gnu/store/lsi56ap8lzchfy8y76y7wirzfiqvb3ca-hugin-2019.2.0.drv
46.2 MB would be downloaded:
   /gnu/store/3jvjmwm0srgxxjwngv28bif8l4ksfbnp-autotrace-0.40.0-20190624.59
   /gnu/store/gg36g9h2nzmq4dzrcr21ndb09nybqys0-inkscape-1.0
   /gnu/store/n94n0ggdhck5a2prsd1r468x3p6i68p4-enblend-enfuse-4.2
   /gnu/store/89rj5fqcg48afgk99639ds602pgf92k4-cmake-minimal-3.16.5
   /gnu/store/0i4h5cf1a71pj319svzz88g2z07cvdk3-wxwidgets-3.0.5.1
   /gnu/store/bwz9f0lg9lxscj6jfcgxmzqng3s1f1n3-vigra-1.11.1
--8<---------------cut here---------------end--------------->8---

It’s also possible to use ‘-v0’ now.

How does that sound?

Personally, I’m find it a bit disconcerting that so few is displayed
when substitutes are available, but it also feels more “lightweight”
this way.  I really like that what would be built appears clearly,
whereas now you have to scroll up possibly several pages to find
that info, especially upon ‘guix upgrade’.

Feedback welcome!

Ludo’.

Ludovic Courtès (2):
  ui: Add #:verbosity to 'show-what-to-build'.
  scripts: Pass #:verbosity to 'build-notifier'.

 guix/scripts/archive.scm     |   2 +
 guix/scripts/build.scm       |   2 +
 guix/scripts/copy.scm        |   2 +
 guix/scripts/deploy.scm      |   4 +-
 guix/scripts/environment.scm |   2 +
 guix/scripts/pack.scm        |   2 +
 guix/scripts/package.scm     |   2 +
 guix/scripts/pull.scm        |   2 +
 guix/scripts/system.scm      |  11 ++-
 guix/ui.scm                  | 175 ++++++++++++++++++++++-------------
 10 files changed, 135 insertions(+), 69 deletions(-)

Comments

Ludovic Courtès July 31, 2020, 4:34 p.m. UTC | #1
Hello Guix!

Thoughts on this change?

I think it’s a good idea but I’d be happy to hear what people think!

  https://issues.guix.gnu.org/42481

Ludo’.

Ludovic Courtès <ludo@gnu.org> skribis:

> Hello Guix!
>
> These patches implement a suggestion Pierre made a while back:
> showing by default fewer details about what will/would be built
> or downloaded, and omitting info about grafts and hooks.
>
> The verbosity level here is controlled via the existing
> ‘--verbosity’ or ‘-v’ flag (which thus now control two things).
>
> Here are examples of the result:
>
> $ ./pre-inst-env guix system disk-image --target=i586-pc-gnu gnu/system/examples/bare-hurd.tmpl -n --no-grafts
> substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
> The following derivations would be built:
>    /gnu/store/y2inlprxbigqvknm5qwjwsqgljxfbri4-disk-image.drv
>    /gnu/store/gclxh7i8smp71hz0p7wcj6qkf377wigy-image-dir.drv
>    /gnu/store/21fin1j5pnjzfwbc70wdpzl3iyjym8xp-genimage.cfg.drv
>    /gnu/store/aqcziad6ghfaainjibpdfypc8m2rr1vm-partition.img.drv
>    /gnu/store/484d4fd9q9827bc09ia8bi1dgxl8gpwn-grub.cfg.drv
>    /gnu/store/nnldmy339w9xxnybir48w14yz2xk0pmx-system.drv
>
> [...]
>
>    /gnu/store/ddxz08xvasphckdralifb624y3c7hrkx-rc.drv
>    /gnu/store/kq9qvn0m063m02cxf4kjipkf6x8vbvip-profile.drv
>    /gnu/store/y9if6nrykcqfnzxvb4cci2nzhmz1ipx5-parameters.drv
>    /gnu/store/w09j0p6126qcacylb455m5dn008yi04g-module-import.drv
> 49.9 MB would be downloaded
>
>
> Same with grafts:
>
> $ ./pre-inst-env guix system disk-image --target=i586-pc-gnu gnu/system/examples/bare-hurd.tmpl -n
> 36.2 MB would be downloaded
>
>
> With ‘guix package’:
>
> $ ./pre-inst-env guix install vim-full krita -n
> The following packages would be installed:
>    vim-full 8.2.1145
>    krita    4.2.9
>
> 76.9 MB would be downloaded
> $ ./pre-inst-env guix install vim-full krita -n --no-grafts
> The following packages would be installed:
>    vim-full 8.2.1145
>    krita    4.2.9
>
> The following derivation would be built:
>    /gnu/store/shf0anw8l0y9hg4l8qp1fym4bvwq5kh9-profile.drv
> 76.9 MB would be downloaded
> $ ./pre-inst-env guix install inkscape hugin -n
> The following package would be upgraded:
>    inkscape (dependencies or package changed)
>
> The following package would be installed:
>    hugin 2019.2.0
>
> The following derivation would be built:
>    /gnu/store/lsi56ap8lzchfy8y76y7wirzfiqvb3ca-hugin-2019.2.0.drv
> 46.2 MB would be downloaded
>
>
> The current behavior is obtain with ‘-v2’, which remains the
> default for ‘guix build’:
>
> $ ./pre-inst-env guix build inkscape hugin -n
> The following derivation would be built:
>    /gnu/store/lsi56ap8lzchfy8y76y7wirzfiqvb3ca-hugin-2019.2.0.drv
> 46.2 MB would be downloaded:
>    /gnu/store/3jvjmwm0srgxxjwngv28bif8l4ksfbnp-autotrace-0.40.0-20190624.59
>    /gnu/store/gg36g9h2nzmq4dzrcr21ndb09nybqys0-inkscape-1.0
>    /gnu/store/n94n0ggdhck5a2prsd1r468x3p6i68p4-enblend-enfuse-4.2
>    /gnu/store/89rj5fqcg48afgk99639ds602pgf92k4-cmake-minimal-3.16.5
>    /gnu/store/0i4h5cf1a71pj319svzz88g2z07cvdk3-wxwidgets-3.0.5.1
>    /gnu/store/bwz9f0lg9lxscj6jfcgxmzqng3s1f1n3-vigra-1.11.1
>
> It’s also possible to use ‘-v0’ now.
>
> How does that sound?
>
> Personally, I’m find it a bit disconcerting that so few is displayed
> when substitutes are available, but it also feels more “lightweight”
> this way.  I really like that what would be built appears clearly,
> whereas now you have to scroll up possibly several pages to find
> that info, especially upon ‘guix upgrade’.
>
> Feedback welcome!
>
> Ludo’.
>
> Ludovic Courtès (2):
>   ui: Add #:verbosity to 'show-what-to-build'.
>   scripts: Pass #:verbosity to 'build-notifier'.
>
>  guix/scripts/archive.scm     |   2 +
>  guix/scripts/build.scm       |   2 +
>  guix/scripts/copy.scm        |   2 +
>  guix/scripts/deploy.scm      |   4 +-
>  guix/scripts/environment.scm |   2 +
>  guix/scripts/pack.scm        |   2 +
>  guix/scripts/package.scm     |   2 +
>  guix/scripts/pull.scm        |   2 +
>  guix/scripts/system.scm      |  11 ++-
>  guix/ui.scm                  | 175 ++++++++++++++++++++++-------------
>  10 files changed, 135 insertions(+), 69 deletions(-)
Mathieu Othacehe July 31, 2020, 6:18 p.m. UTC | #2
Hey Ludo,

> Thoughts on this change?
>
> I think it’s a good idea but I’d be happy to hear what people think!

Most of the times, I'm reading the build plan only for one purpose, stop
the command if I'm going to build (too many) things.

Trying to think more like a newcomer (recent DistroTube video helps in that
matter), I feel like information such as grafts and profile hooks are
way too low level.

So this serie looks really fine to me.

Small digression, something that troubles me in the aforementioned video
is that many things were apparently built. I don't know if besides
improving our CI, we could do other things, such as warn with more
insistence if the Guix version is too old?

Thanks,

Mathieu
Marius Bakke July 31, 2020, 7:03 p.m. UTC | #3
Ludovic Courtès <ludo@gnu.org> writes:

> Hello Guix!
>
> Thoughts on this change?
>
> I think it’s a good idea but I’d be happy to hear what people think!
>
>   https://issues.guix.gnu.org/42481

I think it looks great.  It's good that 'guix build' retains the
previous verbosity, and that 'guix upgrade' et.al still prints the
profile derivation, but omits the uninteresting stuff.  LGTM!
Ludovic Courtès Aug. 3, 2020, 3:49 p.m. UTC | #4
Hi!

Mathieu Othacehe <othacehe@gnu.org> skribis:

> Most of the times, I'm reading the build plan only for one purpose, stop
> the command if I'm going to build (too many) things.
>
> Trying to think more like a newcomer (recent DistroTube video helps in that
> matter), I feel like information such as grafts and profile hooks are
> way too low level.

Yeah, that’s also my feeling.

Marius Bakke <marius@gnu.org> skribis:

> I think it looks great.  It's good that 'guix build' retains the
> previous verbosity, and that 'guix upgrade' et.al still prints the
> profile derivation, but omits the uninteresting stuff.  LGTM!

Alright, pushed as 898e6d0a07e4260600d0876d8d1f551ac8b647f9, thanks!

Ludo’.