]> git.ipfire.org Git - thirdparty/public-inbox.git/commitdiff
treewide: favor Xapian (SWIG binding) over Search::Xapian
authorEric Wong <e@80x24.org>
Mon, 11 Sep 2023 07:26:39 +0000 (07:26 +0000)
committerEric Wong <e@80x24.org>
Mon, 11 Sep 2023 18:51:02 +0000 (18:51 +0000)
The Xapian SWIG bindings are favored by Xapian upstream for
ease-of-maintenance compared to the XS version.  While Debian
lags on this front, the SWIG bindings are widely available
on all *BSDs.

60 files changed:
Documentation/design_www.txt
Documentation/public-inbox-config.pod
Documentation/public-inbox-extindex.pod
Documentation/public-inbox-index.pod
Documentation/public-inbox-overview.pod
Documentation/technical/data_structures.txt
INSTALL
ci/deps.perl
ci/profiles.perl
lib/PublicInbox/Admin.pm
lib/PublicInbox/AdminEdit.pm
lib/PublicInbox/Feed.pm
lib/PublicInbox/Search.pm
lib/PublicInbox/TestCommon.pm
script/public-inbox-cindex
script/public-inbox-index
t/altid.t
t/altid_v2.t
t/cindex.t
t/convert-compact.t
t/extindex-psgi.t
t/extsearch.t
t/imapd.t
t/index-git-times.t
t/indexlevels-mirror.t
t/init.t
t/lei-externals.t
t/lei-import-nntp.t
t/lei-p2q.t
t/lei-q-thread.t
t/lei-tag.t
t/lei_overview.t
t/lei_store.t
t/lei_xsearch.t
t/mda_filter_rubylang.t
t/miscsearch.t
t/net_reader-imap.t
t/nntpd.t
t/psgi_mount.t
t/psgi_multipart_not.t
t/psgi_search.t
t/psgi_v2.t
t/replace.t
t/search-thr-index.t
t/search.t
t/solver_git.t
t/v1-add-remove-add.t
t/v1reindex.t
t/v2-add-remove-add.t
t/v2mda.t
t/v2mirror.t
t/v2reindex.t
t/v2writable.t
t/watch_filter_rubylang.t
t/watch_maildir_v2.t
t/watch_multiple_headers.t
t/xap_helper.t
t/xcpdb-reshard.t
xt/create-many-inboxes.t
xt/solver.t

index 68488b1fa253d0c49f74417982d6a8622b2a89b5..a0003f99a1c177711694d8d72cc5e63ab5b22ad3 100644 (file)
@@ -7,7 +7,7 @@ URL and anchor naming
 /$INBOX/?r=$GIT_COMMIT                 -> HTML only
 /$INBOX/new.atom                       -> Atom feed
 
-#### Optional, relies on Search::Xapian (or Xapian SWIG binding)
+#### Optional, relies on Xapian
 /$INBOX/$MESSAGE_ID/t/                 -> HTML content of thread (nested)
 /$INBOX/$MESSAGE_ID/T/                 -> HTML content of thread (flat)
        anchors:
index d2389abceb0e3224f1e78bb99ebc776ba0f8a075..871ac6c5cb0ffee37815d3f8e810f36c3ae7c6e0 100644 (file)
@@ -125,8 +125,8 @@ C<basic> only requires L<DBD::SQLite(3pm)> and provides all
 NNTP functionality along with thread-awareness in the WWW
 interface.
 
-C<medium> requires L<Search::Xapian(3pm)> to provide full-text
-term search functionality in the WWW UI.
+C<medium> requires L<Xapian(3pm)> or L<Search::Xapian(3pm)> to provide
+full-text term search functionality in the WWW UI.
 
 C<full> also includes positional information used by Xapian to
 allow for searching for phrases using quoted text.
index a5f699c515710c97b508b1da27928e8ee5fc9f8c..fbb12fe9e9ca9b7b29556f571451db46bd527e8a 100644 (file)
@@ -13,7 +13,7 @@ public-inbox-extindex [OPTIONS] [EXTINDEX_DIR] --all
 public-inbox-extindex creates and updates an external search and
 overview database used by the read-only public-inbox PSGI (HTTP),
 NNTP, and IMAP interfaces.  This requires either the
-L<Search::Xapian> XS bindings OR the L<Xapian> SWIG bindings,
+L<Xapian> SWIG bindings OR or L<Search::Xapian> XS bindings
 along with L<DBD::SQLite> and L<DBI> Perl modules.
 
 =head1 OPTIONS
index 11108f784b460a78e13eaf0d9e190d00ef630d2a..14f157a5a66e2cc67198f48730dc610e9044a875 100644 (file)
@@ -13,8 +13,8 @@ public-inbox-index [OPTIONS] --all
 public-inbox-index creates and updates the search, overview and
 NNTP article number database used by the read-only public-inbox
 HTTP and NNTP interfaces.  Currently, this requires
-L<DBD::SQLite> and L<DBI> Perl modules.  L<Search::Xapian>
-is optional, only to support the PSGI search interface.
+L<DBD::SQLite> and L<DBI> Perl modules.  L<Xapian> (or L<Search::Xapian>)
+are optional, only to support the PSGI search interface.
 
 Once the initial indices are created by public-inbox-index,
 L<public-inbox-mda(1)> and L<public-inbox-watch(1)> will
