#!/usr/bin/perl use strict; use warnings; my @applicationsList = qw( mkdir mv mysql tar latex pdflatex dvipng tth giftopnm ppmtopgm pnmtops pnmtopng pngtopnm ); my @apache1ModulesList = qw( Apache Apache::Constants Apache::Cookie Apache::Log Apache::Request ); my @apache2ModulesList = qw( Apache2::Request Apache2::Cookie Apache2::ServerRec Apache2::ServerUtil ); my @modulesList = qw( Carp CGI CGI::Util Data::Dumper Data::UUID Date::Format Date::Parse DateTime DBI Digest::MD5 Email::Address Errno File::Copy File::Find File::Path File::Spec File::Temp GD Getopt::Long Getopt::Std HTML::Entities IO::File Mail::Sender MIME::Base64 Net::LDAP Net::SMTP Opcode PHP::Serialization Pod::Usage Safe Scalar::Util Socket String::ShellQuote Text::Wrap Time::HiRes Time::Zone URI::Escape XML::Parser XML::Parser::EasyTree XML::Writer ); # modules only used by disabled code # Benchmark # File::stat # HTML:EasyTags # RQP::Render # SOAP::Lite my $apache_version = shift @ARGV; unless (defined $apache_version and $apache_version =~ /^apache[12]$/) { warn "invalid apache version specified -- assuming apache1\n"; warn "usage: $0 { apache1 | apache2 }\n"; sleep 1; $apache_version = "apache1"; } if ($apache_version eq "apache1") { push @modulesList, @apache1ModulesList; } elsif ($apache_version eq "apache2") { push @modulesList, @apache2ModulesList; } my @PATH = split(/:/, $ENV{PATH}); check_apps(@applicationsList); check_modules(@modulesList); sub check_apps { my @applicationsList = @_; print "\nChecking your \$PATH for executables required by WeBWorK...\n"; print "\$PATH=", shift @PATH, "\n"; print join ("\n", map(" $_", @PATH)), "\n\n"; foreach my $app (@applicationsList) { my $found = which($app); if ($found) { print " $app found at $found\n"; } else { print "** $app not found in \$PATH\n"; } } } sub which { my $app = shift; foreach my $path (@PATH) { return "$path/$app" if -e "$path/$app"; } } sub check_modules { my @modulesList = @_; print "\nChecking your \@INC for modules required by WeBWorK...\n"; my @inc = @INC; print "\@INC=", shift @inc, "\n"; print join ("\n", map(" $_", @inc)), "\n\n"; foreach my $module (@modulesList) { eval "use $module"; if ($@) { my $file = $module; $file =~ s|::|/|g; $file .= ".pm"; if ($@ =~ /Can't locate $file in \@INC/) { print "** $module not found in \@INC\n"; } else { print "** $module found, but failed to load: $@"; } } else { print " $module found and loaded\n"; } } }