about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2022-11-28 05:31:15 +0000
committerEric Wong <e@80x24.org>2022-11-28 23:38:54 +0000
commitc89fbee4be1ab3e3f5544cda2d88ec7472aaadb2 (patch)
treeec6c88179de08d706614a0ab555293381f504a4f
parenta8d69227f4441be553315852b416322ee4fe0265 (diff)
downloadpublic-inbox-c89fbee4be1ab3e3f5544cda2d88ec7472aaadb2.tar.gz
lei lazy loads LeiMirror itself lazily, anyways, and it only
supports HTTP(S) mirrors, so there's no point in delaying most
of the modules it loads.  Some of the inbox-specific and
v2-specific stuff can be lazy-loaded, however, since this
will support mirroring non-inbox repositories, too.
-rw-r--r--lib/PublicInbox/LeiMirror.pm20
1 files changed, 10 insertions, 10 deletions
diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm
index 1ca603b3..d0bc7384 100644
--- a/lib/PublicInbox/LeiMirror.pm
+++ b/lib/PublicInbox/LeiMirror.pm
@@ -6,7 +6,6 @@ package PublicInbox::LeiMirror;
 use strict;
 use v5.10.1;
 use parent qw(PublicInbox::IPC);
-use PublicInbox::Config;
 use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
 use IO::Compress::Gzip qw(gzip $GzipError);
 use PublicInbox::Spawn qw(popen_rd spawn);
@@ -14,7 +13,13 @@ use File::Path ();
 use File::Temp ();
 use Fcntl qw(SEEK_SET O_CREAT O_EXCL O_WRONLY);
 use Carp qw(croak);
-our %LIVE;
+use URI;
+use PublicInbox::Config;
+use PublicInbox::Inbox;
+use PublicInbox::LeiCurl;
+use PublicInbox::OnDestroy;
+
+our %LIVE; # pid => callback
 
 sub _wq_done_wait { # dwaitpid callback (via wq_eof)
         my ($arg, $pid) = @_;
@@ -191,6 +196,8 @@ sub index_cloned_inbox {
         # n.b. public-inbox-clone works w/o (SQLite || Xapian)
         # lei is useless without Xapian + SQLite
         if ($lei->{cmd} ne 'public-inbox-clone') {
+                require PublicInbox::InboxWritable;
+                require PublicInbox::Admin;
                 my $ibx = delete($self->{ibx}) // {
                         address => [ 'lei@example.com' ],
                         version => $iv,
@@ -389,6 +396,7 @@ failed to extract epoch number from $src
         $self->{-culled_manifest} = 1 if delete(@$m{@skip});
 
         -d $dst || File::Path::mkpath($dst);
+        require PublicInbox::Lock;
         my $lk = bless { lock_path => "$dst/inbox.lock" }, 'PublicInbox::Lock';
         my $fini = PublicInbox::OnDestroy->new($$, \&v2_done, $task);
 
@@ -595,14 +603,6 @@ sub do_mirror { # via wq_io_do
 sub start {
         my ($cls, $lei, $src, $dst) = @_;
         my $self = bless { src => $src, dst => $dst }, $cls;
-        if ($src =~ m!https?://!) {
-                require URI;
-                require PublicInbox::LeiCurl;
-        }
-        require PublicInbox::Lock;
-        require PublicInbox::Inbox;
-        require PublicInbox::Admin;
-        require PublicInbox::InboxWritable;
         $lei->request_umask;
         my ($op_c, $ops) = $lei->workers_start($self, 1);
         $lei->{wq1} = $self;