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
next prev parent 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