Commit d376fe03 authored by Kevin Falcone's avatar Kevin Falcone
Browse files

Update MIRTx

parent 35d9c151
...@@ -8,7 +8,7 @@ no warnings 'once'; ...@@ -8,7 +8,7 @@ no warnings 'once';
use Module::Install::Base; use Module::Install::Base;
use base 'Module::Install::Base'; use base 'Module::Install::Base';
our $VERSION = '0.32'; our $VERSION = '0.32_02';
use FindBin; use FindBin;
use File::Glob (); use File::Glob ();
...@@ -136,7 +136,9 @@ install :: ...@@ -136,7 +136,9 @@ install ::
$has_etc{acl}++; $has_etc{acl}++;
} }
if ( -e 'etc/initialdata' ) { $has_etc{initialdata}++; } if ( -e 'etc/initialdata' ) { $has_etc{initialdata}++; }
if ( -d 'etc/upgrade/' ) { $has_etc{upgrade}++; } if ( grep { /\d+\.\d+\.\d+.*$/ } glob('etc/upgrade/*.*.*') ) {
$has_etc{upgrade}++;
}
$self->postamble("$postamble\n"); $self->postamble("$postamble\n");
unless ( $subdirs{'lib'} ) { unless ( $subdirs{'lib'} ) {
...@@ -174,46 +176,50 @@ install :: ...@@ -174,46 +176,50 @@ install ::
} }
} }
# stolen from RT::Handle so we work on 3.6 (cmp_versions came in with 3.8)
{ my %word = (
a => -4,
alpha => -4,
b => -3,
beta => -3,
pre => -2,
rc => -1,
head => 9999,
);
sub cmp_version($$) {
my ($a, $b) = (@_);
my @a = grep defined, map { /^[0-9]+$/? $_ : /^[a-zA-Z]+$/? $word{$_}|| -10 : undef }
split /([^0-9]+)/, $a;
my @b = grep defined, map { /^[0-9]+$/? $_ : /^[a-zA-Z]+$/? $word{$_}|| -10 : undef }
split /([^0-9]+)/, $b;
@a > @b
? push @b, (0) x (@a-@b)
: push @a, (0) x (@b-@a);
for ( my $i = 0; $i < @a; $i++ ) {
return $a[$i] <=> $b[$i] if $a[$i] <=> $b[$i];
}
return 0;
}}
sub requires_rt { sub requires_rt {
my ($self,$version) = @_; my ($self,$version) = @_;
# if we're exactly the same version as what we want, silently return # if we're exactly the same version as what we want, silently return
return if ($version eq $RT::VERSION); return if ($version eq $RT::VERSION);
my @sorted = sort cmp_version $version,$RT::VERSION; _load_rt_handle();
my @sorted = sort RT::Handle::cmp_version $version,$RT::VERSION;
if ($sorted[-1] eq $version) { if ($sorted[-1] eq $version) {
# should we die? # should we die?
warn "\nWarning: prerequisite RT $version not found. Your installed version of RT ($RT::VERSION) is too old.\n\n"; die "\nWarning: prerequisite RT $version not found. Your installed version of RT ($RT::VERSION) is too old.\n\n";
}
}
sub rt_too_new {
my ($self,$version,$msg) = @_;
$msg ||= "Your version %s is too new, this extension requires a release of RT older than %s\n";
_load_rt_handle();
my @sorted = sort RT::Handle::cmp_version $version,$RT::VERSION;
if ($sorted[0] eq $version) {
die sprintf($msg,$RT::VERSION,$version);
}
}
# RT::Handle runs FinalizeDatabaseType which calls RT->Config->Get
# On 3.8, this dies. On 4.0/4.2 ->Config transparently runs LoadConfig.
# LoadConfig requires being able to read RT_SiteConfig.pm (root) so we'd
# like to avoid pushing that on users.
# Fake up just enough Config to let FinalizeDatabaseType finish, and
# anyone later calling LoadConfig will overwrite our shenanigans.
sub _load_rt_handle {
unless ($RT::Config) {
require RT::Config;
$RT::Config = RT::Config->new;
RT->Config->Set('DatabaseType','mysql');
} }
require RT::Handle;
} }
1; 1;
__END__ __END__
#line 336 #line 362
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment