public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Duncan <1i5t5.duncan@cox.net>
To: gentoo-dev@lists.gentoo.org
Subject: [gentoo-dev] Re: have portage be quiet by default
Date: Mon, 14 Nov 2011 23:17:20 +0000 (UTC)	[thread overview]
Message-ID: <pan.2011.11.14.23.17.20@cox.net> (raw)
In-Reply-To: 4EC1322B.2020602@gentoo.org

Zac Medico posted on Mon, 14 Nov 2011 07:22:19 -0800 as excerpted:

> On 11/14/2011 12:47 AM, Dirkjan Ochtman wrote:
>> On Mon, Nov 14, 2011 at 02:59, Zac Medico <zmedico@gentoo.org> wrote:
>>> Well, it's much easier to gather interest and get feedback if we
>>> deploy the change and ask questions later.
>> 
>> I like the new output, but find it kind of annoying that there's very
>> little feedback on how far the progress is within a single job. Perhaps
>> we could show the currently executing ebuild phase in order to give a
>> little more feedback? Maybe most packages are completely dominated by
>> src_compile(), but for smaller packages it would be helpful, IMO.
> 
> I think that would be an interesting option. I imagine that it would be
> too much information for many people, so I don't think that we'd want to
> enable it by default.

Thanks for thinking "out of the box". =:^)

This is one thing that I've found frustrating with parallel emerging, 
myself.

The first thing I discovered were that some phases (at least the merge 
phase, and I believe install) aren't counted, so the numbers don't 
entirely add up (complete + running + not-started + failed <> total).  
Thus, some packages appear to be simply sitting there doing nothing.  
When a whole bunch of packages are in that state, it appears emerge is 
doing nothing but consuming cycles and real-time, for no visible reason 
at all.

Since for a number of packages (I seem to notice it most on kde packages, 
but perhaps it's all C++ or most CMAKE or some such, plus of course 
primarily data packages that don't have a significant build phase but 
install many or large files) the install phase can be as intense as the 
build phase if not more so, so if some phases aren't counted in 
"running", then I'd definitely prefer they be counted /somewhere/.

Of course, listing the number of packages in each phase (which in single-
mode would by definition list the phase the single package is in) would 
cure the above issue at the same time.

Another problem, but one I'm not sure how to fix (tho the interactive 
display would offer opportunities here), is that it'd be nice to get a 
list of completed packages, in-process packages, and still not started 
packages.  That doesn't so easily fit in a neat summary, but as noted, 
the interactive proposal introduces quite some opportunity, here.

Alternatively, since often the real info desired is the status of a 
particular package, it'd be useful to have either an interactive command 
or a simple separate querying command, that can be run to query the 
status of a particular package.

*** Which brings up an alternative to the whole interactive emerges idea 
as well -- what about a separate command, say "emerging", that when run, 
would simply output a bunch of detail on any pending emerges?

This would certainly offer a safer initial implementation, as well, since 
it's less likely to break the current setup due to bugs, etc.  Another 
noted benefit is that it leaves the existing defaults alone, so it's not 
going to be threatening anyone's sacred cows (or scripted assumptions) in 
terms of how portage has always behaved. =:^)


So, perhaps improve the current "quiet" display marginally, either 
including all phases in "running" or adding another listing so the 
numbers add up, but more importantly...

*** Add a new "emerging" (name up for bikeshedding) command, that 
displays a nice multiline summary, perhaps something like this (the 
second emerge command was for a failure in the first, with a second 
attempt made before completion of the main emerge @world has completed):

Current emerge status:

2 emerge command(s) running.
7 emerge jobs outstanding.

Commands:

** emerge --upgrade --deep --newuse --keep-going @world

Status:

123 of 257 jobs complete, 1 failed, 6 running, 120 not yet started,
7 dependencies removed due to failures.

Running (6):

1 pkgsetup (cat-egory/package-ver)

1 configure (cat-egory/package-ver, cat-egory/package-ver)

2 build (cat-egory/package-ver, cat-egory/package-ver)

1 install (cat-egory/package-ver)

1 merge (cat-egory/package-ver)

Failed (1):

dev-libs/boost-1.47.0-r1

Complete (123):

<list		in		nice		columns>
...

Not started (120):

<list 		in		nice		columns>
...

Removed dependencies due to failure (7):

<list		in		nice		columns>
...


** emerge -u1 boost

Status:

0 of 1 jobs complete, 1 running.

Running (1):

