Commit Graph

46 Commits

Author SHA1 Message Date
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
c4f1bfc74e reorg the tests slightly, no functional change 2012-12-24 17:19:01 +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
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
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
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
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
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
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
f8d9ead7d8 new framework to deal with the new ports cluster, to be documented 2012-09-23 18:13:32 +00:00
espie
2da54d1547 delete DIST once we know 2012-07-18 10:31:18 +00:00
espie
40c06ff3d7 prepare for new pkg_add -i/-I: we want to make sure that's NOT interactive! 2012-07-06 12:01:29 +00:00
espie
f7ea023751 remove distinction between local and distant running, always create
a shell object that can chdir, setenv, and exec commands.
(note that this executes stuff after fork, so permanent changes are cheap
and okay)

Also create it from "host" objects, which simplifies parameter passing.
2012-07-04 08:59:10 +00:00
espie
7fdfa19c5a make sure stuff gets thru ssh correctly 2012-04-21 21:09:07 +00:00
espie
5db27d90a1 fix env name for wrapper program 2012-04-21 14:41:37 +00:00
espie
8dc35a6962 make it possible to use a specialized wrapper to collect rss stats 2012-04-21 11:30:53 +00:00
espie
8cb5363e94 whitespace 2012-04-10 17:06:15 +00:00
espie
0a05d056a4 keep track of how long a job is stuck, max. 2012-03-02 19:33:43 +00:00
espie
3081c4ac9a remove "needed" debug log now that things work fine. 2011-12-05 21:27:53 +00:00
espie
03c4aa3410 ouch, don't forget to lock at front of prepare (okay, we can avoid it
if no-depends but that's complicated)

also, two distinct critical sections: we don't need to stay locked at
the end of show-prepare-result.

Even though that's not really important, simplify logic a wee little bit
2011-12-05 21:18:55 +00:00
espie
b10178048d move uninstall behavior to uninstall, unbreak !-J
as noticed by fgs@
2011-12-05 18:29:39 +00:00
espie
abb8ddf57d turn -J into an option taking a number.
always run show-prepare-results, and always serialize
depends/prepare/show-prepare-results(/junk) on a single host.
2011-12-05 16:10:00 +00:00
espie
a38035bd67 clean-up job running a bit: add methods to Grabber and PortBuilder objects
to access more stuff they need.

Remove distantshell->make, ask state instead.
Provide state with the program we run, and the parameters we pass it.

- same make for distant and local hosts
- pass BUILD_ONCE=Yes if -a.
2011-12-04 12:05:41 +00:00
espie
1674edcbbd open needed just once. 2011-12-03 11:10:48 +00:00
espie
4d52ff4e54 new -J option
- refactor redirect a bit to store multi-line results to a temporary file
- new show-prepare-results stage using that
- prepare and show-prepare-results shouldn't be NoTime, since they're
predictable.
- lock host thru depends -> junk in the junk case.
acquiring the lock is done thru polling in the child, so that it doesn't block
dpb proper.
- new "junk" stage that gathers dependencies and deletes them.
2011-12-02 22:37:36 +00:00
espie
f44c50300c EXTRA should (partly) be handled like DEPENDS/BDEPENDS 2011-12-02 11:40:25 +00:00
espie
60bc66c627 use PREPARE_CHECK_ONLY to weed out bugs in dpb.
also, missed passing dontclean to one instance of add_normal_tasks, oops
2011-11-22 16:48:01 +00:00
espie
2f6111d127 explain to the engine how to install stuff when it's ready (no error
checks though).

new -I option to do that.
change -C option to be more useful.
2011-11-14 21:57:47 +00:00
espie
8f77bf5ec5 make stuff slightly more verbose all the time 2011-11-12 13:19:26 +00:00
espie
234027bfe0 unfuck pkgpaths.
- instead of seen/unseen, have an actual constructor. Instead, mark pkgpath
for which we wantinfo/wantbuild.
- only mark EXTRA dependencies as wantinfo. So the devel/haddock,no_deps
temporary error should be gone.
- since we have FLAVOR and SUBPACKAGE available, construct as much info as
we can during vars scanning (see handle_equivalences). This avoids about 150
path rescans during a full bulk. Also, grab the timing and logsizes from
equivalent files, so that most stuff should know show % all the time.
- tweak subdirlist to be a hash, and correctly add pkgpath_and_flavors to it.
That way, we rescan avahi pseudo flavors just once, and not four or five times.
2011-10-10 18:56:50 +00:00
espie
7fb255ef24 make dpb more useful for people hacking on ports, allow them to not clean
the work directory after building.
2011-09-25 10:41:30 +00:00
espie
e6a94f281b when checksumming existing files work, remove a possible .part 2011-07-14 11:03:35 +00:00
espie
64fc6d3cf2 keep a better list of depends, so that pkg_add does add exactly what it should 2011-06-04 12:56:54 +00:00
espie
9ba6fb7c5c - unify code in Fetch/Build subengines
- zap heuristic#3, not critical
- don't rebuild the Fetch queue all the time, it's too expensive
- fix bugs in FetchQueue computation, correctly handle 1 distfile case
- create a quick path thru adjust* that handles only new paths.
- use it during LISTING while fetching files, to make more files available
quicker.
- model distfiles as FDEPENDS, DIST, so that they can get dumped.
- add -v option that dumps a bit more stuff in log files.

with these, dpb will fetch all distfiles in a not too surprising order,
and it won't consume 40% cpu while doing so...
2011-06-02 17:09:25 +00:00
espie
84266ee8ac if we're running -f, do the checksum part internally, since we already
checksummed stuff we fetched (will allow auto-refetch eventually).
2011-05-29 09:30:13 +00:00
espie
8cef021866 initial support for fetching distfiles, somewhat experimental yet.
- clean up clock handling, jobs with timer.
- pass more parameters thru state
- tweak the engine to handle distfiles
- lots of new code in Fetch for new jobs.
2011-05-22 08:21:38 +00:00
espie
afdb81839a finish refactoring options.
Deprecate: -t and -T
use -DCONNECTION_TIMEOUT=... -DDISPLAY_TIMEOUT=... instead
New feature: -DSTUCK_TIMEOUT=
kill tasks when they don't show any progress for that long.
2011-04-25 11:58:46 +00:00
espie
fb3a3c80f7 much better implementation of -R. In case of rebuilds, check does not "see"
pkgfiles, unless they've been registered.
the engine queues everything to build, but normal build is only an
existence/signature check. The actual build tasks only get queued when
the package does not exist, or if its signature does NOT match the ports
tree.

Should make matthieu@ happy.
2010-11-01 10:55:26 +00:00
espie
39fe683365 of course, confusing prepare and depends is bad 2010-10-28 14:21:18 +00:00
espie
7cf1b65950 do the next step even if prepare fails, since prepare is fairly rigid
and depends will allow more flavors.
2010-10-28 11:56:48 +00:00
jasper
04abd53ab1 - revert previous, it breaks builds for at least two builders.
discussed with landry@ and naddy@
2010-09-02 11:16:09 +00:00
naddy
807d4ad3da fix overquoting: we want to exit with 1, not a "exit 1" command not found error 2010-08-24 15:07:54 +00:00
espie
4c6d1b431f move stuff here from infra/build 2010-08-20 13:40:13 +00:00