View previous topic :: View next topic |
Author |
Message |
InfoManiac n00b
Joined: 23 Jan 2006 Posts: 53
|
Posted: Wed Mar 14, 2007 10:48 pm Post subject: Feature request: Emerge Progress |
|
|
It would be nice to have a progress indicator of some type built into Portage to show progress of:
sanity checks,
package configuration,
gcc compilation status,
progress of all objects being built,
overall progress,
how many packages left to go
As compared to some third party script that someone wrote long time ago, that sort of works but isn't guaranteed to work with portage.
Having this functionality being integrated so that when the status of where everything is at called by a script would be easily obtained.
That way you can know when to go do something else for a while or if things are wrapping up and time to do configs, etc. and return to working with the system. _________________ GIT-RRRR-DOOOONE! |
|
Back to top |
|
|
Conan Guru
Joined: 02 Nov 2004 Posts: 360
|
Posted: Wed Mar 14, 2007 10:56 pm Post subject: |
|
|
Its not possible to predict. There are two ways to take a stab at it but both have failings. |
|
Back to top |
|
|
InfoManiac n00b
Joined: 23 Jan 2006 Posts: 53
|
Posted: Thu Mar 15, 2007 12:13 am Post subject: |
|
|
Hmmmm.....I wonder if there is a way to possibly make a patch to all make, automake and gcc related packages that would either hack this in or make it so when a call is made portage can split off a separate process, or temporarily pause the current emerge and have it scan where it's at, what's done, what's not, etc.
However you've worked with this much more than I so I haven't any idea how any of this would work, if at all. _________________ GIT-RRRR-DOOOONE! |
|
Back to top |
|
|
Conan Guru
Joined: 02 Nov 2004 Posts: 360
|
Posted: Thu Mar 15, 2007 1:11 am Post subject: |
|
|
Wait--do you want progress of each phase or simply more detailed feedback of which phase things are in? The former is pretty much impossible to get right; the latter already occurs for most phases (xterm title updates)--though it doesn't inform on all phases. |
|
Back to top |
|
|
Dralnu Veteran
Joined: 24 May 2006 Posts: 1919
|
Posted: Thu Mar 15, 2007 1:35 am Post subject: |
|
|
If you want something to tell you how long an emerge will take - generally you can get an idea by the size of the download (has been my case, anyways). _________________ The day Microsoft makes a product that doesn't suck, is the day they make a vacuum cleaner. |
|
Back to top |
|
|
jpmayer87 n00b
Joined: 19 Mar 2006 Posts: 51 Location: Troy, NY
|
Posted: Thu Mar 15, 2007 1:54 am Post subject: |
|
|
Take a look at genlop. it's in portage. |
|
Back to top |
|
|
InfoManiac n00b
Joined: 23 Jan 2006 Posts: 53
|
Posted: Fri Mar 16, 2007 6:19 pm Post subject: |
|
|
Conan wrote: | Wait--do you want progress of each phase or simply more detailed feedback of which phase things are in? The former is pretty much impossible to get right; the latter already occurs for most phases (xterm title updates)--though it doesn't inform on all phases. |
More detailed feedback, so that when you are emerging world or (God forbid) something big like GCC, so I can check back as often as I like and see where the current package is as well as how many packages it has to go, and if it's able to provide it's best ETA for emerge to finish on the current package and how long the others will take.
Basically what I am requesting, more detailed all the objects, configs, etc. just for shits and giggles.
So I supposed to answer your question, I am looking for both. _________________ GIT-RRRR-DOOOONE! |
|
Back to top |
|
|
Dralnu Veteran
Joined: 24 May 2006 Posts: 1919
|
Posted: Sat Mar 17, 2007 4:06 am Post subject: |
|
|
InfoManiac wrote: | Conan wrote: | Wait--do you want progress of each phase or simply more detailed feedback of which phase things are in? The former is pretty much impossible to get right; the latter already occurs for most phases (xterm title updates)--though it doesn't inform on all phases. |
More detailed feedback, so that when you are emerging world or (God forbid) something big like GCC, so I can check back as often as I like and see where the current package is as well as how many packages it has to go, and if it's able to provide it's best ETA for emerge to finish on the current package and how long the others will take.
Basically what I am requesting, more detailed all the objects, configs, etc. just for shits and giggles.
So I supposed to answer your question, I am looking for both. |
Use screen and/or xterm. It should give you the current package number out of the total and the current step. _________________ The day Microsoft makes a product that doesn't suck, is the day they make a vacuum cleaner. |
|
Back to top |
|
|
InfoManiac n00b
Joined: 23 Jan 2006 Posts: 53
|
Posted: Sun Mar 18, 2007 9:20 pm Post subject: |
|
|
Yeah, I am aware of that , but it is the later that you mentioned I was inquiring on.
Is it possible for future builds of Portage to have this, and Mask a certain sub-version number of it until it's ready? _________________ GIT-RRRR-DOOOONE! |
|
Back to top |
|
|
rane Retired Dev
Joined: 03 Mar 2004 Posts: 306 Location: Warsaw, Poland
|
Posted: Sat Jun 23, 2007 8:08 am Post subject: |
|
|
Try this:
Code: | $ watch qlop -Cc
Every 2.0s: qlop -Cc Sat Jun 23 10:08:01 2007
* dev-libs/openssl-0.9.8e-r1.ebuild::gentoo
started: Sat Jun 23 10:07:51 2007
elapsed: 9 seconds
avg build time: 4 minutes, 53 seconds |
|
|
Back to top |
|
|
smono927 n00b
Joined: 03 Jul 2005 Posts: 13
|
Posted: Wed Jun 27, 2007 6:29 pm Post subject: qlop output |
|
|
Hey rane,
Output from "qlop -Cc" doesn't include average build time: Code: | * xorg-server-1.2.0-r3
started: Wed Jun 27 14:16:26 2007
elapsed: 11 minutes, 7 seconds |
qlop is version 1.36, as part of portage-utils version 0.1.23
Is there an updated version of qlop, or am I missing some setting? |
|
Back to top |
|
|
Genone Retired Dev
Joined: 14 Mar 2003 Posts: 9605 Location: beyond the rim
|
Posted: Fri Jun 29, 2007 2:37 am Post subject: |
|
|
Compilation progress bars have to be implemented in the build system (make, ant, ...), not in portage. |
|
Back to top |
|
|
coolsnowmen Veteran
Joined: 30 Jun 2004 Posts: 1479 Location: No.VA
|
Posted: Fri Jun 29, 2007 3:10 am Post subject: Re: qlop output |
|
|
smono927 wrote: | Hey rane,
Output from "qlop -Cc" doesn't include average build time: Code: | * xorg-server-1.2.0-r3
started: Wed Jun 27 14:16:26 2007
elapsed: 11 minutes, 7 seconds |
qlop is version 1.36, as part of portage-utils version 0.1.23
Is there an updated version of qlop, or am I missing some setting? |
if its anything like genlop -c....then it only estimates build time based on past build times...so if you've never emerged the package before, then it won't help you.
PS, I understand the mentality...but thats what solitaire games are for... _________________ emerge: there are no ebuilds to satisfy "moo" |
|
Back to top |
|
|
steveL Watchman
Joined: 13 Sep 2006 Posts: 5153 Location: The Peanut Gallery
|
Posted: Fri Jun 29, 2007 1:43 pm Post subject: Re: qlop output |
|
|
smono927 wrote: | Output from "qlop -Cc" doesn't include average build time
Is there an updated version of qlop, or am I missing some setting? |
Try qlop -Ht |
|
Back to top |
|
|
smono927 n00b
Joined: 03 Jul 2005 Posts: 13
|
Posted: Fri Jun 29, 2007 6:52 pm Post subject: Re: qlop output |
|
|
coolsnowmen wrote: | ...
if its anything like genlop -c....then it only estimates build time based on past build times...so if you've never emerged the package before, then it won't help you.
PS, I understand the mentality...but thats what solitaire games are for... |
I know it's based on past build times for my own machine: Code: | MiBox ~ # qlop -tH xorg-server
xorg-server: 2 hours, 49 minutes, 40 seconds for 3 merges |
I was wondering why output from "qlop -Cc" doesn't include known average build times like rane's.
steveL wrote: | Try qlop -Ht |
This requires a package argument, and doesn't work when combined with "-c" for the current package |
|
Back to top |
|
|
BigBrain n00b
Joined: 02 Jun 2007 Posts: 63
|
Posted: Sat Aug 18, 2007 6:14 pm Post subject: |
|
|
I'd like to have something like a progress bar, too:
Wouldn't it be possible to parse the makefile and count the number of source files that need to be compiled and write after each compiled file how many are left?
This would also be very nice at the configure script! |
|
Back to top |
|
|
steveL Watchman
Joined: 13 Sep 2006 Posts: 5153 Location: The Peanut Gallery
|
Posted: Sat Aug 18, 2007 6:54 pm Post subject: |
|
|
Hmm someone in #bash who used to run gentoo had a script to do just this, based on source files compiled. We were talking about adding it to update, but the thing is that it would slow your emerge down. Wouldn't an estimate of how long it was going to take, based on prior emerge times (with qlop) be enough? (That in itself is a bit dodgy since it includes emerges which didn't succeed.)
I guess we could look at incorporating lhunath's thing if enough people wanted it, as an option. Personally I wouldn't want to use it. |
|
Back to top |
|
|
Genone Retired Dev
Joined: 14 Mar 2003 Posts: 9605 Location: beyond the rim
|
Posted: Sat Aug 18, 2007 7:45 pm Post subject: |
|
|
BigBrain wrote: | I'd like to have something like a progress bar, too:
Wouldn't it be possible to parse the makefile and count the number of source files that need to be compiled and write after each compiled file how many are left?
This would also be very nice at the configure script! |
Genone wrote: | Compilation progress bars have to be implemented in the build system (make, ant, ...), not in portage. |
|
|
Back to top |
|
|
BigBrain n00b
Joined: 02 Jun 2007 Posts: 63
|
Posted: Sat Aug 18, 2007 8:06 pm Post subject: |
|
|
Oh I'm sorry, must have missed that |
|
Back to top |
|
|
Mantaar Apprentice
Joined: 17 May 2007 Posts: 219
|
Posted: Sat Aug 18, 2007 8:24 pm Post subject: |
|
|
There are build systems that already include progress indicators, but they're not widely used. Back then, when the standard stuff was implemented such functionality wasn't that much of a big concern.
A recent Gentoo Newsletter featured some information on how you can find out the past average build times of certain packages or fetch the information for your processor type via Internet. The results are blurry though:
Code: | $ genlop -t mozilla-firefox
* www-client/mozilla-firefox
Sat Jul 7 22:43:24 2007 >>> www-client/mozilla-firefox-2.0.0.4
merge time: 31 minutes and 30 seconds.
Wed Jul 25 00:31:18 2007 >>> www-client/mozilla-firefox-2.0.0.5
merge time: 1 hour, 6 minutes and 15 seconds.
Thu Aug 2 18:22:20 2007 >>> www-client/mozilla-firefox-2.0.0.6
merge time: 1 hour, 19 minutes and 5 seconds.
Wed Aug 8 21:51:22 2007 >>> www-client/mozilla-firefox-2.0.0.6
merge time: 1 hour, 6 minutes and 24 seconds.
|
As you can see, merge times vary considerably, depending on the load of the machine during build time.
One could imagine an extension to portage that would take this information into account to show an estimated build time (though it would be nice if this was taking a look at the load averages periodically, since they have a vast influence on how long the build is going to take)... this could be displayed in the xterm title... _________________ Error compiling committee.c: too many arguments to function. |
|
Back to top |
|
|
Dralnu Veteran
Joined: 24 May 2006 Posts: 1919
|
Posted: Sat Aug 18, 2007 11:53 pm Post subject: |
|
|
Mantaar wrote: | There are build systems that already include progress indicators, but they're not widely used. Back then, when the standard stuff was implemented such functionality wasn't that much of a big concern.
A recent Gentoo Newsletter featured some information on how you can find out the past average build times of certain packages or fetch the information for your processor type via Internet. The results are blurry though:
Code: | $ genlop -t mozilla-firefox
* www-client/mozilla-firefox
Sat Jul 7 22:43:24 2007 >>> www-client/mozilla-firefox-2.0.0.4
merge time: 31 minutes and 30 seconds.
Wed Jul 25 00:31:18 2007 >>> www-client/mozilla-firefox-2.0.0.5
merge time: 1 hour, 6 minutes and 15 seconds.
Thu Aug 2 18:22:20 2007 >>> www-client/mozilla-firefox-2.0.0.6
merge time: 1 hour, 19 minutes and 5 seconds.
Wed Aug 8 21:51:22 2007 >>> www-client/mozilla-firefox-2.0.0.6
merge time: 1 hour, 6 minutes and 24 seconds.
|
As you can see, merge times vary considerably, depending on the load of the machine during build time.
One could imagine an extension to portage that would take this information into account to show an estimated build time (though it would be nice if this was taking a look at the load averages periodically, since they have a vast influence on how long the build is going to take)... this could be displayed in the xterm title... |
I don't know how much work it would take, but what about keeping up with how much time the program spent in the CPU compiling, instead of working from a start/stop time? _________________ The day Microsoft makes a product that doesn't suck, is the day they make a vacuum cleaner. |
|
Back to top |
|
|
Mantaar Apprentice
Joined: 17 May 2007 Posts: 219
|
Posted: Sun Aug 19, 2007 12:22 am Post subject: |
|
|
Well, it's not all about CPU-time... there's disk IO and other stuff (ooo takes a whole lot of time to actually install.
But measuring the CPU-time instead of real time is probably not a bad idea. I must admit, however, that I don't know enough about the topic to really predict how hard/easy all of this may be... _________________ Error compiling committee.c: too many arguments to function. |
|
Back to top |
|
|
Genone Retired Dev
Joined: 14 Mar 2003 Posts: 9605 Location: beyond the rim
|
Posted: Sun Aug 19, 2007 12:56 am Post subject: |
|
|
There would be three parts to that:
a) how to measure it? This isn't only about the implementation, but also semantic decisions (like which phases should be measured).
b) how to export it? Existing system uses timestamps in emerge.log to calculate the duration of a build, to export the duration directly you'd have to find another way (without breaking existing tools)
c) adjust tools to use the new system. This should be the easiest part. |
|
Back to top |
|
|
Dralnu Veteran
Joined: 24 May 2006 Posts: 1919
|
Posted: Sun Aug 19, 2007 5:59 am Post subject: |
|
|
While disk I/O is a serious part of all this, getting an idea on the time spent in the CPU to try and figure out the time needed to compile would be one thing. Trying to measure the I/O required might be going overboard, since I've got a feeling most of us can, after awhile, figure about how long it would take to copy a file from point A to point B and back, but thats coming from a guy who can give you an idea on how long it will take to compile a program based on downloaded size on his own system.
@Genone:
A) That would be the hard part of it all. I'd probably suggest measuring the time needed to run the ./config script (if there is one, and if this would be reasonably doable), otherwise I'd probably suggest just measuring the whole make proccess itself and call it good.
B) Without knowing alot of the internals, I wouldn't even begin to try and figure that one out. Maybe export is as a count of CPU cycles into emerge.log? _________________ The day Microsoft makes a product that doesn't suck, is the day they make a vacuum cleaner. |
|
Back to top |
|
|
steveL Watchman
Joined: 13 Sep 2006 Posts: 5153 Location: The Peanut Gallery
|
Posted: Mon Aug 20, 2007 10:45 am Post subject: |
|
|
Genone wrote: | There would be three parts to that:
a) how to measure it? This isn't only about the implementation, but also semantic decisions (like which phases should be measured).
b) how to export it? Existing system uses timestamps in emerge.log to calculate the duration of a build, to export the duration directly you'd have to find another way (without breaking existing tools)
c) adjust tools to use the new system. This should be the easiest part. |
Personally I don't think it's worth trying to measure individual phases, and I'd be happy if there was just an indicator based on prior successful builds (as opposed to every time emerge had been run for the package) but I don't see this as the job of the package manager as it stands now. I really think it's worth separating what portage does now (maintaining the installation in a sane state, resolving dependencies and building packages) from higher-level stuff which users ask for (effectively automating as much of the decision-making wrt running the package manager, in terms of failures, unblocking and the like, and ofc presentation.) The latter is newer stuff and at a different level to the complexities portage currently manages very well.
It's a natural separation which makes it easier for people coding either side of the line, since they don't have to worry about a whole set of responsibilities, and portage has always had a good API for scriptwriters (where the API is ofc how the commands are run, what parameters they take and which environment variables affect the process, as well as the content of configuration files.) Portage also has an effective Python API which is used by other tools already. |
|
Back to top |
|
|
|