summaryrefslogtreecommitdiff
path: root/rt/sbin/rt-test-dependencies.in
diff options
context:
space:
mode:
Diffstat (limited to 'rt/sbin/rt-test-dependencies.in')
-rw-r--r--rt/sbin/rt-test-dependencies.in232
1 files changed, 104 insertions, 128 deletions
diff --git a/rt/sbin/rt-test-dependencies.in b/rt/sbin/rt-test-dependencies.in
index f79e4e5c2..6eed51337 100644
--- a/rt/sbin/rt-test-dependencies.in
+++ b/rt/sbin/rt-test-dependencies.in
@@ -1,9 +1,9 @@
#!@PERL@
-# BEGIN BPS TAGGED BLOCK {{{
+# {{{ BEGIN BPS TAGGED BLOCK
#
# COPYRIGHT:
#
-# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC
# <jesse@bestpractical.com>
#
# (Except where explicitly superseded by other copyright notices)
@@ -43,7 +43,7 @@
# works based on those contributions, and sublicense and distribute
# those contributions and any derivatives thereof.
#
-# END BPS TAGGED BLOCK }}}
+# }}} END BPS TAGGED BLOCK
#
# This is just a basic script that checks to make sure that all
# the modules needed by RT before you can install it.
@@ -52,68 +52,36 @@
use strict;
no warnings qw(numeric redefine);
use Getopt::Long;
+use CPAN;
my %args;
my %deps;
-GetOptions(
- \%args, 'v|verbose',
- 'install', 'with-MYSQL',
- 'with-POSTGRESQL|with-pg|with-pgsql', 'with-SQLITE',
- 'with-ORACLE', 'with-FASTCGI',
- 'with-SPEEDYCGI', 'with-MODPERL1',
- 'with-MODPERL2', 'with-DEV',
- 'download=s',
- 'repository=s'
-);
-
-unless (keys %args) {
+GetOptions(\%args, 'v|verbose', 'install', 'with-MYSQL', 'with-POSTGRESQL|with-pg|with-pgsql', 'with-SQLITE', 'with-ORACLE', 'with-FASTCGI', 'with-SPEEDYCGI', 'with-MODPERL1', 'with-MODPERL2' ,'with-DEV', 'download=s');
+
+if (!keys %args) {
help();
exit(0);
}
+if ($args{'with-MODPERL2'}) {
+ warn_modperl2();
+}
-# Set up defaults
$args{'with-MASON'} = 1;
$args{'with-CORE'} = 1;
$args{'with-DEV'} =1;
$args{'with-CLI'} =1;
$args{'with-MAILGATE'} =1;
-{
- my $section;
- my %always_show_sections = (
- perl => 1,
- users => 1,
- );
-
- sub section {
- my $s = shift;
- $section = $s;
- print "$s:\n";
- }
-
- my $any_missing = 0;
- sub found {
- my $msg = shift;
- my $test = shift;
- my $extra = shift;
-
- $any_missing = 1 unless $test;
- if ($args{'v'} or not $test or $always_show_sections{$section}) {
- print "\t$msg...";
- print $test ? "found" : "MISSING";
- print "\n";
- }
-
- print "\t\t$extra\n" if defined $extra;
- }
- sub conclude {
- if ($any_missing) {
- print "\nSOMETHING WAS MISSING!\n";
- } else {
- print "\nEverything was found.\n";
- }
- }
+sub warn_modperl2 {
+ print <<'.';
+ NOTE: mod_perl 2.0 isn't quite ready for prime_time just yet;
+ Best Practical Solutions strongly recommends that sites use
+ Apache 1.3 or FastCGI. If you MUST use mod_perl 2.0 (or 1.99),
+ please read the mailing list archives before asking for help.
+.
+ sleep 5;
}
+
sub help {
print <<'.';
@@ -153,7 +121,7 @@ Digest::MD5 2.27
DBI 1.37
Test::Inline
Class::ReturnValue 0.40
-DBIx::SearchBuilder 1.26
+DBIx::SearchBuilder 1.01
Text::Template
File::Spec 0.8
HTML::Entities
@@ -168,7 +136,6 @@ Mail::Mailer 1.57
Net::SMTP
Text::Wrapper
Time::ParseDate
-Time::HiRes
File::Temp
Term::ReadKey
Text::Autoformat
@@ -176,8 +143,6 @@ Text::Quoted 1.3
Tree::Simple 1.04
Scalar::Util
Module::Versions::Report
-Cache::Simple::TimedExpiry
-XML::Simple
.
$deps{'MASON'} = [ _( << '.') ];
@@ -192,10 +157,7 @@ Digest::MD5 2.27
CGI::Cookie 1.20
Storable 2.08
Apache::Session 1.53
-XML::RSS 1.05
-HTTP::Server::Simple 0.07
-HTTP::Server::Simple::Mason 0.09
-Text::WikiFormat
+XML::RSS
.
$deps{'MAILGATE'} = [ _( << '.') ];
@@ -211,13 +173,12 @@ Getopt::Long 2.24
$deps{'DEV'} = [ _( << '.') ];
Regexp::Common
+Time::HiRes
Test::Inline
Apache::Test
HTML::Form
HTML::TokeParser
WWW::Mechanize
-Test::WWW::Mechanize
-Module::Refresh 0.03
.
$deps{'FASTCGI'} = [ _( << '.') ];
@@ -241,7 +202,6 @@ Apache::DBI 0.92
$deps{'MODPERL2'} = [ _( << '.') ];
CGI 2.92
Apache::DBI
-HTML::Mason 1.31
.
$deps{'MYSQL'} = [ _( << '.') ];
@@ -251,7 +211,7 @@ $deps{'ORACLE'} = [ _( << '.') ];
DBD::Oracle
.
$deps{'POSTGRESQL'} = [ _( << '.') ];
-DBD::Pg 1.41
+DBD::Pg
.
$deps{'SQLITE'} = [ _( << '.') ];
@@ -260,19 +220,74 @@ DBD::SQLite
if ($args{'download'}) {
- download_mods();
+ my %modules;
+
+ foreach my $key (keys %deps) {
+ my @deps = (@{$deps{$key}});
+ while (@deps) {
+ my $mod = shift @deps;
+ my $ver = shift @deps;
+ next if ($mod =~ /^(DBD-|Apache-Request)/);
+ $modules{$mod} = $ver;
+ }
+ }
+ my @mods = keys %modules;
+ CPAN::get();
+ my $moddir = $args{'download'};
+ foreach my $mod (@mods) {
+ $CPAN::Config->{'build_dir'} = $moddir;
+ CPAN::get($mod);
+ }
+
+ opendir(DIR, $moddir);
+ while ( my $dir = readdir(DIR)) {
+ print "Dir is $dir\n";
+ next if ( $dir =~ /^\.\.?$/);
+
+ if ($dir =~ /^(.*)-(.*?)$/) {
+ print "$1 -- $2\n";
+ `svn_load_dirs.pl file:///Users/jesse/mod-repo $1 $moddir/$dir`;
+ `rm -rf $moddir/$dir`;
+
+ }
+
+ }
+ closedir(DIR);
+ exit;
}
-check_perl_version();
+print "perl:\n";
+print "\t5.8.3";
+eval {require 5.008003};
+if ($@) {
+ print "...MISSING.\n";
+ eval {require 5.008000};
+ if ($@) {
+ print "\nRT is known to be non-functional on versions of perl older than 5.8.3.\nPlease upgrade to 5.8.3 or newer\n\n";
+ die;
+ }
-check_users();
+ eval {require 5.008003};
+ if ($@) {
+ print "\nRT is known to be non-functional on versions of perl older than 5.8.3.\nPlease upgrade to 5.8.3 or newer\n\n";
+ }
+} else {
+ print "...found\n" if $args{'v'};
+}
+print "users:\n";
+print "\trt group (@RTGROUP@)...", (defined getgrnam("@RTGROUP@") ? "found" : "MISSING"), "\n";
+print "\tbin owner (@BIN_OWNER@)...", (defined getpwnam("@BIN_OWNER@") ? "found" : "MISSING"), "\n";
+print "\tlibs owner (@LIBS_OWNER@)...", (defined getpwnam("@LIBS_OWNER@") ? "found" : "MISSING"), "\n";
+print "\tlibs group (@LIBS_GROUP@)...", (defined getgrnam("@LIBS_GROUP@") ? "found" : "MISSING"), "\n";
+print "\tweb owner (@WEB_USER@)...", (defined getpwnam("@WEB_USER@") ? "found" : "MISSING"), "\n";
+print "\tweb group (@WEB_GROUP@)...", (defined getgrnam("@WEB_GROUP@") ? "found" : "MISSING"), "\n";
foreach my $type (keys %args) {
next unless ($type =~ /^with-(.*?)$/);
my $type = $1;
- section("$type dependencies");
+ print "$type dependencies:\n";
my @deps = (@{$deps{$type}});
while (@deps) {
my $module = shift @deps;
@@ -285,8 +300,6 @@ foreach my $type (keys %args) {
}
}
-conclude();
-
sub test_dep {
my $module = shift;
my $version = shift;
@@ -295,83 +308,46 @@ sub test_dep {
if ($@) {
my $error = $@;
$error =~ s/\n(.*)$//s;
- undef $error unless $error =~ /this is only/;
- found("$module $version", 0, $error);
+ print "\t$module $version";
+ print "...MISSING\n";
+ print "\t\t$error\n" if $error =~ /this is only/;
return undef;
} else {
- found("$module $version", 1);
+ print "\t$module $version...found\n" if $args{'v'};
return 1;
}
}
sub resolve_dep {
my $module = shift;
- system( qq[@PERL@ -MCPAN -e'install("$module")'] );
+ use CPAN;
+ CPAN::Shell->install($module);
}
-sub download_mods {
- my %modules;
- use CPAN;
-
- foreach my $key (keys %deps) {
- my @deps = (@{$deps{$key}});
- while (@deps) {
- my $mod = shift @deps;
- my $ver = shift @deps;
- next if ($mod =~ /^(DBD-|Apache-Request)/);
- $modules{$mod} = $ver;
- }
- }
- my @mods = keys %modules;
- CPAN::get();
- my $moddir = $args{'download'};
- foreach my $mod (@mods) {
- $CPAN::Config->{'build_dir'} = $moddir;
- CPAN::get($mod);
- }
- opendir(DIR, $moddir);
- while ( my $dir = readdir(DIR)) {
- print "Dir is $dir\n";
- next if ( $dir =~ /^\.\.?$/);
+sub print_help {
+ print << "EOF";
- # Skip things we've previously tagged
- my $out = `svn ls $args{'repository'}/tags/$dir`;
- next if ($out);
+$0 FLAG DBTYPE
- if ($dir =~ /^(.*)-(.*?)$/) {
- `svn_load_dirs -no_user_input -t tags/$dir -v $args{'repository'} dists/$1 $moddir/$dir`;
- `rm -rf $moddir/$dir`;
- }
+$0 is a tool for RT that will tell you if you've got all
+the modules RT depends on properly installed.
- }
- closedir(DIR);
- exit;
-}
+Flags: (only one flag is valid for a given run)
-sub check_perl_version {
- section("perl");
- eval {require 5.008003};
- if ($@) {
- found("5.8.3", 0, "RT is known to be non-functional on versions of perl older than 5.8.3. Please upgrade to 5.8.3 or newer.");
- die;
- } else {
- found("5.8.3", 1);
- }
-}
+-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.
-sub check_users {
- section("users");
- found("rt group (@RTGROUP@)", defined getgrnam("@RTGROUP@"));
- found("bin owner (@BIN_OWNER@)", defined getpwnam("@BIN_OWNER@"));
- found("libs owner (@LIBS_OWNER@)", defined getpwnam("@LIBS_OWNER@"));
- found("libs group (@LIBS_GROUP@)", defined getgrnam("@LIBS_GROUP@"));
- found("web owner (@WEB_USER@)", defined getpwnam("@WEB_USER@"));
- found("web group (@WEB_GROUP@)", defined getgrnam("@WEB_GROUP@"));
-}
+-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
-1;
+ exit(0);
+}