657 Commits

Author SHA1 Message Date
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
espie
74fbdfb67a oops, mixed this up. 2015-05-12 08:08:04 +00:00
espie
19295ce330 make sure we get DIRMODE and DROPPRIV
default build_user/log_user/fetch_user as the documentation says.

Deal with BUILD_USER on the command line correctly, pass it off to
default_prop

(this should fix various config issues reported by sthen@ and aja@)
2015-05-11 10:33:47 +00:00
espie
4c84f258a0 move the fcntl FD_CLOEXEC code over to User, so that all opened files are
marked that way.
2015-05-11 07:32:42 +00:00
espie
75013757cc fetch_user is still taken from default prop... 2015-05-10 10:12:40 +00:00
espie
43e571d3ca compat with old config breaks new config, so ditch it. 2015-05-10 08:40:06 +00:00
espie
b150b6d2ec rename logger interface to desambiguate vs user. 2015-05-10 08:14:14 +00:00
espie
191922623a must re-evaluate users after reading config files.
open permanent log correctly.
2015-05-10 07:55:35 +00:00
espie
3feef3d107 fix writing of permanent logs 2015-05-09 19:10:10 +00:00
espie
194e468c2d introduce "UNPRIV_USER" so that we don't run as root that often.
Move FETCH_USER, LOG_USER to defines, because they're not really
host-dependent.

Keep the equiv so that ppl old config doesn't break...
2015-05-08 12:37:16 +00:00
espie
678040b6ac it's all about the names.
Change "sudo" into "as_root" since in many cases, it won't use sudo at all
(and in the end, it WON'T use sudo ever)
2015-05-08 12:35:53 +00:00
espie
1b06c79c82 make sure we're root when killing stuff. I'm mixing up right and left,
obviously.
2015-05-07 12:30:46 +00:00
espie
8be5de417c run kill as root, so trhat ssh masters are cleaned up properly 2015-05-06 12:20:35 +00:00
espie
fb70e18c6a don't write this as root 2015-05-06 10:58:19 +00:00
espie
a24437df0e open distinfo with the correct user, start clamping down on read rights
as well as write rights.
2015-05-06 09:17:28 +00:00
espie
63eb9e7deb fix gid handling: first switch back to being root, THEN set gid, THEN set
uid.
2015-05-06 09:16:32 +00:00
espie
3eefd2bae0 when local is too local, it can't work. Requires an extra indirection so that
dirs are made with the correct user.
2015-05-05 08:55:25 +00:00