1 build (dev-libs/boost-1.47.0-r1)

Obviously the first implementation might not have all the information 
above, and there might have been some nice information I missed and other 
information that could be displayed better, but it's a very cool idea 
even if I /do/ say so myself. =:^)

Note that zeroed-out listings aren't displayed, so the the --oneshot 
doesn't list failed, not yet started, etc, and inactive phases are also 
not displayed.

Also note how easy this sort of detailed display would make it to retry 
failed jobs and the resulting removed dependencies, once the failure has 
been resolved.

"emerging" could have a "repeat" mode as well as one-shot, with a polling-
delay parameter set to something sane like 30 or 60 seconds by default.  
That way, I wouldn't have to feed it to "watch" =:^)

Because this is a separate command, worries about TMI/TLI should be 
eliminated.  Additionally, it should go some way toward easing the whole 
quiet/noisy debate as well, since there's now another command available 
with an intermediate level of information.

Something like this:

edisplaylog 
If we then throw in one more tool, I'll call it edisplaylog for lack of a 
better name, that reads make.conf to find the elog dir, and can 
automatically pick out the latest log for a package, thus eliminating the 
trouble of doing it manually, that should help eliminate another 
objection to quiet-by-default.  So...

edisplaylog boost

... would find the last elog for boost and display it.

To make things easy for the user, simply ...

edisplaylog

... could be made to filetime search and display the last active log in 
tail -f mode.  If after say a couple seconds of no activity, it re-polled 
the log dir and switched to displaying a different log (have it list the 
log it's displaying at the top) if it was newer, that could pretty much 
replace "noisy" mode entirely.  =:^)

Obviously running simply "edisplaylog" by itself during a parallel-jobs 
emerge would be nearly as confusing as portage not automatically going 
into quiet mode for parallel emerging would be, tho not quite since it 
would display the logfile name at the top, but "edisplaylog <pkg>" would 
still be very useful, ESPECIALLY for those using --keep-going, so they 
could track down and fix whatever failed a build before the parallel 
emerge spit out the results at the end.

Talking about which... an "edisplaylog failed" mode, which would 
automatically find the last failure and displayed the log for it, could 
be very helpful as well. =:^)

Obviously all these ideas entail a lot of coding, and I realize it's easy 
to sit here and make requests without doing the coding, but implementing 
them as separate commands first and incremental implementation should 
help a lot, and I hadn't seen anything like this proposed yet, so...

