randyk 2003/01/02 20:43:05 Modified: src/docs/2.0/os/win32 config.cfg faq.pod get-Perl-5.8-win32-bin Log: - avoid =item becoming bold-faced - tweaks and enhancements to download script Revision Changes Path 1.10 +1 -1 modperl-docs/src/docs/2.0/os/win32/config.cfg Index: config.cfg =================================================================== RCS file: /home/cvs/modperl-docs/src/docs/2.0/os/win32/config.cfg,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- config.cfg 2 Jan 2003 21:56:50 -0000 1.9 +++ config.cfg 3 Jan 2003 04:43:05 -0000 1.10 @@ -17,7 +17,7 @@ copy_glob => [qw( mpinstall - get-Perl-5.8-win32-bin + get-Perl-5.8-win32-bin )], changes => 'Changes.pod', 1.2 +13 -5 modperl-docs/src/docs/2.0/os/win32/faq.pod Index: faq.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/docs/2.0/os/win32/faq.pod,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- faq.pod 2 Jan 2003 07:56:04 -0000 1.1 +++ faq.pod 3 Jan 2003 04:43:05 -0000 1.2 @@ -49,12 +49,18 @@ =over -=item Verify that mod_perl.so was compiled against the same Perl and Apache +=item * + +Verify that mod_perl.so was compiled against the same Perl and Apache versions that you are using. -=item Check that the directory containing C<perl.exe> is in your I<PATH> environment variable. +=item * + +Check that the directory containing C<perl.exe> is in your I<PATH> environment variable. -=item Try inserting a directive +=item * + +Try inserting a directive LoadFile "C:/Path/to/your/Perl/bin/perlxx.dll" @@ -62,9 +68,11 @@ LoadModule perl_module modules/mod_perl.so -directive. +directive, where F<perlxx.dll> is the Perl dll in your Perl I<bin> directory. + +=item * -=item Try a reboot. +Try a reboot. =back 1.2 +76 -34 modperl-docs/src/docs/2.0/os/win32/get-Perl-5.8-win32-bin Index: get-Perl-5.8-win32-bin =================================================================== RCS file: /home/cvs/modperl-docs/src/docs/2.0/os/win32/get-Perl-5.8-win32-bin,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- get-Perl-5.8-win32-bin 2 Jan 2003 21:56:50 -0000 1.1 +++ get-Perl-5.8-win32-bin 3 Jan 2003 04:43:05 -0000 1.2 @@ -12,48 +12,67 @@ use strict; use warnings; -use LWP::Simple; +use Net::FTP; use Safe; use Digest::MD5; use IO::File; use ExtUtils::MakeMaker; +die "This is intended for Win32" unless ($^O =~ /Win32/i); + my $dist = 'Perl-5.8-win32-bin'; my $exe = $dist . '.exe'; -my $theoryx5 = 'ftp://theoryx5.uwinnipeg.ca/pub/other' . '/' . $dist; -my $max = 13; +my $theoryx5 = 'theoryx5.uwinnipeg.ca'; +my $bsize = 102400; +my $kb = sprintf("%d", $bsize / 1024); print <<"END"; -This script will fetch and then join the files needed for -creating the Perl/Apache Win32 binary distribution -$exe from $theoryx5/. +This script will fetch and then join the files needed +for creating the Perl/Apache Win32 binary distribution +$exe from + ftp://$theoryx5/pub/other/$dist/. If the file transfer is interrupted before all the neccessary files are joined, run the script again in the same directory; files successfully fetched earlier will not be downloaded again. +A hash mark represents transfer of $kb kB. + END my $ans = prompt("Fetch $exe?", 'yes'); die "Installation aborted" unless ($ans =~ /^y/i); -my $cs = 'CHECKSUMS'; -my $checksums = $theoryx5 . '/' . $cs; +my $ftp = Net::FTP->new($theoryx5); +$ftp->login('anonymous', "[EMAIL PROTECTED]") + or die "Cannot login to $theoryx5"; +$ftp->cwd("pub/other/$dist"); +my $max = get_max(); +my $cs = 'CHECKSUMS'; my $join = 'join32.exe'; -my $rjoin = $theoryx5 . '/' . $join; +my @files = (); # fetch the CHECKSUMS file print "Fetching $cs ..."; -getstore($checksums, $cs); +$ftp->ascii; +$ftp->get($cs); print " done!\n"; die "Failed to fetch $cs" unless (-e $cs); +push @files, $cs; + +my $cksum; +die "Cannot load $cs file" unless ( load_cs() ); # fetch the join program -unless (-e $join) { +if (-e $join and verifyMD5($join)) { + print "Skipping $join ...\n"; +} +else { print "Fetching $join ..."; - getstore($rjoin, $join); + $ftp->binary; + $ftp->get($join); print " done!\n"; die "Failed to fetch $join" unless (-e $join); unless (verifyMD5($join)) { @@ -62,21 +81,29 @@ die; } } +push @files, $join; # fetch the split files -my @files; +print "\nFetching $max split files ....\n\n"; +$ftp->hash(1, $bsize); for (1 .. $max) { + local $| = 1; my $num = $_ < 10 ? "00$_" : "0$_"; my $file = $dist . '.exe.' . $num; push @files, $file; if (-e $file) { - print "Skipping $file ...\n"; - next; - } - my $rfile = $theoryx5 . '/' . $file; - print "Fetching $file ..."; - getstore($rfile, $file); - print " done!\n"; + if (verifyMD5($file)) { + print "Skipping $file ...\n"; + next; + } + else { + unlink $file or warn "Could not unlink $file"; + } + } + my $size = sprintf("%d", $ftp->size($file) / 1024); + print "\nFetching $file ($size kB) ...\n"; + $ftp->get($file); + print "Done!\n"; die "Failed to fetch $file" unless (-e $file); unless (verifyMD5($file)) { print qq{CHECKSUM check for "$file" failed.\n}; @@ -84,8 +111,10 @@ die; } } +print "\nFinished fetching split files\n"; +$ftp->quit; -#now join them +# now join them my @args = ('join32'); system(@args); die "Joining files to create $exe failed" unless (-e $exe); @@ -93,7 +122,7 @@ # remove the temporary files, if desired $ans = prompt('Remove temporary files?', 'yes'); if ($ans =~ /^y/i) { - unlink @files or warn "Cannot unlink @files: $!"; + unlink(@files) or warn "Cannot unlink temporary files: $!"; } # run the exe, if desired @@ -103,16 +132,13 @@ system(@args); } else { - print "Double click on $exe to install\n"; + print "\nDouble click on $exe to install\n"; } - -# routine to verify the CHECKSUMS for a file +# routines to verify the CHECKSUMS for a file # adapted from the MD5 check of CPAN.pm -sub verifyMD5 { - my $file = shift; +sub load_cs { my $fh = IO::File->new; - my $cksum; unless (open $fh, $cs) { warn "Could not open $cs: $!"; return; @@ -127,21 +153,27 @@ warn $@; return; } + return 1; +} + +sub verifyMD5 { + my $file = shift; + my $fh = IO::File->new; my ($is, $should); - unless (open(FILE, $file)) { + unless (open($fh, $file)) { warn "Cannot open $file: $!"; return; } - binmode(FILE); - unless ($is = Digest::MD5->new->addfile(*FILE)->hexdigest) { + binmode($fh); + unless ($is = Digest::MD5->new->addfile($fh)->hexdigest) { warn "Could not compute checksum for $file: $!"; - close(FILE); + close $fh; return; } - close(FILE); + close $fh; if ($should = $cksum->{$file}->{md5}) { my $test = $is eq $should ? 1 : 0; - printf qq{Checksum for "$file" is %s\n}, + printf qq{ Checksum for "$file" is %s\n}, ($test == 1) ? 'OK.' : 'NOT OK.'; return $test; } @@ -149,4 +181,14 @@ warn "Checksum data for $file not present in CHECKSUMS.\n"; return; } +} + +# get number of split files +sub get_max { + my $dir = $ftp->ls(); + my $count = 0; + foreach (@$dir) { + $count++ if m!$dist.exe.\d+!; + } + return $count; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]