From 945721f48f74d5cfffef7c7cf3a3d6bc2521f5dd Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 15 Jul 2003 13:16:32 +0000 Subject: import of rt 3.0.4 --- rt/sbin/rt-test-dependencies.in | 246 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 rt/sbin/rt-test-dependencies.in (limited to 'rt/sbin/rt-test-dependencies.in') diff --git a/rt/sbin/rt-test-dependencies.in b/rt/sbin/rt-test-dependencies.in new file mode 100644 index 0000000..6951290 --- /dev/null +++ b/rt/sbin/rt-test-dependencies.in @@ -0,0 +1,246 @@ +#!@PERL@ +# BEGIN LICENSE BLOCK +# +# Copyright (c) 1996-2003 Jesse Vincent +# +# (Except where explictly superceded by other copyright notices) +# +# This work is made available to you under the terms of Version 2 of +# the GNU General Public License. A copy of that license should have +# been provided with this software, but in any event can be snarfed +# from www.gnu.org. +# +# This work is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. +# +# +# END LICENSE BLOCK + +# +# This is just a basic script that checks to make sure that all +# the modules needed by RT before you can install it. +# + +use strict; +no warnings qw(numeric redefine); +use Getopt::Long; +use CPAN; +my %args; +my %deps; +GetOptions(\%args,'install', 'with-MYSQL', 'with-POSTGRESQL|with-pg|with-pgsql', 'with-SQLITE', 'with-ORACLE', 'with-FASTCGI', 'with-SPEEDYCGI', 'with-MODPERL1', 'with-MODPERL2' ,'with-DEV'); + +if (!keys %args) { +help(); +exit(0); +} +$args{'with-MASON'} = 1; +$args{'with-CORE'} = 1; +$args{'with-DEV'} =1; +$args{'with-CLI'} =1; +$args{'with-MAILGATE'} =1; +if ($] < 5.007) { +$args{'with-I18N-COMPAT'} = 1; +} + + +sub help { + +print <<'.' + +By default, testdeps determine whether you have +installed all the perl modules RT needs to run. + + --install Install missing modules + +The following switches will tell the tool to check for specific dependencies + + --with-mysql Database interface for MySQL + --with-postgresql Database interface for PostgreSQL + --with-sqlite Database interface and driver for SQLite (unsupported) + --with-oracle Database interface for oracle (unsupported) + + --with-fastcgi Libraries needed to support the fastcgi handler + --with-speedycgi Libraries needed to support the speedycgi handler + --with-modperl1 Libraries needed to support the modperl 1 handler + --with-modperl2 Libraries needed to support the modperl 2 handler + + --with-dev Tools needed for RT development +. +} + + +sub _ { + map { /(\S+)\s*(\S*)/; $1 => ($2 ? $2 :'') } split ( /\n/, $_[0] ); +} + +$deps{'CORE'} = [ _( << '.') ]; +Digest::MD5 +DBI 1.18 +Test::Inline +Class::ReturnValue 0.40 +DBIx::SearchBuilder 0.86 +Text::Template +File::Spec 0.8 +HTML::Entities +Net::Domain +Log::Dispatch 2.0 +Locale::Maketext 1.04 +Locale::Maketext::Lexicon 0.25 +Locale::Maketext::Fuzzy +MIME::Entity 5.108 +Mail::Mailer 1.57 +Net::SMTP +Text::Wrapper +Time::ParseDate +File::Temp +Term::ReadKey +Text::Autoformat +Text::Quoted +. + +$deps{'MASON'} = [ _( << '.') ]; +Params::Validate 0.02 +Cache::Cache +Exception::Class +HTML::Mason 1.16 +MLDBM +Errno +FreezeThaw +Digest::MD5 +CGI::Cookie 1.20 +Storable +Apache::Session 1.53 +. + +$deps{'MAILGATE'} = [ _( << '.') ]; +HTML::TreeBuilder +HTML::FormatText +Getopt::Long +LWP::UserAgent +. + +$deps{'CLI'} = [ _( << '.') ]; +Getopt::Long 2.24 +. + +$deps{'DEV'} = [ _( << '.') ]; +Regexp::Common +Time::HiRes +Test::Inline +WWW::Mechanize +. + +$deps{'FASTCGI'} = [ _( << '.') ]; +CGI +FCGI +CGI::Fast +. + +$deps{'SPEEDYCGI'} = [ _( << '.') ]; +CGI +CGI::SpeedyCGI +. + + +$deps{'MODPERL1'} = [ _( << '.') ]; +CGI +Apache::Request +Apache::DBI +. + +$deps{'MODPERL2'} = [ _( << '.') ]; +CGI 2.89 +Apache::DBI +. + +$deps{'I18N-COMPAT'} = [ _( << '.') ]; +Text::Iconv +Encode::compat 0.04 +. + +$deps{'MYSQL'} = [ _( << '.') ]; +DBD::mysql 2.1018 +. +$deps{'ORACLE'} = [ _( << '.') ]; +DBD::Oracle +. +$deps{'POSTGRESQL'} = [ _( << '.') ]; +DBD::Pg +. + + +foreach my $type (keys %args) { +next unless ($type =~ /^with-(.*?)$/); +my $type = $1; +print "$type dependencies:\n"; + my @deps = (@{$deps{$type}}); + while (@deps) { + my $module = shift @deps; + my $version = shift @deps; +my $ret; + $ret =test_dep($module, $version); + +if ($args{'install'} && !$ret) { + resolve_dep($module); +} +} +} +sub test_dep { + my $module = shift; + my $version = shift; + + print "\t$module $version"; + eval "use $module $version" ; + if ($@) { + my $error = $@; + $error =~ s/\n(.*)$//s; + print "...MISSING\n"; + print "\t\t$error\n" if $error =~ /this is only/; + + return undef; + } else { + print "...found\n"; +return 1; + } +} + +sub resolve_dep { + my $module = shift; + use CPAN; + CPAN::Shell->install($module); + +} + + +sub print_help { + print << "EOF"; + +$0 FLAG DBTYPE + + +$0 is a tool for RT that will tell you if you've got all +the modules RT depends on properly installed. + +Flags: (only one flag is valid for a given run) + +-quiet will check to see if we've got everything we need + and will exit with a return code of (1) if we don't. + +-warn will tell you what isn't properly installed + +-fix will use CPANPLUS.pm or CPAN.pm to magically make everything better + +DBTYPE is one of: + oracle, pg, mysql + +EOF + + exit(0); +} -- cgit v1.1