From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 13F731FA11 for ; Tue, 12 Oct 2021 22:45:01 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 5/5] lei up --all: show output for warnings Date: Tue, 12 Oct 2021 22:45:00 +0000 Message-Id: <20211012224500.2882-6-e@80x24.org> In-Reply-To: <20211012224500.2882-1-e@80x24.org> References: <20211012224500.2882-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: This helps users make sense of which saved searches some warnings were coming from. Since I often create and discard externals, some warnings from saved searches were confusing to me without output context: "`$FOO' is unknown" "$FOO not indexed by Xapian" --- lib/PublicInbox/LEI.pm | 12 ++++++++---- lib/PublicInbox/LeiUp.pm | 7 +++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm index 51b0e95e1728..183cb545fe55 100644 --- a/lib/PublicInbox/LEI.pm +++ b/lib/PublicInbox/LEI.pm @@ -522,7 +522,7 @@ sub sigint_reap { sub fail ($$;$) { my ($self, $buf, $exit_code) = @_; $self->{failed}++; - err($self, $buf) if defined $buf; + warn($buf, "\n") if defined $buf; $self->{pkt_op_p}->pkt_do('fail_handler') if $self->{pkt_op_p}; x_it($self, ($exit_code // 1) << 8); undef; @@ -542,7 +542,7 @@ sub puts ($;@) { out(shift, map { "$_\n" } @_) } sub child_error { # passes non-fatal curl exit codes to user my ($self, $child_error, $msg) = @_; # child_error is $? $child_error ||= 1 << 8; - $self->err($msg) if $msg; + warn($msg, "\n") if defined $msg; if ($self->{pkt_op_p}) { # to top lei-daemon $self->{pkt_op_p}->pkt_do('child_error', $child_error); } elsif ($self->{sock}) { # to lei(1) client @@ -588,8 +588,12 @@ sub _lei_atfork_child { eval 'no warnings; undef $PublicInbox::LeiNoteEvent::to_flush'; undef $errors_log; $quit = \&CORE::exit; - $self->{-eml_noisy} or # only "lei import" sets this atm - $SIG{__WARN__} = PublicInbox::Eml::warn_ignore_cb(); + if (!$self->{-eml_noisy}) { # only "lei import" sets this atm + my $cb = $SIG{__WARN__} // \&CORE::warn; + $SIG{__WARN__} = sub { + $cb->(@_) unless PublicInbox::Eml::warn_ignore(@_) + }; + } $current_lei = $persist ? undef : $self; # for SIG{__WARN__} } diff --git a/lib/PublicInbox/LeiUp.pm b/lib/PublicInbox/LeiUp.pm index 3e1ca21e29e7..3011300dd836 100644 --- a/lib/PublicInbox/LeiUp.pm +++ b/lib/PublicInbox/LeiUp.pm @@ -159,6 +159,13 @@ sub event_step { # runs via PublicInbox::DS::requeue delete $l->{opt}->{all}; $l->qerr("# updating $self->{out}"); $l->{up_op_p} = $self->{op_p}; # ($l => $lei => script/lei) + my $cb = $SIG{__WARN__} // \&CORE::warn; + my $o = " (output: $self->{out})"; + local $SIG{__WARN__} = sub { + my @m = @_; + push(@m, $o) if !@m || $m[-1] !~ s/\n\z/$o\n/; + $cb->(@m); + }; eval { $l->dispatch('up', $self->{out}) }; $lei->child_error(0, $@) if $@ || $l->{failed}; # lei->fail()