From 22c5b815cc4105228fd34cdaa2826dca70552a3e Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 11 Sep 2023 07:26:39 +0000 Subject: [PATCH] treewide: favor Xapian (SWIG binding) over Search::Xapian 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. --- Documentation/design_www.txt | 2 +- Documentation/public-inbox-config.pod | 4 ++-- Documentation/public-inbox-extindex.pod | 2 +- Documentation/public-inbox-index.pod | 4 ++-- Documentation/public-inbox-overview.pod | 2 +- Documentation/technical/data_structures.txt | 2 +- INSTALL | 4 ++-- ci/deps.perl | 5 +++-- ci/profiles.perl | 6 +++--- lib/PublicInbox/Admin.pm | 8 ++++---- lib/PublicInbox/AdminEdit.pm | 4 ++-- lib/PublicInbox/Feed.pm | 2 +- lib/PublicInbox/Search.pm | 11 ++++------- lib/PublicInbox/TestCommon.pm | 4 ++-- script/public-inbox-cindex | 2 +- script/public-inbox-index | 3 +-- t/altid.t | 2 +- t/altid_v2.t | 2 +- t/cindex.t | 2 +- t/convert-compact.t | 2 +- t/extindex-psgi.t | 2 +- t/extsearch.t | 2 +- t/imapd.t | 2 +- t/index-git-times.t | 2 +- t/indexlevels-mirror.t | 2 +- t/init.t | 2 +- t/lei-externals.t | 2 +- t/lei-import-nntp.t | 2 +- t/lei-p2q.t | 2 +- t/lei-q-thread.t | 2 +- t/lei-tag.t | 2 +- t/lei_overview.t | 2 +- t/lei_store.t | 2 +- t/lei_xsearch.t | 2 +- t/mda_filter_rubylang.t | 2 +- t/miscsearch.t | 2 +- t/net_reader-imap.t | 2 +- t/nntpd.t | 12 +++++++----- t/psgi_mount.t | 2 +- t/psgi_multipart_not.t | 2 +- t/psgi_search.t | 2 +- t/psgi_v2.t | 2 +- t/replace.t | 2 +- t/search-thr-index.t | 2 +- t/search.t | 2 +- t/solver_git.t | 2 +- t/v1-add-remove-add.t | 2 +- t/v1reindex.t | 2 +- t/v2-add-remove-add.t | 2 +- t/v2mda.t | 2 +- t/v2mirror.t | 2 +- t/v2reindex.t | 2 +- t/v2writable.t | 2 +- t/watch_filter_rubylang.t | 2 +- t/watch_maildir_v2.t | 2 +- t/watch_multiple_headers.t | 2 +- t/xap_helper.t | 2 +- t/xcpdb-reshard.t | 2 +- xt/create-many-inboxes.t | 2 +- xt/solver.t | 2 +- 60 files changed, 81 insertions(+), 82 deletions(-) diff --git a/Documentation/design_www.txt b/Documentation/design_www.txt index 68488b1fa..a0003f99a 100644 --- a/Documentation/design_www.txt +++ b/Documentation/design_www.txt @@ -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: diff --git a/Documentation/public-inbox-config.pod b/Documentation/public-inbox-config.pod index d2389abce..871ac6c5c 100644 --- a/Documentation/public-inbox-config.pod +++ b/Documentation/public-inbox-config.pod @@ -125,8 +125,8 @@ C only requires L and provides all NNTP functionality along with thread-awareness in the WWW interface. -C requires L to provide full-text -term search functionality in the WWW UI. +C requires L or L to provide +full-text term search functionality in the WWW UI. C also includes positional information used by Xapian to allow for searching for phrases using quoted text. diff --git a/Documentation/public-inbox-extindex.pod b/Documentation/public-inbox-extindex.pod index a5f699c51..fbb12fe9e 100644 --- a/Documentation/public-inbox-extindex.pod +++ b/Documentation/public-inbox-extindex.pod @@ -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 XS bindings OR the L SWIG bindings, +L SWIG bindings OR or L XS bindings along with L and L Perl modules. =head1 OPTIONS diff --git a/Documentation/public-inbox-index.pod b/Documentation/public-inbox-index.pod index 11108f784..14f157a5a 100644 --- a/Documentation/public-inbox-index.pod +++ b/Documentation/public-inbox-index.pod @@ -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 and L Perl modules. L -is optional, only to support the PSGI search interface. +L and L Perl modules. L (or L) +are optional, only to support the PSGI search interface. Once the initial indices are created by public-inbox-index, L and L will diff --git a/Documentation/public-inbox-overview.pod b/Documentation/public-inbox-overview.pod index d43185768..35917ccc2 100644 --- a/Documentation/public-inbox-overview.pod +++ b/Documentation/public-inbox-overview.pod @@ -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 diff --git a/Documentation/technical/data_structures.txt b/Documentation/technical/data_structures.txt index 5ed21882b..11f780412 100644 --- a/Documentation/technical/data_structures.txt +++ b/Documentation/technical/data_structures.txt @@ -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 617801cc9..13a1bdc6a 100644 --- 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) diff --git a/ci/deps.perl b/ci/deps.perl index 6bc387359..3fa8f642d 100755 --- a/ci/deps.perl +++ b/ci/deps.perl @@ -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)], diff --git a/ci/profiles.perl b/ci/profiles.perl index 720cd24e3..e18f01fa3 100755 --- a/ci/profiles.perl +++ b/ci/profiles.perl @@ -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/) { < [ @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 $@; diff --git a/lib/PublicInbox/AdminEdit.pm b/lib/PublicInbox/AdminEdit.pm index c8c3d3e8a..654141a7b 100644 --- a/lib/PublicInbox/AdminEdit.pm +++ b/lib/PublicInbox/AdminEdit.pm @@ -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"; diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm index 69a92f8b9..225565f40 100644 --- a/lib/PublicInbox/Feed.pm +++ b/lib/PublicInbox/Feed.pm @@ -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) = @_; diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm index 2e784646d..d7a6f9d79 100644 --- a/lib/PublicInbox/Search.pm +++ b/lib/PublicInbox/Search.pm @@ -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); diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm index b2774f584..ec300b3f0 100644 --- a/lib/PublicInbox/TestCommon.pm +++ b/lib/PublicInbox/TestCommon.pm @@ -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; diff --git a/script/public-inbox-cindex b/script/public-inbox-cindex index 0526434ce..b5fe9cf84 100755 --- a/script/public-inbox-cindex +++ b/script/public-inbox-cindex @@ -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; diff --git a/script/public-inbox-index b/script/public-inbox-index index f29e7c3c0..74232ebfb 100755 --- a/script/public-inbox-index +++ b/script/public-inbox-index @@ -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); diff --git a/t/altid.t b/t/altid.t index 3ce08a6a4..2692029e1 100644 --- 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(); diff --git a/t/altid_v2.t b/t/altid_v2.t index c62252c14..6bc904536 100644 --- a/t/altid_v2.t +++ b/t/altid_v2.t @@ -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" ]; diff --git a/t/cindex.t b/t/cindex.t index 9f57bd83b..dbbccbb04 100644 --- a/t/cindex.t +++ b/t/cindex.t @@ -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(); diff --git a/t/convert-compact.t b/t/convert-compact.t index bad6560e9..1ac3517df 100644 --- a/t/convert-compact.t +++ b/t/convert-compact.t @@ -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", diff --git a/t/extindex-psgi.t b/t/extindex-psgi.t index f10ffbb63..f71210a57 100644 --- a/t/extindex-psgi.t +++ b/t/extindex-psgi.t @@ -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); diff --git a/t/extsearch.t b/t/extsearch.t index 8cbd26f07..545330aa7 100644 --- a/t/extsearch.t +++ b/t/extsearch.t @@ -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'; diff --git a/t/imapd.t b/t/imapd.t index 98de40d43..9606291ea 100644 --- 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'; }; diff --git a/t/index-git-times.t b/t/index-git-times.t index 96886c5e7..eac2d6509 100644 --- a/t/index-git-times.t +++ b/t/index-git-times.t @@ -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(); diff --git a/t/indexlevels-mirror.t b/t/indexlevels-mirror.t index 62411671c..c852f72cb 100644 --- a/t/indexlevels-mirror.t +++ b/t/indexlevels-mirror.t @@ -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); } diff --git a/t/init.t b/t/init.t index 82a2a4436..abe3a3726 100644 --- 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/"; diff --git a/t/lei-externals.t b/t/lei-externals.t index 284be1b98..aeaf8ee46 100644 --- a/t/lei-externals.t +++ b/t/lei-externals.t @@ -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( diff --git a/t/lei-import-nntp.t b/t/lei-import-nntp.t index c3ee06a24..14c644e05 100644 --- a/t/lei-import-nntp.t +++ b/t/lei-import-nntp.t @@ -3,7 +3,7 @@ # License: AGPL-3.0+ 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; diff --git a/t/lei-p2q.t b/t/lei-p2q.t index bf40a43be..44f37d195 100644 --- a/t/lei-p2q.t +++ b/t/lei-p2q.t @@ -3,7 +3,7 @@ # License: AGPL-3.0+ 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)), diff --git a/t/lei-q-thread.t b/t/lei-q-thread.t index 26d06eec8..72d3a565c 100644 --- a/t/lei-q-thread.t +++ b/t/lei-q-thread.t @@ -3,7 +3,7 @@ # License: AGPL-3.0+ 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 { diff --git a/t/lei-tag.t b/t/lei-tag.t index 5941cd0f3..822677a7c 100644 --- a/t/lei-tag.t +++ b/t/lei-tag.t @@ -3,7 +3,7 @@ # License: AGPL-3.0+ 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) = @_; diff --git a/t/lei_overview.t b/t/lei_overview.t index dd9e2cadc..b4181ffd0 100644 --- a/t/lei_overview.t +++ b/t/lei_overview.t @@ -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'; diff --git a/t/lei_store.t b/t/lei_store.t index 5a5e5de03..17ee0729f 100644 --- a/t/lei_store.t +++ b/t/lei_store.t @@ -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'; diff --git a/t/lei_xsearch.t b/t/lei_xsearch.t index fabceb418..977fb1e92 100644 --- a/t/lei_xsearch.t +++ b/t/lei_xsearch.t @@ -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'; diff --git a/t/mda_filter_rubylang.t b/t/mda_filter_rubylang.t index d05eec258..42fa61015 100644 --- a/t/mda_filter_rubylang.t +++ b/t/mda_filter_rubylang.t @@ -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"; diff --git a/t/miscsearch.t b/t/miscsearch.t index 307812a4d..ec837153d 100644 --- a/t/miscsearch.t +++ b/t/miscsearch.t @@ -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'; diff --git a/t/net_reader-imap.t b/t/net_reader-imap.t index 5de8f92b8..7b7f5cbe3 100644 --- a/t/net_reader-imap.t +++ b/t/net_reader-imap.t @@ -3,7 +3,7 @@ # License: AGPL-3.0+ 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; diff --git a/t/nntpd.t b/t/nntpd.t index 80df4dc58..f98d638e6 100644 --- 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'), diff --git a/t/psgi_mount.t b/t/psgi_mount.t index 7c5487f3f..28689f111 100644 --- a/t/psgi_mount.t +++ b/t/psgi_mount.t @@ -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 { diff --git a/t/psgi_multipart_not.t b/t/psgi_multipart_not.t index 5f4c06b76..96be17165 100644 --- a/t/psgi_multipart_not.t +++ b/t/psgi_multipart_not.t @@ -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)); diff --git a/t/psgi_search.t b/t/psgi_search.t index 27946391c..d7c9f1836 100644 --- a/t/psgi_search.t +++ b/t/psgi_search.t @@ -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)); diff --git a/t/psgi_v2.t b/t/psgi_v2.t index 0a77adfb4..5ccaab199 100644 --- a/t/psgi_v2.t +++ b/t/psgi_v2.t @@ -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'; diff --git a/t/replace.t b/t/replace.t index 0e1213993..a61c3ca06 100644 --- a/t/replace.t +++ b/t/replace.t @@ -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 }; diff --git a/t/search-thr-index.t b/t/search-thr-index.t index 62745dbce..aecd064fb 100644 --- a/t/search-thr-index.t +++ b/t/search-thr-index.t @@ -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; diff --git a/t/search.t b/t/search.t index 8084c41bc..636dc5cfe 100644 --- a/t/search.t +++ b/t/search.t @@ -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; diff --git a/t/solver_git.t b/t/solver_git.t index c210c1eeb..f8cafa5eb 100644 --- a/t/solver_git.t +++ b/t/solver_git.t @@ -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); diff --git a/t/v1-add-remove-add.t b/t/v1-add-remove-add.t index ae045dfa2..50ff81435 100644 --- a/t/v1-add-remove-add.t +++ b/t/v1-add-remove-add.t @@ -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 = { diff --git a/t/v1reindex.t b/t/v1reindex.t index f593b3239..2d12e3f5d 100644 --- a/t/v1reindex.t +++ b/t/v1reindex.t @@ -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'; diff --git a/t/v2-add-remove-add.t b/t/v2-add-remove-add.t index 6affc8307..ddf8d2480 100644 --- a/t/v2-add-remove-add.t +++ b/t/v2-add-remove-add.t @@ -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 = { diff --git a/t/v2mda.t b/t/v2mda.t index 8f2f335d9..a49eeb6de 100644 --- 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 = { diff --git a/t/v2mirror.t b/t/v2mirror.t index c1c66d45a..88b67bc16 100644 --- a/t/v2mirror.t +++ b/t/v2mirror.t @@ -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; diff --git a/t/v2reindex.t b/t/v2reindex.t index cafe8648d..406c05176 100644 --- a/t/v2reindex.t +++ b/t/v2reindex.t @@ -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(); diff --git a/t/v2writable.t b/t/v2writable.t index 0d1022047..1b7e9e7d3 100644 --- a/t/v2writable.t +++ b/t/v2writable.t @@ -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; diff --git a/t/watch_filter_rubylang.t b/t/watch_filter_rubylang.t index 643dbb8a6..a6153e46c 100644 --- a/t/watch_filter_rubylang.t +++ b/t/watch_filter_rubylang.t @@ -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(); diff --git a/t/watch_maildir_v2.t b/t/watch_maildir_v2.t index 7b46232b3..386798362 100644 --- a/t/watch_maildir_v2.t +++ b/t/watch_maildir_v2.t @@ -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"; diff --git a/t/watch_multiple_headers.t b/t/watch_multiple_headers.t index 33ed0770e..13dd3452c 100644 --- a/t/watch_multiple_headers.t +++ b/t/watch_multiple_headers.t @@ -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"; diff --git a/t/xap_helper.t b/t/xap_helper.t index 0a2113290..fe5d2d142 100644 --- a/t/xap_helper.t +++ b/t/xap_helper.t @@ -3,7 +3,7 @@ # License: AGPL-3.0+ 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; diff --git a/t/xcpdb-reshard.t b/t/xcpdb-reshard.t index 8516b9079..cde9f151b 100644 --- a/t/xcpdb-reshard.t +++ b/t/xcpdb-reshard.t @@ -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; diff --git a/xt/create-many-inboxes.t b/xt/create-many-inboxes.t index d22803e3c..3d8932b7e 100644 --- a/xt/create-many-inboxes.t +++ b/xt/create-many-inboxes.t @@ -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; diff --git a/xt/solver.t b/xt/solver.t index 1f004bf50..06f5a4936 100644 --- a/xt/solver.t +++ b/xt/solver.t @@ -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; -- 2.47.2