summaryrefslogtreecommitdiff
path: root/lib/CPAN
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2000-08-10 22:41:50 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2000-08-10 22:41:50 +0000
commitde34a54bfab4821fac0ced381d11269fbacc498b (patch)
tree8e21688460db84c2f0f816c38c31d3d43bade19b /lib/CPAN
parent92e3d63aacb66085fea74c3f951f09e136337b97 (diff)
downloadperl-de34a54bfab4821fac0ced381d11269fbacc498b.tar.gz
Update to CPAN 1.56, from Andreas König.
p4raw-id: //depot/perl@6579
Diffstat (limited to 'lib/CPAN')
-rw-r--r--lib/CPAN/FirstTime.pm36
1 files changed, 23 insertions, 13 deletions
diff --git a/lib/CPAN/FirstTime.pm b/lib/CPAN/FirstTime.pm
index 0e795da4fb..9bd12f3ea2 100644
--- a/lib/CPAN/FirstTime.pm
+++ b/lib/CPAN/FirstTime.pm
@@ -16,7 +16,7 @@ use FileHandle ();
use File::Basename ();
use File::Path ();
use vars qw($VERSION);
-$VERSION = substr q$Revision: 1.38 $, 10;
+$VERSION = substr q$Revision: 1.40 $, 10;
=head1 NAME
@@ -149,7 +149,7 @@ next question.
print qq{
How big should the disk cache be for keeping the build directories
-with all the intermediate files?
+with all the intermediate files\?
};
@@ -188,7 +188,7 @@ policy to one of the three values.
};
- $default = $CPAN::Config->{prerequisites_policy} || 'follow';
+ $default = $CPAN::Config->{prerequisites_policy} || 'ask';
do {
$ans =
prompt("Policy on building prerequisites (follow, ask or ignore)?",
@@ -361,7 +361,8 @@ sub conf_sites {
File::Copy::copy($m,$mby) or die "Could not update $mby: $!";
}
my $loopcount = 0;
- while () {
+ local $^T = time;
+ while ($mby) {
if ( ! -f $mby ){
print qq{You have no $mby
I\'m trying to fetch one
@@ -383,6 +384,7 @@ sub conf_sites {
}
}
read_mirrored_by($mby);
+ bring_your_own();
}
sub find_exe {
@@ -424,7 +426,7 @@ sub picklist {
}
sub read_mirrored_by {
- my($local) = @_;
+ my $local = shift or return;
my(%all,$url,$expected_size,$default,$ans,$host,$dst,$country,$continent,@location);
my $fh = FileHandle->new;
$fh->open($local) or die "Couldn't open $local: $!";
@@ -512,25 +514,33 @@ http: -- that host a CPAN mirror.
@urls = picklist (\@urls, $prompt, $default);
foreach (@urls) { s/ \(.*\)//; }
- %seen = map (($_ => 1), @urls);
+ push @{$CPAN::Config->{urllist}}, @urls;
+}
+sub bring_your_own {
+ my %seen = map (($_ => 1), @{$CPAN::Config->{urllist}});
+ my($ans,@urls);
do {
- $ans = prompt ("Enter another URL or RETURN to quit:", "");
+ my $prompt = "Enter another URL or RETURN to quit:";
+ unless (%seen) {
+ $prompt = qq{CPAN.pm needs at least one URL where it can fetch CPAN files from.
+
+Please enter your CPAN site:};
+ }
+ $ans = prompt ($prompt, "");
if ($ans) {
- $ans =~ s|/?$|/|; # has to end with one slash
+ $ans =~ s|/?\z|/|; # has to end with one slash
$ans = "file:$ans" unless $ans =~ /:/; # without a scheme is a file:
if ($ans =~ /^\w+:\/./) {
- push @urls, $ans
- unless $seen{$ans};
- }
- else {
+ push @urls, $ans unless $seen{$ans}++;
+ } else {
print qq{"$ans" doesn\'t look like an URL at first sight.
I\'ll ignore it for now. You can add it to $INC{'CPAN/MyConfig.pm'}
later if you\'re sure it\'s right.\n};
}
}
- } while $ans;
+ } while $ans || !%seen;
push @{$CPAN::Config->{urllist}}, @urls;
# xxx delete or comment these out when you're happy that it works