MP machine, show examples of lines displayed by dpb, document the extra
files produced by fetch. Explain how fetch works (in particular, the *.part
files and the use of ftp -C).
exit if the dependency doesn't match.
then do the actual dependency and the normal tests.
stop looking at full pkgnames list, makes no sense, even configure depends
can use the required ,-subpackage if they want.
This allows stuff such as BUILD_DEPENDS = dir>=5.0:configure
to get out early if the tree is not uptodate, instead of first configuring
then getting out (problem noticed by landry@).
tested by landry@ and jasper@
- if _DEPRUNLIB is empty, there's no need for any computation since the
result will be empty.
- zap the loop on _LIB4* for port-wantlib-args, as run-dir-depends already
grabs them.
- expose wantlib_args and corresponding targets for pkg_create to take
advantage of.
- add a dirty way for developers to waive the fake vs. ports check (PLEASE
use with EXTRA CAUTION).
* cut it into separate targets for readability and better testing
* filter libraries more efficiently
* use internal variable for resolve-lib
create two targets for solving wantlib: one (_fake-wantlib-args) which uses
the information under the fake directory and installed packages, and another
(_port-wantlib-args) which walks packing-lists. The second one can be used
to collect meta-info even when nothing is installed, and thus provide better
package-signature accuracy, or help with lib-depends-check.
The first one uses what's actually in place when a package is built.
For now, we're paranoid and use both when building a package, erroring out
if they don't match, even though _port-wantlib-args is somewhat slower.
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.
- 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...
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.
dpb while checksumming huge tarballs.
Use ftp -C in a systematic way, more complicated logic as to when to
remove temp files, when to keep them: if core exited okay, wrong size
is very bad. If checksum failed on a partial fetch, retry same site with
an empty file...
- 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.
should be linked statically as reported by David Talkington. Tested with
all ports showing in bulk build logs as using -all-static.
"that looks ok for our needs" steven@
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.
derive IGNORE-sub from IGNORE, and then test IGNORE-sub
Define complete value for IGNORE very late, _MULTI_PACKAGES trimming only
requires subpackage-specific info.
fix bug in describe, correctly differentiate between empty and !defined
ONLY_FOR_ARCHS.