index d431857687397825363e787d53804b01adca1cfd..35917ccc2fb78a67235297f6216e2b432f41f4ce 100644 (file)
@@ -48,7 +48,7 @@ that inbox.  The instructions are roughly:
 
   # Optional but strongly recommended for hosting HTTP
   # (and required for NNTP)
-  # enable overview (requires DBD::SQLite) and, if Search::Xapian is
+  # enable overview (requires DBD::SQLite) and, if Xapian is
   # available, search:
   public-inbox-index INBOX_DIR
 
index 5ed21882b9f886ab1fd3be70f1daae9bab63b7cb..11f7804121bcd22c30d2959d34c019b645cd8556 100644 (file)
@@ -117,7 +117,7 @@ Per-inbox classes
 
 * PublicInbox::Search - Xapian read-only interface
   Common abbreviation: $srch, $ibx->search
-  Used everywhere if Search::Xapian (or Xapian.pm) is available.
+  Used everywhere if Xapian is available.
 
   Each indexed inbox has one of these, see
   public-inbox-v1-format(5) and public-inbox-v2-format(5)
diff --git a/INSTALL b/INSTALL
index 617801cc97909cab886af60d709f6e1117453b47..13a1bdc6af1fa33652ee2e3d1d56fbe088282f7c 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -67,8 +67,8 @@ Numerous optional modules are likely to be useful as well:
                                    rpm: perl-DBD-SQLite
                                    (for v2, IMAP, NNTP, or gzipped mboxes)
 
-- Search::Xapian or Xapian(.pm)    deb: libsearch-xapian-perl
-                                   pkg: p5-Search-Xapian OR p5-Xapian (FreeBSD)
+- Xapian(.pm) (or Search::Xapian)  deb: libsearch-xapian-perl
+                                   pkg: p5-Xapian (FreeBSD, NetBSD)
                                         xapian-bindings-perl (OpenBSD)
                                    rpm: perl-Search-Xapian
                                    (HTTP and IMAP search)
