by fgs@, kili@, nigel@)
repair it.
- introduce end_check to cope with package files updated
(not quite satisfied with the source code, but this works, and will do for
5.4).
- adjust report to build.log to conform to the new semantics: namely, if it
didn't fail, then it's okay, don't even look at possibly missing packages
because of nfs (noticed by nigel@).
- pass error condition from Job/Port.pm all the way to the engine
- use that to know whether we fail, instead of the existence of packages
(but still keep track of what we're doing correctly, THAT'S the fix)
- refactor error handling into OO version
- keep track of locks/errors/packages we're waiting for thx to nfs
all of these keep the lock around, and react to the lock being removed.
use case for nfs: if there was a revision bump after dpb scanned the port,
it will never find the package. Removing the lock will allow dpb to rescan
and find the correct packages.
with this, dpb no longer waits after nfs. More importantly, it does not
report nfs hangs as E:, rather as H:... (and it can "wait" for much longer
periods, since it keeps running and only checks on new jobs).
back in April: "There are times where you don't want to duplicate data...
and there are times where you are just being silly."
"Hmm. Then sure why not." aja@
default (for production/bulks), setting it to 'yes' disables the check
as it was before (for slow archs), and setting it to 'warn' will now
show the differences between wantlib lists, but as a warning and not an
error (which was the behaviour introduced in previous commit for 'yes'
case)
ok espie@
subpackages vanish too entirely, so later, when other ports want them
as dependencies, we're in trouble!
Instead, record both MULTI and BUILD, and compare them when merging depend.
Don't stub out the new paths directly, but "pre-stub them out" with an
IGNOREd message, so the engine picks them, stubs them out for real, and
logs the reason.
equivalent paths will end up with no depends, as they actually share
info, but still on queues.
So do a sanity check when stuff has no depends: if it's stubbed out, just
drop it, as it's been ignored under another name.
Problem noticed and info provided by landry@
(it's all vax's fault anyways, as stub_out is only needed to let dpb fit
within 32M while gobbling thousands of ports info)
values can be in config files.
command line should still override config files.
to be documented shortly, but stuff like
FETCH_JOBS=n
WANTSIZE=1
MIRROR=0
should now work within a hosts file.
- move the meat of handle_options from dpb into config->parse_command_line
(this means a backcall to still inherit from OpenBSD::State).
- move parse_config_files from core into config.
- move the prop handling into proper HostProperties (part of config
obviously)
- create a Core::Init file that contains all the former DPB::Host::Factory
and associated jobs.
there's still a wee little bit of cleanup to do, but this should be
easier to maintain, as all option handling is now in one place, and
startup and host confi is now easier to figure out.
- add a -DMIRROR=0/1 setup that controls whether SUPDISTFILES will be
fetched (defaults to 1 for -F and 0 for -f).
- actually allow for several host files to be parsed, as the name implies