From: Eric Wong Date: Thu, 6 Mar 2025 20:34:42 +0000 (+0000) Subject: XapHelper.pm: fix QP_FLAGS initialization X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7add9d3873c62b70ceec520cdfd000e191ba9e1;p=thirdparty%2Fpublic-inbox.git XapHelper.pm: fix QP_FLAGS initialization We can't use $PublicInbox::Search::QP_FLAGS until after load_xapian is called. Failure to set the correct query parser flags was causing failures in `PI_NO_CXX=1 TEST_DAEMON_XH=-X0 prove -bw t/imapd.t' since phrase parsing was broken with the Perl bindings XapHelper implementation. Now, the `check-xh0' and `check-xh1' targets both pass with PI_NO_CXX=1 set to disable the C++ xap_helper. Fixes: fa6a7919 (xap_helper: enable FLAG_PURE_NOT in external process, 2025-02-23) --- diff --git a/lib/PublicInbox/XapHelper.pm b/lib/PublicInbox/XapHelper.pm index 8f3e7e848..54e2c174b 100644 --- a/lib/PublicInbox/XapHelper.pm +++ b/lib/PublicInbox/XapHelper.pm @@ -20,7 +20,7 @@ use Carp qw(croak); my $X = \%PublicInbox::Search::X; our (%SRCH, %WORKERS, $nworker, $workerset, $in, $SHARD_NFD, $MY_FD_MAX); our $stderr = \*STDERR; -my $QP_FLAGS = $PublicInbox::Search::QP_FLAGS; +my $QP_FLAGS; sub cmd_test_inspect { my ($req) = @_; @@ -338,6 +338,8 @@ sub start (@) { local (%SRCH, %WORKERS, $SHARD_NFD, $MY_FD_MAX); PublicInbox::Search::load_xapian(); + $QP_FLAGS = $PublicInbox::Search::QP_FLAGS | + PublicInbox::Search::FLAG_PURE_NOT(); $GLP->getoptionsfromarray(\@argv, my $opt = { j => 1 }, 'j=i') or die 'bad args'; local $workerset = POSIX::SigSet->new; @@ -349,7 +351,6 @@ sub start (@) { die "E: unable to get RLIMIT_NOFILE: $!"; warn "W: RLIMIT_NOFILE=$MY_FD_MAX too low\n" if $MY_FD_MAX < 72; $MY_FD_MAX -= 64; - $QP_FLAGS |= PublicInbox::Search::FLAG_PURE_NOT(); local $nworker = $opt->{j}; return recv_loop() if $nworker == 0;