673 Commits

Author SHA1 Message Date
espie
7c34de513e clean-up "force junking": do not prepare a host to be untainted with the
"wrong" port, but instead, create a pseudo-path that is just there to run
junk (will be logged as junk-proxy)

fix a bug in the task handling host locking (no next task -> unlock, duh).

do not log multiple K for several ports on the same basepkgpath.
2015-07-02 08:04:22 +00:00
espie
3b3b8b157b document there's probably still a problem, so I don't forget to fix it. 2015-06-23 14:22:50 +00:00
espie
26f5f459b3 repair forced junking
always go thru taint/untaint, so that source should always be correct
2015-06-23 09:01:56 +00:00
espie
c20f0c64fb remove debug scaffolding 2015-06-23 08:52:20 +00:00
espie
cff48ff52b tweak taintedness:
- fix actual bug in PortInfo
- restrict defined tags to !empty tags (shouldn't happen)
- track the source from locks as well.
2015-06-23 08:51:53 +00:00
espie
fab15b9291 future interactive option that does nothing whatsoever so far... 2015-06-22 12:20:06 +00:00
espie
f45103cfeb move the taint mechanism outside of "main" code.
more stringent checks... there's still a bug somewhere, hope to catch it
2015-06-22 12:19:38 +00:00
espie
ee1f6ec3ce expand on comments 2015-06-22 12:18:50 +00:00
espie
bbaa1424c3 expand on comments 2015-06-22 12:18:19 +00:00
espie
e776b6f373 expand on comments, reorder code.
better diagnostic if one distfile checksum isn't consistent.
2015-06-22 12:18:00 +00:00
espie
dbbaf40347 do an extra mode that will first scan the ports tree, and then extract only
the plists that are current.
took longer than expected because I found a bug in my setup...
probably going to be more code to say "hey, these current packages depend
on not current".
2015-06-22 09:33:03 +00:00
espie
0b5b5a74d6 cosmetic 2015-06-17 07:31:44 +00:00
espie
40499f8bbe do detain distfiles as well as paths (need to track them over rescan)
also, since distfiles are "always fetchable", need to check for detained
files before checking for "already done", since already done will want to
check the size...
2015-06-17 07:31:25 +00:00
espie
853ce1b8f7 tweak logic a bit: recheck sz and sha each time we encounter the same
distfile (error out if things are not consistent)

Fix bug: properly forget sz, give rescan a chance
2015-06-17 07:30:17 +00:00
espie
5e55c60de7 handle distfile failure better.
- we do rescan paths anyway, so make sure we queue only path.
- forgetting distfile details does not get around caching, so do creation
of distfiles in two times. cache is there to ensure unique distfiles, and
we can still forget details.
To do: remove distfiles from queue during forget, because there's no longer
any detail there.
2015-06-11 08:42:38 +00:00
espie
f9b580293d unify options. 2015-06-08 15:37:20 +00:00
espie
2db73700a1 close enough that I can unify them together.
Introduce an interface to specifically display results, so that it
can be copied to an output file, and just not appear on the terminal
2015-06-08 15:11:53 +00:00
espie
70fc0473bd unified dependency tagging, so that both tools can do dependency closure.
Provide -o output option, which also saves the actual useful output somewhere
2015-06-08 12:56:26 +00:00
espie
828e1671f8 fix long-standing race condition where removing a lock could break things.
That's just more stuff that has to wait while scanning is going on.
2015-06-08 11:06:08 +00:00
espie
cd48bdea30 tweak fullname to put the ! (for current packages at the start)
sort things in a more systematic way.
make sure results are displayed after the progress meter is properly
terminated
2015-06-08 10:32:55 +00:00
espie
c7446b9897 fsck tricks. Very often, the "invalid plists" are actually empty files left
behind after a panic. So just say so, saves you the hastle of going edit
the file, and hey, that's just empty space!
2015-06-07 12:21:21 +00:00
espie
01dbfca345 provide a forwarder to progressmeter, simplifies code
tweak for using in check-common-dirs: specify the reader,
allow a pass after scan.
2015-06-07 12:05:22 +00:00
espie
72fc751185 fine-tune display, better progress report when scanning the ports tree 2015-06-06 15:01:43 +00:00
espie
f1a5a54b22 bleh, fix fix. Wrong problem 2015-06-01 20:39:06 +00:00
espie
b4d6d84223 fix, noticed by naddy 2015-06-01 16:13:55 +00:00
espie
889658ea65 similar change to check-conflicts 2015-05-29 10:40:06 +00:00
espie
d7bd650dfb clean up some of the oldest code converted to separate users 2015-05-25 17:37:26 +00:00
espie
b364bd531d tweak find_dependencies to just return a result (deps or path)
reuse in can_be_junked. As exemplified by editors/tiled, a failing
port with nojunk set should also prevent junk tentatives, as these
will fail, but still untaint hosts...

seen by aja@ and naddy@, most probably.
2015-05-24 06:48:51 +00:00
espie
a961ac53e0 fix "nochroot" mode. Problem noticed by Mark Patruck 2015-05-20 11:54:35 +00:00
espie
e24afb41c1 zap local code. Now that chroot changes class, it's much better to use it
directly.
2015-05-20 08:34:45 +00:00
espie
391645a2bd use File object (name + user) to ensure watched files are watched with the
correct user. Should fix sthen@'s problems.

(File interface to be used elsewhere, as it's less cumbersome)
2015-05-18 16:35:15 +00:00
espie
4125493a02 Already run as the correct user, so revert.
run it  in a chdir(distdir) instead, avoids situations
where the original dir is inaccessible by unpriv_user AND
simplifies the code too. What more could you ask for ?
2015-05-17 20:39:45 +00:00
espie
59b4a6a4d6 make sure we switch to a directory within the chroot on localhost,
as per chroot(8).
2015-05-17 08:29:31 +00:00
espie
550697f7a6 We never use groups separately, make it a grouplist.
Get group name as well.

Pass BUILD_USER/BUILD_GROUP/FETCH_USER/FETCH_GROUP as env variables to STARTUP
script.
2015-05-16 18:14:04 +00:00
espie
372cc73c8f make log files more helpful, when dependencies get coalesced together and
handled by an earlier port, link to the relevant port which has the pkg_add.
Makes it much easier to figure out when show-prepare-results fails because
of conflicts in dependent ports...
2015-05-16 17:01:53 +00:00
espie
70b1c1c81b chdir($distdir) at the start of expire_old
First, it makes for simpler code. It also allows things to work when your
cwd is not readable by your user, such as /root, since File::Find wants the
cwd.
2015-05-16 15:27:48 +00:00
espie
6dd937461c In -F mode, things are run directly from within dpb, so we must ensure
the user changes correctly.

OO is cool: no need to store the user in each distfile, since it's in
the repository.
2015-05-16 12:23:05 +00:00
espie
627af03a40 run this part as the correct user.
avoids situations where dpb is run from a dir inaccessible by unpriv_user
found out by aja@
2015-05-16 10:52:19 +00:00
espie
cc0f115edf make sure the base_user has everything it needs 2015-05-13 15:14:13 +00:00
espie
a51ddc650d grr, thinko 2015-05-13 15:05:56 +00:00
espie
a084101510 duplicated code 2015-05-13 14:44:13 +00:00
espie
004ce15105 fix the kde3 vs kde4 bug.
frequent occurrences of tag mismatches were probably triggered by
the import of qt5, which is a long-running nojunk port.

when we're finished with kdeN ports, there's pressure to force junking to
go thru kdeM ports, BUT actual junking *won't* happen in the presence of
a nojunk port, though the current code make it seem as though
we've "succeeded".

Forensics shows:
23826@1431149112: K: x11/kde4/webdev openbsd-2 kde3 vs kde4
23826@1431149112: J: devel/hs-FindBin openbsd-2
23826@1431149119: B: security/p5-Crypt-OpenSSL-RSA
23826@1431149120: J: x11/tellico-kde4 openbsd-2

which made no sense since nothing happened between the K and the J.

But the log of tellico shows the junk not happening.

Still tainted: 1
>>> Running junk in x11/tellico-kde4 at 1431149274
Can't run junk because of lock on x11/qt5,,-main

So synch "can_be_unjunked" for forced junks: it should not succeed if there's
a nojunk port.
2015-05-13 14:27:13 +00:00
espie
c85aabe25e oops, clock abstract core does NOT follow the pattern. 2015-05-13 12:21:11 +00:00
espie
b712e8531b complete local users with groups list using id -G.
Use that when switching groups to enforce full correct list of groups.

Figure out users that must exist locally, and error out if they don't.

Based on feedback by sthen@
2015-05-13 11:03:18 +00:00
espie
37f70a2c09 go to root more correctly. 2015-05-12 19:49:54 +00:00
espie
eeebd8a244 sthen@ has more paranoia than me. Fix a few access cases 2015-05-12 19:48:29 +00:00
espie
635973b622 fix the start as root, non chroot distant case, by making it chroot / 2015-05-12 19:47:47 +00:00
espie
01699a3d54 scrape non-working round-robin code 2015-05-12 19:47:02 +00:00
espie
a4616aa5b7 get a build_user for whatever host we've set, if everything else fails. 2015-05-12 08:27:58 +00:00
espie
ed6376b0e3 avoid creating multiple user objects for the same user 2015-05-12 08:20:08 +00:00