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.
---
 lib/PublicInbox/LeiMirror.pm | 20 ++++++++++----------
 1 file 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 => [ '[email protected]' ],
                        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;

Reply via email to