22 Commits

Author SHA1 Message Date
espie
fdc7a9c9fd subtle effect of equivalence: sometimes, we do not get back the subdir
we asked for.

This can be a problem, as rescan relies on it to reenter the path in the
various queues.

So, when we build the equivalence hash, give special treatment to extra
paths that match the actual subdirs list.

Problem reported by naddy@, who sees sporadic errors linked to NFS lag,
which mean that paths sometimes get flagged as errors, then later the error
vanishes automatically when the package appears...

well, this makes darn sure the correct pkgpath does not vanish.
2011-11-22 16:44:53 +00:00
espie
aba2721637 simplify lock code so that lock/unlock actually works, even if I lose
small-grained locks for fullpkgpath
also fix a stupid parenting bug...
2011-11-13 22:18:04 +00:00
espie
b0e6afe5e4 split DEPENDS into not done/done to help prepare work correctly 2011-11-08 10:26:38 +00:00
espie
cb47853a4e backout shrinkage that breaks prepare 2011-11-08 09:07:24 +00:00
espie
fb0691e921 share MULTI_PACKAGES.
simplify the default case (SUBPACKAGE=-main).
2011-11-07 16:03:19 +00:00
espie
b016e09750 modify pkgpath to store info in a more compact way (in particular,
get rid of sawflavor, and just use the existence of the key to mark the
presence of flavors).

also remove yet more info once we used it.
2011-11-07 13:23:09 +00:00
espie
3f5146bbc7 make it simpler to print parent.
zap copy_flavors which I no longer use
2011-11-06 12:21:07 +00:00
espie
561e2aa812 shrink a bit: the reason for copy_flavors use is long gone
remove the debug scaffolding that duplicates depends list
2011-11-05 18:25:36 +00:00
espie
1be9ae7cd5 duh, for equates to work, I need to store values. I'm an idiot. 2011-10-11 13:43:25 +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
f29db2a6fb ooh, don't merge depends from IGNOREd stuff for MULTI_PACKAGES.
this allows build to proceed faster on some arches by simply not
building stuff we don't need
2011-10-03 08:56:40 +00:00
espie
e8d7b584fd fix build of "x11/qt3," : for multi-packages, when we find the default
subpackage, copy full options status. So, e.g., look for "x11/qt3,"
find "x11/qt3,,-main" and equate it with "x11/qt3," NOT "x11/qt3"
2011-09-27 17:15:03 +00:00
espie
2cf4d84ffd fix a long-standing bug: add LIB_DEPENDS to the RUN_DEPENDS of a port, as
there's a safeguard against self-depends anyways.
This prevents ports from getting moved from "built" to "installable"
prematurely.

For instance, devel/libsoup,-gnome doesn't directly depend on
net/glib2-networking, but it depends on devel/libsoup,-main which has
the net/glib2-networking.

Without this patch, dependencies on devel/libsoup,-gnome would often build
prematurely and build net/glib2-networking with them.
2011-06-15 10:09:31 +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
be6847e3c2 avoid fetching distfiles where we don't know dependencies yet 2011-06-01 15:39:47 +00:00
espie
aeae163983 oops, the Builder is one indirection down now 2011-05-28 19:32:59 +00:00
espie
7ef05495f5 start moving the fetch/build code into separate subengine classes, to make
it more obvious how much is shared (goal is to unify a large part of these).

In particular, the locking code/stuff already active is glaringly the same...

Polish the distfiles measurements. For now, 3 heuristics that kick in
at various stages of the build (a bit of black magic).

Fix pkgpath->{has} to record both "no dependencies" and "several distfiles
missing" to avoid grabbing small patchfiles which don't lead to valid
builds while heuristic#1 is active.
2011-05-27 10:27:50 +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
cabe19ad60 tidy, minor 2011-03-22 19:48:53 +00:00
espie
1fecde2518 rework PkgPath to distinguish between empty and default flavors...
turns out we probably don't need FULLSUBDIR after all.
compute SUBDIR better, possibly with quotes.
Remove trailing / on subdirs, in case people use completion.
2010-10-26 15:45:09 +00:00
espie
4c6d1b431f move stuff here from infra/build 2010-08-20 13:40:13 +00:00