Commit Graph

251 Commits

Author SHA1 Message Date
espie
3db19612eb forgot that one commit for nojunk. Oops 2013-01-04 12:03:06 +00:00
espie
d17cfb86a3 tweak the Engine some more: don't bother adjusting distfiles in a loop
while dependencies are missing

Following landry's remark, also take packages to build out of the race
if some RUN_DEPENDS are going to be ignored. Only do it right before we
put the package in the queue, so that the test is run exactly once per
package instead of during every scan.

I was also worried about multi-packages, but this only takes one fullpkgpath
out of the loop, and "make package" is going to fail half-way through anyways.
2013-01-03 15:47:45 +00:00
espie
de678efd4a add support for unjunk property, that will prevent junking from actually
happening while some 'unjunk' ports are building.

this is a work-around for a known problem with cmake and qt4 include
dependency handlers...

Also, cache fullpkgpath while building a job, as this contributes for
a large part to the speed (not) of the display when building lots of
ports.
2013-01-03 15:45:18 +00:00
espie
59ee0568e8 stats are comparatively cheap, run them even when the engine doesn't run.
Yields more accurate stat output, where we can see a staircase effect on
the queue when the engine is run not that often, and Built actually go
up until it goes back down again.
2013-01-02 11:13:52 +00:00
espie
f86dbb772a allow overriding the start-up script from the command line. 2012-12-31 09:50:55 +00:00
espie
d985cc05e2 mismatches are more annoying than extra cpu:
if we end up with only mismatches and we didn't run check_buildable last
time around, try a check_buildable first.
2012-12-30 14:33:46 +00:00
espie
45b128b893 fix elusive "jobs don't show up where they should".
duh. put "live" affinity markers while we're building stuff.
We don't re-read the on-disk markers outside of restart (should we ?)
so they HAVE to be in the pkgpath struct proper.
2012-12-30 14:04:17 +00:00
espie
eb77a6071b why not ? track total distsize for each port. might correlate with other
stuff later.
2012-12-30 11:47:24 +00:00
espie
ad8ad1c28f smarter affinity mismatch handling: if we have other cores idle, ask them.
also, officialize the engine-perf log somewhat (and give it a more descriptive
name).
2012-12-29 19:15:37 +00:00
espie
fa169c69ae allow looking for a given core when trying to match affinity 2012-12-29 19:14:51 +00:00
espie
ebb2a2c90a on start-up, log affinity in a more consistent way, with pid of running dpb. 2012-12-29 19:14:28 +00:00
espie
c3a8df2e5f log the markers we retrieve on any restart... I suspect something foul
happening with localhost.
2012-12-28 21:09:45 +00:00
espie
7adbbd9561 remove optimization that no longer makes sense. 2012-12-28 06:40:11 +00:00
espie
d624d61917 since we have a quick path where stuff move from tobuild to install without
adjusting things, stuff that can be built may have BEXTRA which are not
completed...
2012-12-28 06:31:03 +00:00
espie
3ca05b12fe replace next_check = last_check + check_interval
tweak the algorithm slightly (since we forget the old check_interval).
In particular, never keep old times in reserve.

Makes for simpler and clearer reading
2012-12-27 16:23:17 +00:00
espie
e293bae75a remove the need to loop around adjust_tobuild, fudge things a bit:
Most things will move as a result of {install} changes.

Things that move because of EXTRA depends that are satisfied are unlikely to trigger
further changes.

So, stagger changes for "normal" tobuild -> queue first, and extra depends later.
2012-12-27 14:14:19 +00:00
espie
99ac03e94d oops 2012-12-27 12:20:36 +00:00
espie
fc5ee33b62 add timestamp in phases for Job/Port.pm.
may help synchronize events from distinct logs in case this matters.
2012-12-27 12:03:33 +00:00
espie
7614ffa97a remove 'dead' cycles: changes in ToBuild can't trigger new changes in Built. 2012-12-27 11:04:43 +00:00
espie
98849d8242 self-adaptive delay... with a bit of log scaffolding for now. 2012-12-25 20:41:41 +00:00
espie
67de0deb11 if we have a sizeable queue (>50) and we ran check_buildable less than 30s
ago, don't run it again right now.

