Commit 2056eb3e authored by gerv%gerv.net's avatar gerv%gerv.net

Bug 140664 - checksetup.pl fails on perl 5.005. Patch by bbaetz; r=afranke, daa@rm.incc.net, gerv.

parent 6be616ed
...@@ -543,6 +543,13 @@ EOF ...@@ -543,6 +543,13 @@ EOF
# Global Utility Library # Global Utility Library
########################################################################### ###########################################################################
# globals.pl clears the PATH, but File::Find uses Cwd::cwd() instead of
# Cwd::getcwd(), which we need to do because `pwd` isn't in the path - see
# http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2001-09/msg00115.html
# As a workaround, since we only use File::Find in checksetup, which doesn't
# run in taint mode anyway, preserve the path...
my $origPath = $::ENV{'PATH'};
# Use the Bugzilla utility library for various functions. We do this # Use the Bugzilla utility library for various functions. We do this
# here rather than at the top of the file so globals.pl doesn't define # here rather than at the top of the file so globals.pl doesn't define
# localconfig variables for us before we get a chance to check for # localconfig variables for us before we get a chance to check for
...@@ -550,6 +557,10 @@ EOF ...@@ -550,6 +557,10 @@ EOF
# removes $ENV{'path'}, which we need in order to run `which mysql` above. # removes $ENV{'path'}, which we need in order to run `which mysql` above.
require "globals.pl"; require "globals.pl";
# ...and restore it. This doesn't change tainting, so this will still cause
# errors if this script ever does run with -T.
$::ENV{'PATH'} = $origPath;
########################################################################### ###########################################################################
# Check data directory # Check data directory
########################################################################### ###########################################################################
...@@ -759,7 +770,7 @@ END ...@@ -759,7 +770,7 @@ END
# The last time the global template params were changed. Keep in UTC, # The last time the global template params were changed. Keep in UTC,
# YYYY-MM-DD # YYYY-MM-DD
my $lastTemplateParamChange = str2time("2002-04-24", "UTC"); my $lastTemplateParamChange = str2time("2002-04-27", "UTC");
if (-e 'data/template') { if (-e 'data/template') {
unless (-d 'data/template' && -e 'data/template/.lastRebuild' && unless (-d 'data/template' && -e 'data/template/.lastRebuild' &&
(stat('data/template/.lastRebuild'))[9] >= $lastTemplateParamChange) { (stat('data/template/.lastRebuild'))[9] >= $lastTemplateParamChange) {
...@@ -793,7 +804,7 @@ END ...@@ -793,7 +804,7 @@ END
PRE_CHOMP => 1 , PRE_CHOMP => 1 ,
TRIM => 1 , TRIM => 1 ,
COMPILE_DIR => "data", # becomes data/template/en/{custom,default} COMPILE_DIR => 'data/', # becomes data/template/en/{custom,default}
# These don't actually need to do anything here, just exist # These don't actually need to do anything here, just exist
FILTERS => FILTERS =>
...@@ -806,17 +817,34 @@ END ...@@ -806,17 +817,34 @@ END
}) || die ("Could not create Template: " . Template->error() . "\n"); }) || die ("Could not create Template: " . Template->error() . "\n");
sub compile { sub compile {
return if (-d $_); # no_chdir doesn't work on perl 5.005
return if ($_ !~ /\.tmpl$/);
s!template/en/default/!!; # trim the bit we don't pass to TT my $origDir = $File::Find::dir;
my $name = $File::Find::name;
return if (-d $name);
return if ($name =~ /\/CVS\//);
return if ($name !~ /\.tmpl$/);
$name =~ s!template/en/default/!!; # trim the bit we don't pass to TT
chdir($::baseDir);
$template->process($_, {}) $template->process($name, {})
|| die "Could not compile $_:" . $template->error() . "\n"; || die "Could not compile $name:" . $template->error() . "\n";
chdir($origDir);
} }
{ {
use File::Find; use File::Find;
use Cwd;
$::baseDir = getcwd();
# Don't hang on templates which use the CGI library
eval("use CGI qw(-no_debug)");
# Disable warnings which come from running the compiled templates # Disable warnings which come from running the compiled templates
# This way is OK, because they're all runtime warnings. # This way is OK, because they're all runtime warnings.
# The reason we get these warnings here is that none of the required # The reason we get these warnings here is that none of the required
...@@ -829,8 +857,9 @@ END ...@@ -829,8 +857,9 @@ END
# FIXME - if we start doing dynamic INCLUDE_PATH we may have to # FIXME - if we start doing dynamic INCLUDE_PATH we may have to
# recurse all of template/, changing the INCLUDE_PATH each time # recurse all of template/, changing the INCLUDE_PATH each time
find({wanted => \&compile, no_chdir => 1}, "template/en/default"); find(\&compile, "template/en/default");
} }
# update the time on the stamp file # update the time on the stamp file
open FILE, '>data/template/.lastRebuild'; close FILE; open FILE, '>data/template/.lastRebuild'; close FILE;
utime $lastTemplateParamChange, $lastTemplateParamChange, ('data/template/.lastRebuild'); utime $lastTemplateParamChange, $lastTemplateParamChange, ('data/template/.lastRebuild');
......
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