[Bps-public-commit] r9694 - in Module-Install-RTx: .
jesse at bestpractical.com
jesse at bestpractical.com
Sun Nov 18 16:54:36 EST 2007
Author: jesse
Date: Sun Nov 18 16:54:36 2007
New Revision: 9694
Modified:
Module-Install-RTx/ (props changed)
Module-Install-RTx/Changes
Module-Install-RTx/lib/Module/Install/RTx.pm
Log:
r72123 at pinglin: jesse | 2007-11-18 15:52:54 -0600
* Smarter about not trying to install packlists to places the rtuser can't write to
* Support for the forthcoming RT Plugin system
Modified: Module-Install-RTx/Changes
==============================================================================
--- Module-Install-RTx/Changes (original)
+++ Module-Install-RTx/Changes Sun Nov 18 16:54:36 2007
@@ -1,3 +1,9 @@
+[ Changes for 0.20 ]
+
+* Support for new RT 3.7 "RT Plugin" mechanism
+* No longer tries to write to the global local perl man and site directories
+ (packlists and manpages), instead installing them within the RT hierarchy
+
[Changes for 0.11 - 2005-]
* make initdb now prompts for dba password.
Modified: Module-Install-RTx/lib/Module/Install/RTx.pm
==============================================================================
--- Module-Install-RTx/lib/Module/Install/RTx.pm (original)
+++ Module-Install-RTx/lib/Module/Install/RTx.pm Sun Nov 18 16:54:36 2007
@@ -1,15 +1,18 @@
package Module::Install::RTx;
-use Module::Install::Base; @ISA = qw(Module::Install::Base);
+use Module::Install::Base;
+ at ISA = qw(Module::Install::Base);
-$Module::Install::RTx::VERSION = '0.11';
+$Module::Install::RTx::VERSION = '0.20';
use strict;
use FindBin;
-use File::Glob ();
+use File::Glob ();
use File::Basename ();
sub RTx {
- my ($self, $name) = @_;
+ my ( $self, $name ) = @_;
+
+ my $original_name = $name;
my $RTx = 'RTx';
$RTx = $1 if $name =~ s/^(\w+)-//;
my $fname = $name;
@@ -19,41 +22,43 @@
unless $self->name;
$self->abstract("RT $name Extension")
unless $self->abstract;
- $self->version_from (-e "$name.pm" ? "$name.pm" : "lib/$RTx/$fname.pm")
+ $self->version_from( -e "$name.pm" ? "$name.pm" : "lib/$RTx/$fname.pm" )
unless $self->version;
my @prefixes = (qw(/opt /usr/local /home /usr /sw ));
- my $prefix = $ENV{PREFIX};
- @ARGV = grep { /PREFIX=(.*)/ ? (($prefix = $1), 0) : 1 } @ARGV;
+ my $prefix = $ENV{PREFIX};
+ @ARGV = grep { /PREFIX=(.*)/ ? ( ( $prefix = $1 ), 0 ) : 1 } @ARGV;
if ($prefix) {
$RT::LocalPath = $prefix;
$INC{'RT.pm'} = "$RT::LocalPath/lib/RT.pm";
- }
- else {
+ } else {
local @INC = (
@INC,
- $ENV{RTHOME} ? ($ENV{RTHOME}, "$ENV{RTHOME}/lib") : (),
- map {( "$_/rt3/lib", "$_/lib/rt3", "$_/lib" )} grep $_, @prefixes
+ $ENV{RTHOME} ? ( $ENV{RTHOME}, "$ENV{RTHOME}/lib" ) : (),
+ map { ( "$_/rt3/lib", "$_/lib/rt3", "$_/lib" ) } grep $_,
+ @prefixes
);
until ( eval { require RT; $RT::LocalPath } ) {
- warn "Cannot find the location of RT.pm that defines \$RT::LocalPath in: @INC\n";
+ warn
+ "Cannot find the location of RT.pm that defines \$RT::LocalPath in: @INC\n";
$_ = $self->prompt("Path to your RT.pm:") or exit;
push @INC, $_, "$_/rt3/lib", "$_/lib/rt3", "$_/lib";
}
}
- my $lib_path = File::Basename::dirname($INC{'RT.pm'});
- print "Using RT configurations from $INC{'RT.pm'}:\n";
+ my $lib_path = File::Basename::dirname( $INC{'RT.pm'} );
+ print "Using RT configuration from $INC{'RT.pm'}:\n";
- $RT::LocalVarPath ||= $RT::VarPath;
- $RT::LocalPoPath ||= $RT::LocalLexiconPath;
- $RT::LocalHtmlPath ||= $RT::MasonComponentRoot;
+ $RT::LocalVarPath ||= $RT::VarPath;
+ $RT::LocalPoPath ||= $RT::LocalLexiconPath;
+ $RT::LocalHtmlPath ||= $RT::MasonComponentRoot;
my %path;
my $with_subdirs = $ENV{WITH_SUBDIRS};
- @ARGV = grep { /WITH_SUBDIRS=(.*)/ ? (($with_subdirs = $1), 0) : 1 } @ARGV;
- my %subdirs = map { $_ => 1 } split(/\s*,\s*/, $with_subdirs);
+ @ARGV = grep { /WITH_SUBDIRS=(.*)/ ? ( ( $with_subdirs = $1 ), 0 ) : 1 }
+ @ARGV;
+ my %subdirs = map { $_ => 1 } split( /\s*,\s*/, $with_subdirs );
foreach (qw(bin etc html po sbin var)) {
next unless -d "$FindBin::Bin/$_";
@@ -66,12 +71,25 @@
}
$path{$_} .= "/$name" for grep $path{$_}, qw(etc po var);
- my $args = join(', ', map "q($_)", %path);
$path{lib} = "$RT::LocalPath/lib" unless %subdirs and !$subdirs{'lib'};
+
+ # If we're running on RT 3.8 with plugin support, we really wany
+ # to install libs, mason templates and po files into plugin specific
+ # directories
+ if ($RT::LocalPluginPath) {
+ foreach my $path (qw(lib po html etc bin sbin)) {
+ next unless -d "$FindBin::Bin/$path";
+ next if %subdirs and !$subdirs{$path};
+ $path{$path} = $RT::LocalPluginPath . "/$original_name/$path";
+ }
+ }
+
+ my $args = join( ', ', map "q($_)", %path );
print "./$_\t=> $path{$_}\n" for sort keys %path;
- if (my @dirs = map { (-D => $_) } grep $path{$_}, qw(bin html sbin)) {
- my @po = map { (-o => $_) } grep -f, File::Glob::bsd_glob("po/*.po");
+ if ( my @dirs = map { ( -D => $_ ) } grep $path{$_}, qw(bin html sbin) ) {
+ my @po = map { ( -o => $_ ) } grep -f,
+ File::Glob::bsd_glob("po/*.po");
$self->postamble(<< ".") if @po;
lexicons ::
\t\$(NOECHO) \$(PERL) -MLocale::Maketext::Extract::Run=xgettext -e \"xgettext(qw(@dirs @po))\"
@@ -83,15 +101,16 @@
\t\$(NOECHO) \$(PERL) -MExtUtils::Install -e \"install({$args})\"
.
- if ($path{var} and -d $RT::MasonDataDir) {
- my ($uid, $gid) = (stat($RT::MasonDataDir))[4, 5];
+ if ( $path{var} and -d $RT::MasonDataDir ) {
+ my ( $uid, $gid ) = ( stat($RT::MasonDataDir) )[ 4, 5 ];
$postamble .= << ".";
\t\$(NOECHO) chown -R $uid:$gid $path{var}
.
}
my %has_etc;
- if (File::Glob::bsd_glob("$FindBin::Bin/etc/schema.*")) {
+ if ( File::Glob::bsd_glob("$FindBin::Bin/etc/schema.*") ) {
+
# got schema, load factory module
$has_etc{schema}++;
$self->load('RTxFactory');
@@ -104,23 +123,22 @@
.
}
- if (File::Glob::bsd_glob("$FindBin::Bin/etc/acl.*")) {
+ if ( File::Glob::bsd_glob("$FindBin::Bin/etc/acl.*") ) {
$has_etc{acl}++;
}
- if (-e 'etc/initialdata') {
- $has_etc{initialdata}++;
- }
+ if ( -e 'etc/initialdata' ) { $has_etc{initialdata}++; }
$self->postamble("$postamble\n");
- if (%subdirs and !$subdirs{'lib'}) {
- $self->makemaker_args(
- PM => { "" => "" },
- )
- }
- else {
+ if ( %subdirs and !$subdirs{'lib'} ) {
+ $self->makemaker_args( PM => { "" => "" }, );
+ } else {
$self->makemaker_args( INSTALLSITELIB => "$RT::LocalPath/lib" );
}
+ $self->makemaker_args( INSTALLSITEMAN1DIR => "$RT::LocalPath/man/man1" );
+ $self->makemaker_args( INSTALLSITEMAN3DIR => "$RT::LocalPath/man/man3" );
+ $self->makemaker_args( INSTALLSITEARCH => "$RT::LocalPath/man" );
+ $self->makemaker_args( INSTALLARCHLIB => "$RT::LocalPath/lib" );
if (%has_etc) {
$self->load('RTxInitDB');
print "For first-time installation, type 'make initdb'.\n";
@@ -140,7 +158,7 @@
}
sub RTxInit {
- unshift @INC, substr(delete($INC{'RT.pm'}), 0, -5) if $INC{'RT.pm'};
+ unshift @INC, substr( delete( $INC{'RT.pm'} ), 0, -5 ) if $INC{'RT.pm'};
require RT;
RT::LoadConfig();
RT::ConnectToDatabase();
More information about the Bps-public-commit
mailing list