Below is a patch that suppresses errors I get when running dpb with -I:
Use of uninitialized value $ts in sprintf at /usr/ports/infrastructure/lib/DPB/Util.pm line 58.
DPB::Util::ts2string(DPB::Util, <undef>) called at /usr/ports/infrastructure/lib/DPB/Job/Port.pm line 1107
DPB::Job::BasePort::timings(DPB::Job::Port::Install=HASH(0xf3c120630d0)(sysutils/iwatch)) called at /usr/ports/infrastructure/lib/DPB/Job/Port.pm line 964
DPB::Job::BasePort::__ANON__(DPB::Core=HASH(0xf3c1203be38)(localhost:sysutils/iwatch)) called at /usr/ports/infrastructure/lib/DPB/Job.pm line 189
DPB::Job::Normal::finalize(DPB::Job::Port::Install=HASH(0xf3c120630d0)(sysutils/iwatch), DPB::Core=HASH(0xf3c1203be38)(localhost:sysutils/iwatch)) called at /
[... snip - longer example at the end ...]
If I run with -P instead of -I, the errors are not seen.
The diff at the end avoids a DPB::Util->ts2string($self->{watched}{max})
call when $self->{watched} is undefined. My feeling is that the install
phase does not watch for stuck processes at all, so it benefits from
this.
Whether this is the right way or place to address the problem, I don't
know, but with the patch the errors are suppressed for me.
To reproduce, I am starting dpb with a command like this:
% doas /usr/ports/infrastructure/bin/dpb -I /tmp/ports.lst -L /home/obsd/ports/logs
My list of ports and mk.conf is below.
% cat /tmp/ports.lst
editors/vim,no_x11,-main
mail/mutt,sasl
shells/zsh
sysutils/iwatch
sysutils/parallel
sysutils/pv
devel/got
% cat /etc/mk.conf
SUDO= doas
PORTSDIR_PATH= /home/preben/OpenBSD/ports:${PORTSDIR}
BULK_COOKIES_DIR?= /home/obsd/ports/bulk
DISTDIR?= /home/obsd/ports/distfiles
PACKAGE_REPOSITORY?= /home/obsd/ports/packages
PLIST_REPOSITORY?= /home/obsd/ports/plist
UPDATE_COOKIES_DIR?= /home/obsd/ports/update
WRKOBJDIR?= /home/obsd/ports/pobj
WRKOBJDIR_MFS?= /tmp/pobj
PORTS_PRIVSEP?= Yes
%
Longer output while dpb was running:
4 Apr 21:20:08 [85831] control-ox-85831 elapsed: 00:00:03
sysutils/parallel(install) [23258]
sysutils/pv(install) [24069]
LISTING [146] at devel/gmake
sysutils/pv(install) [78151]
editors/vim,no_x11,-main(install) [49646]
Hosts: localhost
I=16 B=7 Q=0 T=0 F=0 !=1
Use of uninitialized value $ts in sprintf at /usr/ports/infrastructure/lib/DPB/Util.pm line 58, <__ANONIO__> line 1.
DPB::Util::ts2string(DPB::Util, <undef>) called at /usr/ports/infrastructure/lib/DPB/Job/Port.pm line 1107
DPB::Job::BasePort::timings(DPB::Job::Port::Install=HASH(0xf3b30e0fa78)(devel/got)) called at /usr/ports/infrastructure/lib/DPB/Job/Port.pm line 964
DPB::Job::BasePort::__ANON__(DPB::Core=HASH(0xf3c1205e130)(localhost:devel/got)) called at /usr/ports/infrastructure/lib/DPB/Job.pm line 189
DPB::Job::Normal::finalize(DPB::Job::Port::Install=HASH(0xf3b30e0fa78)(devel/got), DPB::Core=HASH(0xf3c1205e130)(localhost:devel/got)) called at /usr/ports/in
frastructure/lib/DPB/Job/Port.pm line 1089
DPB::Job::BasePort::finalize(DPB::Job::Port::Install=HASH(0xf3b30e0fa78)(devel/got), DPB::Core=HASH(0xf3c1205e130)(localhost:devel/got)) called at /usr/ports/
infrastructure/lib/DPB/Core.pm line 413
DPB::Core::WithJobs::start_task(DPB::Core=HASH(0xf3c1205e130)(localhost:devel/got)) called at /usr/ports/infrastructure/lib/DPB/Core.pm line 399
DPB::Core::WithJobs::continue(DPB::Core=HASH(0xf3c1205e130)(localhost:devel/got)) called at /usr/ports/infrastructure/lib/DPB/Core.pm line 212
DPB::Core::Abstract::reap_kid(DPB::Core, 20938) called at /usr/ports/infrastructure/lib/DPB/Core.pm line 225
DPB::Core::Abstract::reap(DPB::Core) called at /usr/ports/infrastructure/bin/dpb line 216
main::handle_non_waiting_jobs(DPB::Core) called at /usr/ports/infrastructure/lib/DPB/Grabber.pm line 108
DPB::Grabber::finish(DPB::Grabber=HASH(0xf3bb511d2e0), HASH(0xf3c120614d8)) called at /usr/ports/infrastructure/lib/DPB/Grabber.pm line 215
DPB::Grabber::__ANON__(HASH(0xf3c120614d8)) called at /usr/ports/infrastructure/lib/DPB/Vars.pm line 130
DPB::Vars::__ANON__(HASH(0xf3c120614d8)) called at /usr/ports/infrastructure/lib/DPB/Vars.pm line 178
DPB::Vars::grab_list(DPB::Vars, DPB::Core=HASH(0xf3c1203bdd8)(localhost:LISTING), DPB::Grabber=HASH(0xf3bb511d2e0), HASH(0xf3c00a38880), <undef>, 0, GLOB(0xf3
bdfffbc10), fetch, CODE(0xf3c00a383e8)) called at /usr/ports/infrastructure/lib/DPB/Grabber.pm line 216
DPB::Grabber::complete_subdirs(DPB::Grabber=HASH(0xf3bb511d2e0), DPB::Core=HASH(0xf3c1203bdd8)(localhost:LISTING), <undef>) called at /usr/ports/infrastructur
e/bin/dpb line 309
Use of uninitialized value $ts in sprintf at /usr/ports/infrastructure/lib/DPB/Util.pm line 58.
DPB::Util::ts2string(DPB::Util, <undef>) called at /usr/ports/infrastructure/lib/DPB/Job/Port.pm line 1107
DPB::Job::BasePort::timings(DPB::Job::Port::Install=HASH(0xf3c120630d0)(sysutils/iwatch)) called at /usr/ports/infrastructure/lib/DPB/Job/Port.pm line 964
DPB::Job::BasePort::__ANON__(DPB::Core=HASH(0xf3c1203be38)(localhost:sysutils/iwatch)) called at /usr/ports/infrastructure/lib/DPB/Job.pm line 189
DPB::Job::Normal::finalize(DPB::Job::Port::Install=HASH(0xf3c120630d0)(sysutils/iwatch), DPB::Core=HASH(0xf3c1203be38)(localhost:sysutils/iwatch)) called at /
usr/ports/infrastructure/lib/DPB/Job/Port.pm line 1089
DPB::Job::BasePort::finalize(DPB::Job::Port::Install=HASH(0xf3c120630d0)(sysutils/iwatch), DPB::Core=HASH(0xf3c1203be38)(localhost:sysutils/iwatch)) called at
And finally, the diff:
diff refs/heads/master refs/heads/pg
blob - aceb2d60195811d2215d000bb21c4e20fcf02a18
blob + f4f2b443ad8c92571f8e5dc032516a3b55ac191b
--- infrastructure/lib/DPB/Job/Port.pm
+++ infrastructure/lib/DPB/Job/Port.pm
@@ -1104,7 +1104,12 @@ sub totaltime
sub timings
{
my $self = shift;
- return join('/', "max_stuck=".DPB::Util->ts2string($self->{watched}{max}), map {sprintf("%s=%.2f", $_->{phase}, $_->elapsed)} @{$self->{done}});
+ my $stuck_status = "unwatched";
+
+ if (defined($self->{watched})) {
+ $stuck_status = DPB::Util->ts2string($self->{watched}{max});
+ }
+ return join('/', "max_stuck=".$stuck_status, map {sprintf("%s=%.2f", $_->{phase}, $_->elapsed)} @{$self->{done}});
}
sub equates
No comments:
Post a Comment