I'll close with a thanks to Zac and everyone else who has already made 
portage the great tool it is today, because without them, we'd obviously 
not be having this discussion in the first place. =:^)

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman




  reply	other threads:[~2011-11-14 23:18 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-05  8:58 [gentoo-dev] [RFC] enable verbose build whenever it's possible Kacper Kowalik
2011-11-05  9:38 ` [gentoo-dev] " Ryan Hill
2011-11-05  9:53 ` [gentoo-dev] " Fabian Groffen
2011-11-05 10:27 ` Nirbheek Chauhan
2011-11-05 10:54   ` Fabio Erculiani
2011-11-05 11:05 ` Ulrich Mueller
2011-11-05 17:04   ` Michał Górny
2011-11-05 17:28     ` Kacper Kowalik
2011-11-05 13:09 ` Pacho Ramos
2011-11-05 20:00 ` Maciej Mrozowski
2011-11-05 20:55   ` Kacper Kowalik
2011-11-06  3:03   ` [gentoo-dev] " Ryan Hill
2012-04-02 22:24     ` Pacho Ramos
2012-04-02 22:34       ` Zac Medico
2012-04-02 22:40         ` Pacho Ramos
2011-11-11  0:09 ` [gentoo-dev] " Luca Barbato
2011-11-11  1:39   ` Mike Frysinger
2011-11-11  1:56     ` [gentoo-dev] have portage be quiet by default Mike Frysinger
2011-11-11  2:11       ` Zac Medico
2011-11-11  2:59         ` Mike Frysinger
2011-11-11  3:17           ` Zac Medico
2011-11-11  3:23             ` Zac Medico
2011-11-11 15:11               ` Mike Frysinger
2011-11-11 15:44                 ` Zac Medico
2011-11-12 22:24                   ` Patrick Lauer
2011-11-12 22:48                     ` Rafael Goncalves Martins
2011-11-12 23:40                     ` Mike Frysinger
2011-11-12 23:46                       ` Nirbheek Chauhan
2011-11-12 23:49                       ` Rafael Goncalves Martins
2011-11-13  2:00                         ` Mike Gilbert
2011-11-15 10:21                         ` Gilles Dartiguelongue
2011-11-13  0:05                       ` Hilco Wijbenga
2011-11-13  1:08                         ` [gentoo-dev] " Duncan
2011-11-13 11:43                       ` [gentoo-dev] " Markos Chandras
2011-11-13 12:39                       ` Thomas Sachau
2011-11-13 13:04                         ` Amadeusz Żołnowski
2011-11-13 13:59                           ` Thomas Sachau
2011-11-13 14:54                             ` Amadeusz Żołnowski
2011-11-13 15:49                               ` Thomas Sachau
2011-11-13 15:59                                 ` Rich Freeman
2011-11-13 16:13                                   ` Matthew Summers
2011-11-13 20:46                                 ` Zac Medico
2011-11-13 23:09                                   ` Thomas Sachau
2011-11-13 23:41                                     ` Zac Medico
2011-11-14  0:24                                       ` Chí-Thanh Christopher Nguyễn
2011-11-14  0:32                                         ` Zac Medico
2011-11-14  0:36                                           ` Chí-Thanh Christopher Nguyễn
2011-11-14  0:40                                             ` Zac Medico
2011-11-14  0:45                                               ` Chí-Thanh Christopher Nguyễn
2011-11-14  0:59                                                 ` Zac Medico
2011-11-14  1:07                                                   ` Chí-Thanh Christopher Nguyễn
2011-11-14  1:27                                       ` Thomas Sachau
2011-11-14  1:48                                         ` Chí-Thanh Christopher Nguyễn
2011-11-14  1:59                                         ` Zac Medico
2011-11-14  8:25                                           ` Alex Alexander
2011-11-14  8:50                                             ` JD Horelick
2011-11-14  9:39                                             ` Patrick Lauer
2011-11-14 16:29                                               ` Mike Frysinger
2011-11-14 15:19                                             ` Zac Medico
2011-11-15 12:27                                               ` Alex Alexander
2011-11-15 20:21                                                 ` Zac Medico
2011-11-14  8:47                                           ` Dirkjan Ochtman
2011-11-14 15:22                                             ` Zac Medico
2011-11-14 23:17                                               ` Duncan [this message]
2011-11-15 20:11                                                 ` [gentoo-dev] " Zac Medico
2011-11-16  1:50                                                   ` Duncan
2011-11-15 12:32                                               ` [gentoo-dev] " Alex Alexander
2011-11-14 12:17                                       ` Dale
2011-11-14 12:23                                         ` Amadeusz Żołnowski
2011-11-14 12:43                                           ` Dale
2011-11-14 12:49                                             ` Amadeusz Żołnowski
2011-11-14 13:11                                               ` Dale
2011-11-14 15:05                                                 ` Zac Medico
2011-11-13 14:54                             ` Rich Freeman
2011-11-13 16:24                           ` [gentoo-dev] " Duncan
2011-11-13 19:01                             ` Zac Medico
2011-11-14 12:36                               ` Dale
2011-11-14 17:21                                 ` Zac Medico
2011-11-14 17:38                                   ` Dale
2011-11-14 18:07                                     ` Zac Medico
2011-11-14 18:14                                       ` Ian Stakenvicius
2011-11-14 18:20                                         ` Zac Medico
2011-11-14 18:34                                       ` Dale
2011-11-14 18:55                                         ` Zac Medico
2011-11-14 22:06                                           ` Duncan
2011-11-14 19:02                                         ` Hilco Wijbenga
2011-11-14 19:16                                           ` Dale
2011-11-14 22:20                                         ` Alec Warner
2011-11-14 22:52                                       ` Chí-Thanh Christopher Nguyễn
2011-11-15  1:52                                         ` Zac Medico
2011-11-13 10:48                     ` [gentoo-dev] " "Paweł Hajdan, Jr."
2011-11-13 16:59                       ` Mike Frysinger
2011-11-13 19:08                         ` Markos Chandras
2011-11-13 19:15                           ` Zac Medico
2011-11-11  6:59         ` [gentoo-dev] " Duncan
2011-11-11 15:50           ` Zac Medico
2011-11-11 16:09             ` Mike Frysinger
2011-11-11  4:48       ` Ryan Hill

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pan.2011.11.14.23.17.20@cox.net \
    --to=1i5t5.duncan@cox.net \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox