--- loncom/build/system_dependencies/perltest.pl 2003/08/22 19:56:02 1.11 +++ loncom/build/system_dependencies/perltest.pl 2003/08/22 20:48:38 1.12 @@ -2,7 +2,7 @@ # perltest.pl - script to test the status of perl modules on a LON-CAPA system # -# $Id: perltest.pl,v 1.11 2003/08/22 19:56:02 albertel Exp $ +# $Id: perltest.pl,v 1.12 2003/08/22 20:48:38 albertel Exp $ # ### @@ -158,7 +158,7 @@ Foundation, Inc., 59 Temple Place, Suite =cut # =================================== Process version information of this file. -my $VERSION = sprintf("%d.%02d", q$Revision: 1.11 $ =~ /(\d+)\.(\d+)/); +my $VERSION = sprintf("%d.%02d", q$Revision: 1.12 $ =~ /(\d+)\.(\d+)/); # ========================== Determine the mode that this script should run in. my $mode; @@ -325,10 +325,12 @@ my @dev_missing; my @dev_outdated; my @dev_okay; my @dev_veryokay; +my @dev_to_update; my @stable_missing; my @stable_outdated; my @stable_okay; my @stable_veryokay; +my @stable_to_update; # ===== Loop through all of the needed CPAN distributions and probe the system. foreach my $dist (keys %dist_module_hash) { @@ -339,44 +341,48 @@ foreach my $dist (keys %dist_module_hash my ($vok,$vstr); foreach my $type ('dev','stable') { my ($vers_mod,$vers_dist); - my ($missing_ref,$outdated_ref,$veryokay_ref,$okay_ref); + my ($missing,$outdated,$veryokay,$okay,$to_update); if ($type eq 'dev') { $vers_mod=$module_dev_version_hash{$module}; $vers_dist=$dist_dev_version_hash{$dist}; - ($missing_ref,$outdated_ref,$veryokay_ref,$okay_ref)= - (\@dev_missing,\@dev_outdated,\@dev_veryokay,\@dev_okay); + ($missing,$outdated,$veryokay,$okay,$to_update)= + (\@dev_missing,\@dev_outdated,\@dev_veryokay,\@dev_okay, + \@dev_to_update); } elsif ($type eq 'stable') { $vers_mod=$module_stable_version_hash{$module}; $vers_dist=$dist_stable_version_hash{$dist}; - ($missing_ref,$outdated_ref,$veryokay_ref,$okay_ref)= + ($missing,$outdated,$veryokay,$okay,$to_update)= (\@stable_missing,\@stable_outdated,\@stable_veryokay, - \@stable_okay); + \@stable_okay,\@stable_to_update); } ($vok,$vstr) = have_vers($module,$vers_mod); # print "fsflag: $fsflag, vok: $vok, vstr: $vstr, fs: $fs\n"; if ($fsflag and !$vok and $vstr=~/not found/) { - push(@$missing_ref,'MISSING '.$dist.' (want distribution '. + push(@$missing,'MISSING '.$dist.' (want distribution '. $module.' version '. $vers_dist.') ?'."\n"); + push(@$to_update,$dist); # The question mark indicates there was a pattern match in the # big_module_string which would be unexpected. # There is no usual reason to tell the normal LON-CAPA user about this # question mark. This is just source code magic. } elsif (!$fsflag and !$vok and $vstr=~/not found/) { - push(@$missing_ref,'MISSING '.$dist.' (want distribution '. + push(@$missing,'MISSING '.$dist.' (want distribution '. $module.' version '.$vers_dist.')'."\n"); + push(@$to_update,$dist); } elsif ($fsflag and !$vok and $vstr!~/not found/) { - push(@$outdated_ref,'OUTDATED '.$dist.' wanted module: v'. + push(@$outdated,'OUTDATED '.$dist.' wanted module: v'. $vers_mod.'; '.$vstr.' (VERSION_FROM is '. $fs.') want dist '.$module.' version '.$vers_dist.'.'. "\n"); + push(@$to_update,$dist); } elsif ($fsflag) { $vstr=~/found v(.*)/; my $vc=$1; if ($vc eq $vers_mod) { - push(@$veryokay_ref,'VERYOKAY '.$dist.' wanted: v'. + push(@$veryokay,'VERYOKAY '.$dist.' wanted: v'. $vers_mod.'; '.$vstr.' (VERSION_FROM is '.$fs. ') want dist '.$module.' version '.$vers_dist."\n"); } else { - push(@$okay_ref,'OKAY '.$dist.' wanted: v'. + push(@$okay,'OKAY '.$dist.' wanted: v'. $vers_mod.'; '.$vstr.' (VERSION_FROM is '.$fs.').'."\n"); } } @@ -509,6 +515,29 @@ if ($mode eq "html") END } +if ($mode =~ /^update(dev|stable)$/) { + use CPAN; + my $type=$1; + print $detailstream 'Attempting to do a '.$type.' update'."\n"; + my $to_update; + if ($type eq 'dev') { + $to_update=\@dev_to_update; + } elsif ($type eq 'stable') { + $to_update=\@stable_to_update; + } + foreach my $dist (@$to_update) { + my $module=$dist_module_hash{$dist}; + my ($vers_mod,$vers_dist); + if ($type eq 'dev') { + $vers_mod=$module_dev_version_hash{$module}; + $vers_dist=$dist_dev_version_hash{$dist}; + } elsif ($type eq 'stable') { + $vers_mod=$module_stable_version_hash{$module}; + $vers_dist=$dist_stable_version_hash{$dist}; + } + install($module); + } +} # ================================================================ Subroutines. # Note that "vers_cmp" and "have_vers" are adapted from a bugzilla version 2.16 # "checksetup.pl" script. 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.