This prevents the Engine from busy-checking the same data when it's building
lots of small packages very fast.

(50 and 30 may need some fine-tuning)
2012-12-25 16:07:02 +00:00
espie
11cb77656d make "rebuild" behavior a proper subclass of DPB::PortBuilder, instead
of having tests all over the place.

Take advantage of that to not rechecking signatures if already done.
2012-12-25 10:43:36 +00:00
espie
66b2639394 compute dependencies right away in the job: we don't actually have to
fork depends/prepare/prepare-results for ports which don't have any
depends.

This also prevents some lock contention, obviously.
2012-12-25 10:25:04 +00:00
espie
1af810c8d6 on rebuild, mark all existing files as 'uptodate'. Will prevent extra
rebuilds on @option always-update multi-packages when using -R.
2012-12-25 10:00:08 +00:00
espie
3de193b931 also take things off the later list if they were there. Prevents behavior
like the following:

14426@1356424364: B: x11/kde/graphics3
14426@1356424364: B: x11/kde/graphics3,-kpov
14426@1356424364: B: x11/kde/graphics3,-kamera
14426@1356424364: B: x11/kde/graphics3,-sane
14426@1356424364: B: x11/kde/graphics3,-main
14426@1356424364: V: x11/kde/graphics3,-kpov	<--- note put back on queue
14426@1356424364: V: x11/kde/graphics3
14426@1356424364: V: x11/kde/graphics3,-kamera
14426@1356424364: I: x11/kde/graphics3,-sane
14426@1356424364: I: x11/kde/graphics3
14426@1356424364: I: x11/kde/graphics3,-kamera
14426@1356424364: I: x11/kde/graphics3,-main
14426@1356424366: J: graphics/povray echo.home 0
14426@1356424496: B: devel/goffice
14426@1356424496: I: devel/goffice
14426@1356424496: Q: math/gnumeric
14426@1356424498: B: x11/kde/graphics3		<--- so, duh rebuilt...
14426@1356424498: B: x11/kde/graphics3,-main
14426@1356424498: B: x11/kde/graphics3,-kamera
14426@1356424498: B: x11/kde/graphics3,-sane
14426@1356424498: J: graphics/opencv,-docs echo.home 0
14426@1356424675: B: graphics/povray
14426@1356424675: I: x11/kde/graphics3,-sane
14426@1356424675: I: graphics/povray
14426@1356424675: I: x11/kde/graphics3		<-- and installable, again.
14426@1356424675: I: x11/kde/graphics3,-kpov
14426@1356424675: I: x11/kde/graphics3,-kamera
14426@1356424675: I: x11/kde/graphics3,-main
2012-12-25 09:46:24 +00:00
espie
130df9a3bc will work better with a non-reversed test... 2012-12-25 09:31:54 +00:00
espie
e4c671527c add affinity information to restart jobs on the right host preferentially.
- affinity info is similar to locks, but with a completely different
lifetime.
- streamline the main loop of the engine, so that it can do two passes:
first pass shuns paths with the wrong affinity. If no good path is found,
those are considered during the second pass.
- make the Core factory aware of what hosts might be running, so that
affinity info for machines removed from a config file will be ignored.

thanks to landry@ for a few tests.
2012-12-24 17:24:46 +00:00
espie
0ff5bc966a be slightly more aggressive when a pkgpath is done: for multi-packages,
zap all subpackages from the queue.