index 6bc38735943679a4a9d78163f5150ff003236ba3..3fa8f642db046e21e5b70c64d4dedec82a577db4 100755 (executable)
@@ -39,7 +39,7 @@ my $profiles = {
                Plack
                Plack::Test
                Plack::Middleware::ReverseProxy
-               Search::Xapian
+               Xapian
                Socket6
                highlight.pm
                xapian-tools
@@ -85,7 +85,8 @@ my $non_auto = {
                deb => 'libplack-perl',
                pkg => 'p5-Plack',
        },
-       'Search::Xapian' => {
+       'Xapian' => {
+               deb => 'libsearch-xapian-perl',
                pkg => [qw(xapian-core p5-Xapian)],
                pkg_add => [qw(xapian-core xapian-bindings-perl)],
                pkgin => [qw(xapian p5-Xapian)],
index 720cd24e3d0f89449b48e4290693c847212a293a..e18f01fa3ca0e51e6509e75058e8a74a48e9779c 100755 (executable)
@@ -70,7 +70,7 @@ my $PKG_FMT = do {
 # these package group names and '-' syntax are passed to ci/deps.perl
 my $TASKS = do {
        if ($ID =~ /\A(?:free|net|open)bsd\z/) { <<EOM
-all devtest Search::Xapian-
+all devtest Xapian-
 all devtest IO::KQueue-
 all devtest IO::KQueue
 all devtest Inline::C-
@@ -78,7 +78,7 @@ all devtest Inline::C
 EOM
        } elsif ($ID eq 'debian') { <<EOM
 all devtest
-all devtest Search::Xapian-
+all devtest Xapian-
 all devtest-
 v2essential
 essential
@@ -87,7 +87,7 @@ EOM
        } elsif ($ID eq 'centos') { <<EOM
 v2essential devtest
 essential devtest
-all Search::Xapian-
+all Xapian-
 EOM
        } else { die "TODO: support ID=$ID VERSION_ID=$VERSION_ID" }
 };
index 72ac942018e4d0697a88c1e1ce9964ea4cb6f335..3140afad62793ee04b84193e8f105f67ba335e74 100644 (file)
@@ -185,13 +185,13 @@ my @over_mod = qw(DBD::SQLite DBI);
 my %mod_groups = (
        -index => [ @base_mod, @over_mod ],
        -base => \@base_mod,
-       -search => [ @base_mod, @over_mod, 'Search::Xapian' ],
+       -search => [ @base_mod, @over_mod, 'Xapian' ],
 );
 
 sub scan_ibx_modules ($$) {
        my ($mods, $ibx) = @_;
        if (!$ibx->{indexlevel} || $ibx->{indexlevel} ne 'basic') {
-               $mods->{'Search::Xapian'} = 1;
+               $mods->{'Xapian'} = 1;
        } else {
                $mods->{$_} = 1 foreach @over_mod;
        }
@@ -203,10 +203,10 @@ sub check_require {
        while (my $mod = shift @mods) {
                if (my $groups = $mod_groups{$mod}) {
                        push @mods, @$groups;
-               } elsif ($mod eq 'Search::Xapian') {
+               } elsif ($mod eq 'Xapian') {
                        require PublicInbox::Search;
                        PublicInbox::Search::load_xapian() or
-                               $err->{'Search::Xapian || Xapian'} = $@;
+                               $err->{'Xapian || Search::Xapian'} = $@;
                } else {
                        eval "require $mod";
                        $err->{$mod} = $@ if $@;
index c8c3d3e8aeb44aae4c1202c273465fe9100d3267..654141a7becac6b74d5c7e965af44e6c0e794df4 100644 (file)
@@ -19,11 +19,11 @@ sub check_editable ($) {
                }
 
                # Undefined indexlevel, so `full'...
-               # Search::Xapian exists and the DB can be read, at least, fine
+               # Xapian exists and the DB can be read, at least, fine
                $ibx->search and next;
 
                # it's possible for a Xapian directory to exist,
-               # but Search::Xapian to go missing/broken.
+               # but Xapian to go missing/broken.
                # Make sure it's purged in that case:
                $ibx->over or die "no over.sqlite3 in $ibx->{inboxdir}\n";
 
index 69a92f8b9fc3a6e141d4f8c86eb4059969d89d17..225565f40623e3a716d70ce1d6252230ed723b23 100644 (file)
@@ -7,7 +7,7 @@ use strict;
 use v5.10.1;
 use PublicInbox::View;
 use PublicInbox::WwwAtomStream;
-use PublicInbox::Smsg; # this loads w/o Search::Xapian
+use PublicInbox::Smsg; # this loads w/o Xapian
 
 sub generate_i {
        my ($ctx) = @_;
index 2e784646d2ca4917695aeed65fc2dcfa32a253b9..d7a6f9d7913c2d1b95235a64115976c2ba809ced 100644 (file)
@@ -59,7 +59,7 @@ use PublicInbox::Smsg;
 use PublicInbox::Over;
 our $QP_FLAGS;
 our %X = map { $_ => 0 } qw(BoolWeight Database Enquire QueryParser Stem Query);
-our $Xap; # 'Search::Xapian' or 'Xapian'
+our $Xap; # 'Xapian' or 'Search::Xapian'
 our $NVRP; # '$Xap::'.('NumberValueRangeProcessor' or 'NumberRangeProcessor')
 
 # ENQ_DESCENDING and ENQ_ASCENDING weren't in SWIG Xapian.pm prior to 1.4.16,
@@ -78,10 +78,8 @@ our @MAIL_NRP;
 
 sub load_xapian () {
        return 1 if defined $Xap;
-       # n.b. PI_XAPIAN is intended for development use only.  We still
-       # favor Search::Xapian since that's what's available in current
-       # Debian stable (10.x) and derived distros.
-       for my $x (($ENV{PI_XAPIAN} // 'Search::Xapian'), 'Xapian') {
+       # n.b. PI_XAPIAN is intended for development use only
+       for my $x (($ENV{PI_XAPIAN} // 'Xapian'), 'Search::Xapian') {
                eval "require $x";
                next if $@;
 
@@ -94,8 +92,7 @@ sub load_xapian () {
 
                # NumberRangeProcessor was added in Xapian 1.3.6,
                # NumberValueRangeProcessor was removed for 1.5.0+,
-               # favor the older /Value/ variant since that's what our
-               # (currently) preferred Search::Xapian supports
+               # continue with the older /Value/ variant for now...
                $NVRP = $x.'::'.($x eq 'Xapian' && $xver ge v1.5 ?
                        'NumberRangeProcessor' : 'NumberValueRangeProcessor');
                $X{$_} = $Xap.'::'.$_ for (keys %X);
index b2774f5847aa5c60957566549969f1b9965ec35d..ec300b3f0bce9f25c2ba4de91436c7a2e5f1997a 100644 (file)
@@ -134,7 +134,7 @@ sub require_mods {
        while (my $mod = shift(@mods)) {
                if ($mod eq 'lei') {
                        require_git(2.6, $maybe ? $maybe : ());
-                       push @mods, qw(DBD::SQLite Search::Xapian +SCM_RIGHTS);
+                       push @mods, qw(DBD::SQLite Xapian +SCM_RIGHTS);
                        $mod = 'json'; # fall-through
                }
                if ($mod eq 'json') {
@@ -150,7 +150,7 @@ sub require_mods {
                        push @mods, qw(DBD::SQLite);
                        next;
                }
-               if ($mod eq 'Search::Xapian') {
+               if ($mod eq 'Xapian') {
                        if (eval { require PublicInbox::Search } &&
                                PublicInbox::Search::load_xapian()) {
                                next;
index 0526434ce1ddb2171e245d77cbcfb7cd279a9803..b5fe9cf84db44c47d132cee465ef98901e6dee24 100755 (executable)
@@ -46,7 +46,7 @@ require PublicInbox::Admin;
 PublicInbox::Admin::do_chdir(delete $opt->{C});
 my $cfg = PublicInbox::Config->new;
 my $cidx_dir = $opt->{d};
-PublicInbox::Admin::require_or_die('Search::Xapian');
+PublicInbox::Admin::require_or_die('Xapian');
 PublicInbox::Admin::progress_prepare($opt);
 my $env = PublicInbox::Admin::index_prepare($opt, $cfg);
 %ENV = (%ENV, %$env) if $env;
index f29e7c3c09b3e6b2c036622d5dbfb9fab4e75e64..74232ebfb26636dcd405bde747dfa02ba8f9e561 100755 (executable)
@@ -113,8 +113,7 @@ The following inboxes are unconfigured and will not be updated in
 @$update_extindex:\n@eidx_unconfigured
 EOF
 
-# "Search::Xapian" includes SWIG "Xapian", too:
-$opt->{compact} = 0 if !$mods->{'Search::Xapian'};
+$opt->{compact} = 0 if !$mods->{'Xapian'}; # (or old Search::Xapian)
 
 PublicInbox::Admin::require_or_die(keys %$mods);
 my $env = PublicInbox::Admin::index_prepare($opt, $cfg);
index 3ce08a6a42ab74b19d6d045bb0650311fa3ebad1..2692029e1085248878c6d1bed53eb560dfcfbe80 100644 (file)
--- a/t/altid.t
+++ b/t/altid.t
@@ -5,7 +5,7 @@ use strict;
 use v5.10.1;
 use PublicInbox::TestCommon;
 use PublicInbox::Eml;
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 use_ok 'PublicInbox::Msgmap';
 use_ok 'PublicInbox::SearchIdx';
 my ($tmpdir, $for_destroy) = tmpdir();
index c62252c1494a4a11daa01280f7c08e3d6a3b689d..6bc9045366261e01c99a75570d4bc24c02cdcc99 100644 (file)
@@ -6,7 +6,7 @@ use v5.10.1;
 use PublicInbox::TestCommon;
 use PublicInbox::Eml;
 require_git(2.6);
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 require PublicInbox::Msgmap;
 my $another = 'another-nntp.sqlite3';
 my $altid = [ "serial:gmane:file=$another" ];
index 9f57bd83b2d0884bfddda7d5576059bfaaa8f564..dbbccbb04388d039fa4836e0923e265147705c3c 100644 (file)
@@ -5,7 +5,7 @@ use v5.12;
 use PublicInbox::TestCommon;
 use Cwd qw(getcwd abs_path);
 use List::Util qw(sum);
-require_mods(qw(json Search::Xapian));
+require_mods(qw(json Xapian));
 use_ok 'PublicInbox::CodeSearchIdx';
 require PublicInbox::Import;
 my ($tmp, $for_destroy) = tmpdir();
index bad6560e9cff2344d2007a0eb2d85084ff9bd545..1ac3517df2d242131e8e0e7be096a32f90f9baea 100644 (file)
@@ -7,7 +7,7 @@ use PublicInbox::Eml;
 use PublicInbox::TestCommon;
 use PublicInbox::Import;
 require_git(2.6);
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 have_xapian_compact;
 my ($tmpdir, $for_destroy) = tmpdir();
 my $ibx = create_inbox 'v1', indexlevel => 'medium', tmpdir => "$tmpdir/v1",
index f10ffbb63ab2b40db78dc4f14650dcc989629137..f71210a57a2fc5f77b99bf1b6eb90d37b7fe345b 100644 (file)
@@ -8,7 +8,7 @@ use PublicInbox::Config;
 use File::Copy qw(cp);
 use IO::Handle ();
 require_git(2.6);
-require_mods(qw(json DBD::SQLite Search::Xapian
+require_mods(qw(json DBD::SQLite Xapian
                HTTP::Request::Common Plack::Test URI::Escape Plack::Builder));
 use_ok($_) for (qw(HTTP::Request::Common Plack::Test));
 use IO::Uncompress::Gunzip qw(gunzip);
index 8cbd26f07a3f451d73a9913de9b834ef2965c0da..545330aa7b694ae0032e23cce892f2927dd177f4 100644 (file)
@@ -7,7 +7,7 @@ use PublicInbox::Config;
 use PublicInbox::InboxWritable;
 use Fcntl qw(:seek);
 require_git(2.6);
-require_mods(qw(json DBD::SQLite Search::Xapian));
+require_mods(qw(json DBD::SQLite Xapian));
 require PublicInbox::Search;
 use_ok 'PublicInbox::ExtSearch';
 use_ok 'PublicInbox::ExtSearchIdx';
index 98de40d432b5afb442b41758521aab0dc455511f..9606291eaed4bdabc1f8861ad312099c1d437977 100644 (file)
--- a/t/imapd.t
+++ b/t/imapd.t
@@ -21,7 +21,7 @@ my $first_range = '0';
 
 my $level = 'basic';
 SKIP: {
-       require_mods('Search::Xapian', 1);
+       require_mods('Xapian', 1);
        $level = 'medium';
 };
 
index 96886c5e75aa3e216b2e4e0e933957e11d236830..eac2d6509b4f37bae063f0a2266f826d25661c9f 100644 (file)
@@ -10,7 +10,7 @@ use PublicInbox::Import;
 use File::Path qw(remove_tree);
 require PublicInbox::InboxWritable;
 
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 use_ok 'PublicInbox::Over';
 
 my ($tmpdir, $for_destroy) = tmpdir();
index 62411671cae17157526252db83d23ee480b01337..c852f72cb0150496c82d48be2a1bfaa841620452 100644 (file)
@@ -168,7 +168,7 @@ my $import_index_incremental = sub {
 $import_index_incremental->($PI_TEST_VERSION, 'basic', $mime);
 
 SKIP: {
-       require_mods(qw(Search::Xapian), 2);
+       require_mods(qw(Xapian), 2);
        foreach my $l (qw(medium full)) {
                $import_index_incremental->($PI_TEST_VERSION, $l, $mime);
        }
index 82a2a4436261b29191a79cdb872f5ac375063e4c..abe3a372606d8ab75fc91a7c9997ab75245c7cc5 100644 (file)
--- a/t/init.t
+++ b/t/init.t
@@ -121,7 +121,7 @@ sub quiet_fail {
 }
 
 SKIP: {
-       require_mods(qw(DBD::SQLite Search::Xapian), 2);
+       require_mods(qw(DBD::SQLite Xapian), 2);
        require_git(2.6, 2);
        use_ok 'PublicInbox::Msgmap';
        local $ENV{PI_DIR} = "$tmpdir/.public-inbox/";
index 284be1b9866b838a904fedc2576738e7ce9eb5b4..aeaf8ee467a87b08728db12c2fd360b162b8e769 100644 (file)
@@ -4,7 +4,7 @@
 use strict; use v5.10.1; use PublicInbox::TestCommon;
 use Fcntl qw(SEEK_SET);
 require_git 2.6;
-require_mods(qw(json DBD::SQLite Search::Xapian));
+require_mods(qw(json DBD::SQLite Xapian));
 use POSIX qw(WTERMSIG WIFSIGNALED SIGPIPE);
 
 my @onions = map { "http://$_.onion/meta/" } qw(
index c3ee06a24c1387bbdeec7d5649d612e2e68d6056..14c644e051e2c850cd74dfa05091ecf0a7f760da 100644 (file)
@@ -3,7 +3,7 @@
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict; use v5.10.1; use PublicInbox::TestCommon;
 require_git 2.6;
-require_mods(qw(lei json DBD::SQLite Search::Xapian Net::NNTP));
+require_mods(qw(lei json DBD::SQLite Xapian Net::NNTP));
 my ($ro_home, $cfg_path) = setup_public_inboxes;
 my ($tmpdir, $for_destroy) = tmpdir;
 my $sock = tcp_server;
index bf40a43be46658658186af5e8c068ac92f283300..44f37d1951734df49ca5e17a451febc6e4f3e8bc 100644 (file)
@@ -3,7 +3,7 @@
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict; use v5.10.1; use PublicInbox::TestCommon;
 require_git 2.6;
-require_mods(qw(json DBD::SQLite Search::Xapian));
+require_mods(qw(json DBD::SQLite Xapian));
 
 test_lei(sub {
        ok(!lei(qw(p2q this-better-cause-format-patch-to-fail)),
index 26d06eec81e46c54e3eaf90df9ee219ea770150b..72d3a565c6315445d3b050eca21e9b62f7033fb6 100644 (file)
@@ -3,7 +3,7 @@
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict; use v5.10.1; use PublicInbox::TestCommon;
 require_git 2.6;
-require_mods(qw(json DBD::SQLite Search::Xapian));
+require_mods(qw(json DBD::SQLite Xapian));
 use PublicInbox::LeiToMail;
 my ($ro_home, $cfg_path) = setup_public_inboxes;
 test_lei(sub {
index 5941cd0f3da7f91f7550a03a2bf45d72cdf8ee47..822677a7cd45baeb2419e5155b777179494b157e 100644 (file)
@@ -3,7 +3,7 @@
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict; use v5.10.1; use PublicInbox::TestCommon;
 require_git 2.6;
-require_mods(qw(json DBD::SQLite Search::Xapian));
+require_mods(qw(json DBD::SQLite Xapian));
 my ($ro_home, $cfg_path) = setup_public_inboxes;
 my $check_kw = sub {
        my ($exp, %opt) = @_;
index dd9e2cadcbae49a7c06af2241d93144f1332c006..b4181ffd0cfdfe32a016c68cfc44dce9fba368db 100644 (file)
@@ -6,7 +6,7 @@ use v5.10.1;
 use Test::More;
 use PublicInbox::TestCommon;
 use POSIX qw(_exit);
-require_mods(qw(Search::Xapian DBD::SQLite));
+require_mods(qw(Xapian DBD::SQLite));
 require_ok 'PublicInbox::LeiOverview';
 
 my $ovv = bless {}, 'PublicInbox::LeiOverview';
index 5a5e5de03e16452467c07d44528dca1dacc516b3..17ee0729f3aafe288da612158bb7f9826ced64a0 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 use v5.10.1;
 use Test::More;
 use PublicInbox::TestCommon;
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 require_git 2.6;
 require_ok 'PublicInbox::LeiStore';
 require_ok 'PublicInbox::ExtSearch';
index fabceb418b03ea2933036a6a61b3fbf8542ae462..977fb1e92bb671adb7c5aa92df245572126d4bd1 100644 (file)
@@ -6,7 +6,7 @@ use v5.10.1;
 use List::Util qw(shuffle);
 use PublicInbox::TestCommon;
 use PublicInbox::Eml;
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 require PublicInbox::ExtSearchIdx;
 require_git 2.6;
 require_ok 'PublicInbox::LeiXSearch';
index d05eec258ecb23587cf78f733a2c61a67e7b26bb..42fa6101594db19c921677b8f45c7bcc66e51816 100644 (file)
@@ -7,7 +7,7 @@ use PublicInbox::Eml;
 use PublicInbox::Config;
 use PublicInbox::TestCommon;
 require_git(2.6);
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 use_ok 'PublicInbox::V2Writable';
 my ($tmpdir, $for_destroy) = tmpdir();
 my $pi_config = "$tmpdir/pi_config";
index 307812a4ddee9937f1b34418c26dce1e01d17583..ec837153d7a8828b49ebb9764c63a3a095d1aab9 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 use v5.10.1;
 use Test::More;
 use PublicInbox::TestCommon;
-require_mods(qw(Search::Xapian DBD::SQLite));
+require_mods(qw(Xapian DBD::SQLite));
 use_ok 'PublicInbox::MiscSearch';
 use_ok 'PublicInbox::MiscIdx';
 
index 5de8f92b809b654af2e76753cc3b99bc585bc261..7b7f5cbe39c7796475fbc66a2731e4910158c866 100644 (file)
@@ -3,7 +3,7 @@
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict; use v5.10.1; use PublicInbox::TestCommon;
 require_git 2.6;
-require_mods(qw(-imapd Search::Xapian Mail::IMAPClient));
+require_mods(qw(-imapd Xapian Mail::IMAPClient));
 use PublicInbox::Config;
 my ($tmpdir, $for_destroy) = tmpdir;
 my ($ro_home, $cfg_path) = setup_public_inboxes;
index 80df4dc58bf6781816709171309f9b46dfb3fb20..f98d638e6f9f33c3c375dee1657c8deca0a44115 100644 (file)
--- a/t/nntpd.t
+++ b/t/nntpd.t
@@ -328,18 +328,20 @@ Date: Fri, 02 Oct 1993 00:00:00 +0000
        }
        my $noerr = { 2 => \(my $null) };
        SKIP: {
-               if ($INC{'Search/Xapian.pm'} && ($ENV{TEST_RUN_MODE}//2)) {
-                       skip 'Search/Xapian.pm pre-loaded (by t/run.perl?)', 1;
+               if ($INC{'Search/Xapian.pm'} || $INC{'Xapian.pm'} &&
+                               ($ENV{TEST_RUN_MODE} // 2)) {
+                       skip 'Xapian.pm pre-loaded (by t/run.perl?)', 1;
                }
                $lsof or skip 'lsof missing', 1;
                my @of = xqx([$lsof, '-p', $td->{pid}], undef, $noerr);
                skip('lsof broken', 1) if (!scalar(@of) || $?);
-               my @xap = grep m!Search/Xapian!, @of;
-               is_deeply(\@xap, [], 'Xapian not loaded in nntpd');
+               my @xap = grep m!\bXapian\b!, @of;
+               is_deeply(\@xap, [], 'Xapian not loaded in nntpd') or
+                       diag explain(\@of);
        }
        # -compact requires Xapian
        SKIP: {
-               require_mods('Search::Xapian', 2);
+               require_mods('Xapian', 2);
                have_xapian_compact or skip 'xapian-compact missing', 2;
                is(xsys(qw(git config), "--file=$home/.public-inbox/config",
                                "publicinbox.$group.indexlevel", 'medium'),
index 7c5487f3f99ca9e1bacaafb37863bdeb786d1553..28689f11169dea9e4332888f1ccb903a8cdf4ec2 100644 (file)
@@ -69,7 +69,7 @@ test_psgi($app, sub {
 });
 
 SKIP: {
-       require_mods(qw(DBD::SQLite Search::Xapian IO::Uncompress::Gunzip), 3);
+       require_mods(qw(DBD::SQLite Xapian IO::Uncompress::Gunzip), 3);
        require_ok 'PublicInbox::SearchIdx';
        PublicInbox::SearchIdx->new($ibx, 1)->index_sync;
        test_psgi($app, sub {
index 5f4c06b76569b22323d7b143a8e27f4268a13c73..96be171655c160a2798629ccdcff8e8da47c82b5 100644 (file)
@@ -7,7 +7,7 @@ use PublicInbox::TestCommon;
 use PublicInbox::Eml;
 use PublicInbox::Config;
 require_git 2.6;
-my @mods = qw(DBD::SQLite Search::Xapian HTTP::Request::Common
+my @mods = qw(DBD::SQLite Xapian HTTP::Request::Common
               Plack::Test URI::Escape Plack::Builder Plack::Test);
 require_mods(@mods);
 use_ok($_) for (qw(HTTP::Request::Common Plack::Test));
index 27946391cfd3030cc4fa6d6356ed7ec4f53cbc95..d7c9f1836b9bae5a41feb49e0237cbb7a8e404f0 100644 (file)
@@ -8,7 +8,7 @@ use IO::Uncompress::Gunzip qw(gunzip);
 use PublicInbox::Eml;
 use PublicInbox::Config;
 use PublicInbox::Inbox;
-my @mods = qw(DBD::SQLite Search::Xapian HTTP::Request::Common Plack::Test
+my @mods = qw(DBD::SQLite Xapian HTTP::Request::Common Plack::Test
                URI::Escape Plack::Builder);
 require_mods(@mods);
 use_ok($_) for (qw(HTTP::Request::Common Plack::Test));
index 0a77adfb4bae30c773a90e66d6af1a2520063b8f..5ccaab19964aa8e77d2557899d13113abf2f604b 100644 (file)
@@ -9,7 +9,7 @@ require_git(2.6);
 use PublicInbox::Eml;
 use PublicInbox::Config;
 use PublicInbox::MID qw(mids);
-require_mods(qw(DBD::SQLite Search::Xapian HTTP::Request::Common Plack::Test
+require_mods(qw(DBD::SQLite Xapian HTTP::Request::Common Plack::Test
                URI::Escape Plack::Builder HTTP::Date));
 use_ok($_) for (qw(HTTP::Request::Common Plack::Test));
 use_ok 'PublicInbox::WWW';
index 0e1213993f0a80f6842cb21cc18c5f7ab3899bdc..a61c3ca0656d0b494278cf953ff1c939e398b08e 100644 (file)
@@ -187,7 +187,7 @@ test_replace(2, 'basic', $opt = { %$opt, post => \&pad_msgs });
 test_replace(2, 'basic', $opt = { %$opt, rotate_bytes => 1 });
 
 SKIP: {
-       require_mods(qw(Search::Xapian), 8);
+       require_mods(qw(Xapian), 8);
        for my $l (qw(medium)) {
                test_replace(2, $l, {});
                $opt = { pre => \&pad_msgs };
index 62745dbce1d5122db18164999addb4902e43812e..aecd064fb79c75083433cebbed8a1783a88313e9 100644 (file)
@@ -7,7 +7,7 @@ use Test::More;
 use PublicInbox::TestCommon;
 use PublicInbox::MID qw(mids);
 use PublicInbox::Eml;
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 require PublicInbox::SearchIdx;
 require PublicInbox::Smsg;
 require PublicInbox::Inbox;
index 8084c41bc99e07a2ee9bd051c96c1f85be9d6cdd..636dc5cfe16a128fd6b829081cd0283821904a11 100644 (file)
@@ -4,7 +4,7 @@
 use strict;
 use v5.10;
 use PublicInbox::TestCommon;
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 require PublicInbox::SearchIdx;
 require PublicInbox::Inbox;
 require PublicInbox::InboxWritable;
index c210c1eeb32f06ac6e7139ad6a85f98624aab5c8..f8cafa5eb18c4196f5a77c29566d1a8847170b66 100644 (file)
@@ -7,7 +7,7 @@ use Cwd qw(abs_path);
 require_git v2.6;
 use PublicInbox::ContentHash qw(git_sha);
 use PublicInbox::Spawn qw(popen_rd);
-require_mods(qw(DBD::SQLite Search::Xapian URI::Escape));
+require_mods(qw(DBD::SQLite Xapian URI::Escape));
 require PublicInbox::SolverGit;
 my $rdr = { 2 => \(my $null) };
 my $git_dir = xqx([qw(git rev-parse --git-common-dir)], undef, $rdr);
index ae045dfa2d4d3af8e7d7c4dac0128572161213e8..50ff81435f5904059ad8f4eacaeeb6d9dfb32114 100644 (file)
@@ -6,7 +6,7 @@ use Test::More;
 use PublicInbox::Import;
 use PublicInbox::TestCommon;
 use PublicInbox::Eml;
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 require PublicInbox::SearchIdx;
 my ($inboxdir, $for_destroy) = tmpdir();
 my $ibx = {
index f593b3239586e0a013f155451dc9e67138c9b874..2d12e3f5dde22caf1e7110871cd9d7f3e9531a09 100644 (file)
@@ -8,7 +8,7 @@ use File::Path qw(remove_tree);
 use PublicInbox::TestCommon;
 use PublicInbox::Eml;
 require_git(2.6);
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 use_ok 'PublicInbox::SearchIdx';
 use_ok 'PublicInbox::Import';
 use_ok 'PublicInbox::OverIdx';
index 6affc83079fdcc809ff6fbdafb056dee92937f05..ddf8d24807dbdd0eb0d8448af2433298707145cb 100644 (file)
@@ -6,7 +6,7 @@ use Test::More;
 use PublicInbox::Eml;
 use PublicInbox::TestCommon;
 require_git(2.6);
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 use_ok 'PublicInbox::V2Writable';
 my ($inboxdir, $for_destroy) = tmpdir();
 my $ibx = {
index 8f2f335d96b8d834cfe5ffd38df13dfc6599595a..a49eeb6de1c2e25bb5b6141711dcc8dbdda11d89 100644 (file)
--- a/t/v2mda.t
+++ b/t/v2mda.t
@@ -11,7 +11,7 @@ use PublicInbox::Eml;
 require_git(2.6);
 
 my $V = 2;
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 use_ok 'PublicInbox::V2Writable';
 my ($tmpdir, $for_destroy) = tmpdir();
 my $ibx = {
index c1c66d45a41d4c4c8f2e2ca1cf048ad5b372ddc3..88b67bc16be4ac8dc01b4bd01e92fc63f9576090 100644 (file)
@@ -14,7 +14,7 @@ use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
 
 # Integration tests for HTTP cloning + mirroring
 require_mods(qw(Plack::Util Plack::Builder
-               HTTP::Date HTTP::Status Search::Xapian DBD::SQLite));
+               HTTP::Date HTTP::Status Xapian DBD::SQLite));
 use_ok 'PublicInbox::V2Writable';
 use PublicInbox::InboxWritable;
 use PublicInbox::Eml;
index cafe8648d1e8b0dd1275f6af884585402e5aee70..406c051769654148c3fc7c47d94248b2869860f2 100644 (file)
@@ -5,7 +5,7 @@ use PublicInbox::Eml;
 use PublicInbox::ContentHash qw(content_digest);
 use File::Path qw(remove_tree);
 require_git(2.6);
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 use_ok 'PublicInbox::V2Writable';
 use_ok 'PublicInbox::OverIdx';
 my ($inboxdir, $for_destroy) = tmpdir();
index 0d1022047d49b8853a8e6a9370e3b960c5efde95..1b7e9e7d3c3d73b279f1e7dccc47d80eb2dfa90b 100644 (file)
@@ -8,7 +8,7 @@ use PublicInbox::ContentHash qw(content_digest content_hash);
 use PublicInbox::TestCommon;
 use Cwd qw(abs_path);
 require_git(2.6);
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 local $ENV{HOME} = abs_path('t');
 use_ok 'PublicInbox::V2Writable';
 umask 007;
index 643dbb8a6e020ccea27bc98059875566838a043a..a6153e46ce9c75033dcf295adeebe58834035321 100644 (file)
@@ -6,7 +6,7 @@ use PublicInbox::TestCommon;
 use Test::More;
 use PublicInbox::Eml;
 use PublicInbox::Config;
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 use_ok 'PublicInbox::Watch';
 use_ok 'PublicInbox::Emergency';
 my ($tmpdir, $for_destroy) = tmpdir();
index 7b46232b36beab4473437f0505b3db5ab705396a..386798362884e54d06ea5385e54b32c5b3c787b7 100644 (file)
@@ -8,7 +8,7 @@ use PublicInbox::Config;
 use PublicInbox::TestCommon;
 use PublicInbox::Import;
 require_git(2.6);
-require_mods(qw(Search::Xapian DBD::SQLite));
+require_mods(qw(Xapian DBD::SQLite));
 require PublicInbox::V2Writable;
 my ($tmpdir, $for_destroy) = tmpdir();
 my $inboxdir = "$tmpdir/v2";
index 33ed0770edd61180e4994f5a8e4de50461c7d764..13dd3452cba7c55633006497b4a91acf140b59d1 100644 (file)
@@ -5,7 +5,7 @@ use Test::More;
 use PublicInbox::Config;
 use PublicInbox::TestCommon;
 require_git(2.6);
-require_mods(qw(Search::Xapian DBD::SQLite));
+require_mods(qw(Xapian DBD::SQLite));
 my ($tmpdir, $for_destroy) = tmpdir();
 my $inboxdir = "$tmpdir/v2";
 my $maildir = "$tmpdir/md";
index 0a21132900b3ea3b77cdf06308fab2dd39237615..fe5d2d1429f2c39a572edc671a4833cf2348577a 100644 (file)
@@ -3,7 +3,7 @@
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use v5.12;
 use PublicInbox::TestCommon;
-require_mods(qw(DBD::SQLite Search::Xapian +SCM_RIGHTS)); # TODO: FIFO support?
+require_mods(qw(DBD::SQLite Xapian +SCM_RIGHTS)); # TODO: FIFO support?
 use PublicInbox::Spawn qw(spawn);
 use Socket qw(AF_UNIX SOCK_SEQPACKET SOCK_STREAM);
 require PublicInbox::AutoReap;
index 8516b90793104c53c22d0b3b19def65ac1e0dbb3..cde9f151b4eef913dfc3d2922a6d0ac0ad277140 100644 (file)
@@ -4,7 +4,7 @@
 use strict;
 use v5.10.1;
 use PublicInbox::TestCommon;
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 require_git('2.6');
 use PublicInbox::Eml;
 require PublicInbox::Search;
index d22803e3c2746a6d6898843448cf79958114cc8c..3d8932b7e602c84cd2123908a0557ba594455231 100644 (file)
@@ -19,7 +19,7 @@ mkpath($many_root);
 $many_root = abs_path($many_root);
 $many_root =~ m!\A\Q$cwd\E/! and BAIL_OUT "$many_root must not be in $cwd";
 require_git 2.6;
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 use_ok 'PublicInbox::V2Writable';
 my $nr_inbox = $ENV{NR_INBOX} // 10;
 my $nproc = $ENV{NPROC} || PublicInbox::IPC::detect_nproc() || 2;
index 1f004bf50c946067656ea514f5e811d7b24896ec..06f5a4936dc26bdb0b6d665c9deb337142577058 100644 (file)
@@ -5,7 +5,7 @@ use v5.12;
 use PublicInbox::TestCommon;
 use PublicInbox::Config; # this relies on PI_CONFIG // ~/.public-inbox/config
 my @psgi = qw(HTTP::Request::Common Plack::Test URI::Escape Plack::Builder);
-require_mods(qw(DBD::SQLite Search::Xapian), @psgi);
+require_mods(qw(DBD::SQLite Xapian), @psgi);
 use_ok($_) for @psgi;
 use_ok 'PublicInbox::WWW';
 my $cfg = PublicInbox::Config->new;