Commit Graph

193 Commits

Author SHA1 Message Date
espie
623eb8b2c5 Better name for the task that, duh, is actually updating distfiles history. 2012-01-30 14:19:30 +00:00
espie
8ddfdef47f more flexible error path while scanning, accumulate reasons why broken.
remove a few explicit (and implicit) die from Fetch: missing/out-of-sync
distinfo no longer kill dpb, instead they're properly reported as broken
paths and things still go on (note that even a missing SUPDISTFILE checksum
*will* mark a path as broken, that's totally intentional)
2012-01-29 12:02:20 +00:00
espie
cd3220153e remove a bit of noise from the log... we checked already, no need to
log it again.
2012-01-23 10:35:38 +00:00
espie
1ec4d51eba repair dpb -f0
noticed by phessler@
2012-01-18 15:26:49 +00:00
espie
f0d702b93c also scan by_cipher for old stuff. This requires a bit more logic, as
the names of files in there are not totally trivial to figure out from the
normal filename + sha.
-> filename will be stripped off DIST_SUBDIR
-> b64 checksums interfere with filesystem semantics, e.g., /u8//ffg
will become u8/ffg
2012-01-16 18:55:35 +00:00
espie
3a6eaf5081 add support to obey PERMIT_DISTFILES* 2012-01-14 12:26:21 +00:00
espie
cb500b33c7 remove files from distinfo when they no longer exist, so when you clean
up files and history, it won't recreate fantom stuff...
2012-01-10 19:35:36 +00:00
espie
f8050aba6f run "expire_old" as a separate job, since it may take some time.
find files under $DISTDIR, anything we don't know about should also
end up in history.
2012-01-09 17:56:28 +00:00
espie
c0aa7effe3 lock may fail 2012-01-09 11:54:30 +00:00
espie
fa990a1dba give dpb more knowledge about distfiles.
- keep a stash indexed by checksum, so dpb can identify duplicate files.
- in a full bulk, if the scan has no errors, write to a ${DISTDIR}/history
file  the files encountered in ${DISTDIR}/distinfo that seem to no longer
be needed (with full timestamp and checksum info).

Should be enough info to know when to expire old DISTDIR entries.
2012-01-08 20:28:37 +00:00
espie
52e58e485e make fetch_manually error directly visible in the lock 2012-01-08 14:40:58 +00:00
espie
3884c2f898 buglet with links and files with a DIST_SUBDIR, as found by naddy@.
people already running dpb -F: just remove /usr/ports/distfiles/distinfo
and rerun dpb.
(or at least all entries with a subdirectory)
2012-01-05 21:49:52 +00:00
espie
d9eef11aed prevent dpb from dying if make_link dies (also does not append to global
distinfo, of course)
2012-01-01 18:34:35 +00:00
espie
9938b28564 allow the fetcher part to work as a "true" mirror maker:
- keep a cache of checked checksums as ${DISTDIR}/distinfo
- read existing cache on startup, don't need to recheck those files.
- split checksum_task: update the cache after the checksum is done
- create the by_cipher/sha256/... entries
- in fetch_only mode, do a "long" checksum on existing files not in the cache.

If you ever have doubts on the integrity of already checked files, just
rm ${DISTDIR}/distinfo.
2011-12-31 11:20:00 +00:00
espie
1f6bab1e34 filter out lib-deps with the same pkgpath_and_flavors as what we're
building, like bsd.port.mk does.
won't change anything in the build, but makes pkg_add -a less confusing,
since mp ports won't try to add itself while building.0
2011-12-11 19:55:37 +00:00
espie
d179751a0f on SIGINFO, dump T/B hashes into info.log (and mark the display for refresh,
as the shell might muck it with its own information)
2011-12-10 14:48:40 +00:00
espie
c71b9ad066 expose interface to "refresh" display after some disturbing operation. 2011-12-10 14:47:36 +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
3858760dd5 cut up big method into smaller parts 2011-12-04 10:57:46 +00:00
espie
69df96b71c properly forget old info when rescanning... 2011-12-04 10:39:52 +00:00
espie
1674edcbbd open needed just once. 2011-12-03 11:10:48 +00:00
espie
c1a46f71e8 faster NFS: if the missing file suddenly reappears, we don't need to rescan
the path, just put it back in the queue, and forget it ever happened.
2011-12-03 11:03:07 +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
2cfd4c615d new junk option (to remove packages as they're no longer needed) to pass
around thru JobBuilder (along with locks since we need to write stuff into
that file)
2011-12-02 22:33:46 +00:00
espie
b5c447a355 don't buffer printing to locks, to be able to get dependencies early
gather needed=* lines from locks (may want to cache that info later,
but I don't think it has any actual performance impact)
2011-12-02 22:32:07 +00:00
espie
770bcd5b5a methods required to be able to lock per-host 2011-12-02 22:29:28 +00:00
espie
18a4d6f4bf remove dangerous optimization: have paths explicitly pass thru the depends
stages, even if the package is already there.

This could break EXTRA depends where the package would already be there,
and thus its dependency tree not really solved, and thus depends could
easily miss packages...

problem reported by nigel@... and not reported by ajacoutot@ :)
2011-12-02 11:52:06 +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
4b801b7017 shorter lock line: user doesn't really care that multiple pkgpaths ran into
the same lock, rather that it's a lock, and what the lockname is.
2011-11-22 16:46:44 +00:00
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
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
5ffb1d6f17 allow check for local cores 2011-11-14 21:56:04 +00:00
espie
c5a81668f4 show parents when we recurse thru subdirs. a bit noisy, but useful when
you want to figure out why some big stuff you wanted to avoid is building
2011-11-14 19:03:41 +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
2ab4b2c7e7 better FETCH_MANUALLY handling:
- expose MISSING_FILES
- treat them as a special kind of IGNORE
- handle that in DPB
that way, ports that are IGNORE'd for other reasons (not correct arch)
stay ignored, and relevant ports with missing distfiles get better error
messages
2011-11-13 10:34:35 +00:00
espie
e15fa3097d oops, fix FETCH_MANUALLY bug.
Prepare for MISSING_FILES
2011-11-13 10:28:32 +00:00
espie
8f77bf5ec5 make stuff slightly more verbose all the time 2011-11-12 13:19:26 +00:00
espie
9efee931ed smarter dump at end of build:
- try resolving RDEPENDS on tobuild, so that known dependencie are zapped.
- use equivalence info to not reprint same thing twice.
- dump tobuild AND built, since both are usually relevant in case lots of
stuff didn't build
2011-11-09 08:28:55 +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
8bba5b93fa remove a bit more data 2011-11-07 13:21:46 +00:00
espie
3915fb3951 don't auto-vivify info. 2011-11-06 17:56:53 +00:00
espie
7238b18cc3 make sure print_parent gets the correct path 2011-11-06 16:56:23 +00:00
espie
ebe71b8762 slightly better error handling and reporting:
- log to pkgpath whenever we can
- log FETCH_MANUALLY issues as errors, so we can fix them
2011-11-06 12:23:28 +00:00
espie
50ac27a1e8 use print_parent 2011-11-06 12:22:17 +00:00
espie
63910d84bb document why it's broken. Link more parent stuff. 2011-11-06 12:21:47 +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
0ea853e6e2 convenience function to log to correct path more easily 2011-11-06 12:20:32 +00:00
espie
1ccfe6a255 propagate IGNOREd status to dependent ports.
display directly into engine.log.
replace all info with a stub "ignored already".
This shrinks memory usage some more.
2011-11-05 18:27:13 +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
6af9b14242 repair rescan for distfiles errors 2011-10-15 10:35:41 +00:00
espie
e16ed24351 fix -R and -c. 2011-10-11 13:56:41 +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
2697d6283f FLAVOR is obviously a list 2011-10-03 08:53:49 +00:00
espie
d6d7875186 cosmetic: let IGNORE string behave 2011-09-28 10:13:51 +00:00
espie
2256d26ac6 log ignored ports: with a ! in engine.log, and with full IGNORE message in
new log file ignored.log
2011-09-28 09:49:29 +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
32d1fbccea deal with suspend: connection may time out, so in case of failure, if
we got suspended, try the same site again.
2011-09-27 17:12:56 +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
1521428320 erroring once is enough... there should be some logfile for this too ;( 2011-09-25 10:40:25 +00:00
espie
ed1516a867 beginning of a fetch-only option that is supposed to replace mirror-maker
eventually.

- fetch all files
- ignore ignores
- specific builder that doesn't look at existing packages

currently: does not stop when  fetch is finished, which is somewhat of the
remaining issue.

Also: change stats to store pid, to make sense of interleaved log files.
2011-09-13 09:46:53 +00:00
espie
9282de6556 fix thinko
thx nigel@
2011-08-30 17:44:28 +00:00
espie
7adaf18e54 move missing distinfo into not so fatal error. 2011-08-29 09:45:29 +00:00
espie
7bcd59566c code reuse 2011-07-14 11:03:49 +00:00
espie
e6a94f281b when checksumming existing files work, remove a possible .part 2011-07-14 11:03:35 +00:00
espie
22f2dd40c8 give a bigger weight to unknown paths 2011-07-14 11:03:13 +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
755907c973 parse regression info if present 2011-06-15 10:06:22 +00:00
espie
91419bfb7c spaces 2011-06-04 12:58:24 +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
8579c8b7c3 do the fetch stuff very early, in new_path. 2011-06-03 13:38:58 +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
7d68d7e282 add stuff to do quick_dump of distinfo eventually 2011-06-02 11:53:55 +00:00
espie
be6847e3c2 avoid fetching distfiles where we don't know dependencies yet 2011-06-01 15:39:47 +00:00
espie
72c6360806 optimize heuristics for fetchqueue, as they take too much time 2011-06-01 12:34:29 +00:00
espie
647950c27f typo, duplicate work 2011-06-01 12:34:09 +00:00
espie
1e22893e8e if we -f -a, then scan SUPBDISTFILES too, and use the Distfile cache
to write a list of all known distfiles, that can be used to remove extra
stuff from /usr/ports/distfiles
2011-05-29 11:06:23 +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
aeae163983 oops, the Builder is one indirection down now 2011-05-28 19:32:59 +00:00
espie
3f2603c2f3 fix unlocking in case of errors 2011-05-28 19:24:15 +00:00
espie
9f989ffafe fix 2011-05-28 08:21:39 +00:00
espie
f4d6937978 nicer lockname 2011-05-27 13:13:43 +00:00
espie
2fd23899dd explain the dump_dependencies/find_best optimization for quick-restarting
dpb.
2011-05-27 11:22:13 +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
a819e7f3e8 improved fetch: do checksum as a separate process, to avoid freezing
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...
2011-05-23 09:44:05 +00:00
espie
0c1194b39b only check checksum if we just fetched it, for now. 2011-05-22 09:19:08 +00:00
espie
d2a3a0fa83 dyslexia 2011-05-22 09:06:49 +00:00
espie
fbfc4fba47 fix checksum logging, avoid checksumming twice 2011-05-22 09:01:27 +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
e7a4ca8c8a ignore whitespace 2011-04-18 11:40:23 +00:00