need to distinguish the normal case (is_done) with a simpler case
(is_done_quick) that's used when scanning the ports tree. Otherwise, we
would check multi-packages loads of time.
2012-12-24 17:22:15 +00:00
espie
c4f1bfc74e reorg the tests slightly, no functional change 2012-12-24 17:19:01 +00:00
espie
25bc62ba46 quicker restart: when adding a new_path, directly check whether it
was built already... so things will go straight to B/I instead of
getting through T/Q...
less noise in engine.log, and much more accurate information for choosing
queue items.
2012-12-21 12:26:16 +00:00
espie
440719fdce fix clean + check for packages interaction 2012-11-18 01:59:31 +00:00
espie
c2ac425fce multiplication doesn't work on undefined values... noticed by naddy@
so initialize $job->{waiting} if needed.
2012-11-09 17:49:17 +00:00
espie
d73a931704 don't mix up wait_timeout and waiting_timeout, as noticed by naddy@.
re-enable wait_timeout on localhost temporarily (should be done in another
way, most probably by checking whether repo is on nfs, we can steal code
from VStat.pm)

pass umask through ssh. This took us long enough to figure out, and it's
considerably simpler than tweaking every login class once again.
2012-11-06 08:26:29 +00:00
espie
8553ebea36 disable the waiting period if waiting_timeout is 0.
and don't do it on localhost
2012-10-13 09:06:55 +00:00
espie
3453d11c35 zap warnings 2012-10-13 08:47:32 +00:00
espie
302ada6ac0 tweaks
- waiting should know when it gets interrupted! so that it doesn't zombify
- add a time limit.
2012-10-13 08:32:58 +00:00
espie
76fe3e54e3 shrink msg 2012-10-12 22:18:10 +00:00
espie
0f91b47f42 -DALWAYS_CLEAN: clean ports even if they errored out (that's a prop, so
always_clean=1  in hosts file.

refactor task code a bit. And fix a buglet related to the NFS check
(wrong finalize order)
2012-10-12 20:24:56 +00:00
espie
959b30dd92 oops 2012-10-11 17:35:19 +00:00
espie
692f286b94 oh, and explain the why... 2012-10-11 09:03:34 +00:00
espie
1a0fb89393 actually log what's missing that we're waiting upon 2012-10-11 08:38:05 +00:00
espie
8db885a530 reorganize and comment portinfo 2012-10-11 08:05:03 +00:00
espie
9b37bcd801 change things again to have command line options override host file.
and provide the possibility of a DEFAULT entry in the host file.
2012-10-11 07:40:30 +00:00
espie
94c55bc7b4 move to using BUILD_PACKAGES, so we have the actual tidy list.
Stupid NFS work-around:
during/after cleanup, wait until the packages show up.
Each wait period of ten seconds will show up as waiting#n.
2012-10-11 07:38:38 +00:00
espie
7cdbf3d937 zap last bit of state, showing everything as host/4*2 is bad... 2012-10-08 14:16:36 +00:00
espie
cdc017bcb0 small change for people running multiple hosts:
options on the command line now define *defaults* that host files can
override (for instance -j, stuck, -p, -J).

Add -p /n to mean "take number of jobs, if >1, divide by n, round up to 2,
and use that for parallel.

Document -p.

Make junk be 'by host' (and it's a prop, so you can tweak it).

concurrent log that records how many jobs are running each time it changes.
tag parallel builds *n in the time record.
2012-10-08 12:41:03 +00:00
espie
a98e0a8036 our make does ignore further targets with the same name, but it's not
a reason to misuse that feature.

When invoking bsd.port.mk, be more specific, give us a target that's not
defined.
2012-10-06 15:38:14 +00:00
espie
63d13d7f2d oops, unmark core for swallowing before we free it. Otherwise we may
still lose jobs.
2012-09-24 20:41:57 +00:00
espie
f8d9ead7d8 new framework to deal with the new ports cluster, to be documented 2012-09-23 18:13:32 +00:00
espie
0b523b0598 according to Theo, somebody reported this to me (?)
in any case, this should "fix" krw's problem, by allowing PkgPath to
actually display the actual program for further debugging.
2012-08-22 07:49:00 +00:00