1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
#!/usr/bin/perl -w
use strict;
use CPAN::MyConfig;
use CPAN;
use CPAN::HandleConfig;
use CPAN::Shell;
my $already_configured_cpan = 0;
my $root;
BEGIN {
sub CheckAvailability
{
my $code = "require $_[0]";
if (@_ > 1) {
$code .= "; $_[1]";
}
eval $code;
if ($@) {
if ($already_configured_cpan) {
print STDERR "Missing $_[0]; CPAN already initialized.\n";
} else {
print STDERR "Missing $_[0]; initializing CPAN.\n";
CPAN::HandleConfig->load(autoconfig => 1, auto_pick => 1,
doit => 1);
CPAN::Shell::setup_output;
CPAN::Index->reload;
$already_configured_cpan = 1;
}
return 0;
} else {
print STDERR "Found $_[0].\n";
return 1;
}
}
alarm(3600);
$root = $INC[0];
if ($root !~ s:/_cpan$::) {
die "Please invoke this script via .../setup.sh."
}
if ( ! exists $CPAN::Config{cpan_home} ) {
$CPAN::Config = {
'auto_commit' => 1,
'cpan_home' => "$root/_cpan",
'ftp_passive' => 1,
'install_help' => 'manual',
'urllist' => [@CPAN::Defaultsites]
};
}
# $CPAN::DEBUG ||= $CPAN::DEBUG{'FTP'};
if ( !CheckAvailability('local::lib',
'die unless $local::lib::VERSION >= 2')
&& ! -d "$root/aux/lib/perl5/local" ) {
my $ll = CPAN::Shell->expandany('local::lib');
$ll->get;
system('mkdir', '-p', "$root/aux/lib/perl5/local");
system('cp', $ll->distribution->dir . "/lib/local/lib.pm",
"$root/aux/lib/perl5/local/lib.pm");
}
}
use lib "$root/aux/lib/perl5";
use local::lib("$root/aux", '--no-create');
my @lwp_deps = qw(Encode::Locale File::Listing
HTML::Parser HTML::Tagset HTML::Tree
HTTP:Cookies HTTP::Date HTTP::Message HTTP::Negotiate
IO::Socket::SSL LWP::MediaTypes LWP::Protocol::https
Net::HTTP URI WWW::RobotRules Mozilla::CA);
for my $module (@lwp_deps, 'Time::HiRes') {
if ( ! CheckAvailability($module) ) {
CPAN::Shell->install($module);
}
}
if ( ! CheckAvailability('LWP') ) {
CPAN::Shell->install('Bundle::LWP');
}
|