Bug 97832 - turn on template compilation. This means that the minimum TT
version is now 2.07. r=myk, gerv git-svn-id: svn://10.0.0.236/trunk@120067 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -181,7 +181,7 @@ unless (have_vers("Data::Dumper",0)) { push @missing,"Data::Dumper" }
|
||||
unless (have_vers("DBD::mysql","1.2209")) { push @missing,"DBD::mysql" }
|
||||
unless (have_vers("Date::Parse",0)) { push @missing,"Date::Parse" }
|
||||
unless (have_vers("AppConfig","1.52")) { push @missing,"AppConfig" }
|
||||
unless (have_vers("Template","2.06")) { push @missing,"Template" }
|
||||
unless (have_vers("Template","2.07")) { push @missing,"Template" }
|
||||
unless (have_vers("Text::Wrap","2001.0131")) { push @missing,"Text::Wrap" }
|
||||
unless (have_vers("File::Spec", "0.82")) { push @missing,"File::Spec" }
|
||||
|
||||
@@ -525,6 +525,20 @@ my @my_priorities = @{*{$main::{'priorities'}}{ARRAY}};
|
||||
my @my_platforms = @{*{$main::{'platforms'}}{ARRAY}};
|
||||
my @my_opsys = @{*{$main::{'opsys'}}{ARRAY}};
|
||||
|
||||
if ($my_webservergroup && ($< != 0)) { # zach: if not root, yell at them, bug 87398
|
||||
print <<EOF;
|
||||
|
||||
Warning: you have entered a value for the "webservergroup" parameter
|
||||
in localconfig, but you are not running this script as root.
|
||||
This can cause permissions problems and decreased security. If you
|
||||
experience problems running Bugzilla scripts, log in as root and re-run
|
||||
this script, or remove the value of the "webservergroup" parameter.
|
||||
Note that any warnings about "uninitialized values" that you may
|
||||
see below are caused by this.
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
###########################################################################
|
||||
# Global Utility Library
|
||||
###########################################################################
|
||||
@@ -737,6 +751,90 @@ END
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
eval("use Date::Parse");
|
||||
# Templates will be recompiled if the source changes, but not if the
|
||||
# settings in globals.pl change, so we need to be able to force a rebuild
|
||||
# if that happens
|
||||
|
||||
# The last time the global template params were changed. Keep in UTC,
|
||||
# YYYY-MM-DD
|
||||
my $lastTemplateParamChange = str2time("2002-04-24", "UTC");
|
||||
if (-e 'data/template') {
|
||||
unless (-d 'data/template' && -e 'data/template/.lastRebuild' &&
|
||||
(stat('data/template/.lastRebuild'))[9] >= $lastTemplateParamChange) {
|
||||
# If File::Path::rmtree reported errors, then I'd use that
|
||||
use File::Find;
|
||||
sub remove {
|
||||
return if $_ eq ".";
|
||||
if (-d $_) {
|
||||
rmdir $_ || die "Couldn't rmdir $_: $!\n";
|
||||
} else {
|
||||
unlink $_ || die "Couldn't unlink $_: $!\n";
|
||||
}
|
||||
}
|
||||
finddepth(\&remove, 'data/template');
|
||||
}
|
||||
}
|
||||
|
||||
# Precompile stuff. This speeds up initial access (so the template isn't
|
||||
# compiled multiple times simulataneously by different servers), and helps
|
||||
# to get the permissions right.
|
||||
eval("use Template");
|
||||
my $redir = ($^O =~ /MSWin32/i) ? "NUL" : "/dev/null";
|
||||
my $template = Template->new(
|
||||
{
|
||||
# Output to /dev/null here
|
||||
OUTPUT => $redir,
|
||||
|
||||
# Colon-separated list of directories containing templates.
|
||||
INCLUDE_PATH => "template/en/custom:template/en/default",
|
||||
|
||||
PRE_CHOMP => 1 ,
|
||||
TRIM => 1 ,
|
||||
|
||||
COMPILE_DIR => "data", # becomes data/template/en/{custom,default}
|
||||
|
||||
# These don't actually need to do anything here, just exist
|
||||
FILTERS =>
|
||||
{
|
||||
strike => sub { return $_; } ,
|
||||
js => sub { return $_; },
|
||||
html => sub { return $_; },
|
||||
url_quote => sub { return $_; }
|
||||
},
|
||||
}) || die ("Could not create Template: " . Template->error() . "\n");
|
||||
|
||||
sub compile {
|
||||
return if (-d $_);
|
||||
return if ($_ !~ /\.tmpl$/);
|
||||
s!template/en/default/!!; # trim the bit we don't pass to TT
|
||||
|
||||
$template->process($_, {})
|
||||
|| die "Could not compile $_:" . $template->error() . "\n";
|
||||
}
|
||||
|
||||
{
|
||||
use File::Find;
|
||||
|
||||
# Disable warnings which come from running the compiled templates
|
||||
# This way is OK, because they're all runtime warnings.
|
||||
# The reason we get these warnings here is that none of the required
|
||||
# vars will be present.
|
||||
local ($^W) = 0;
|
||||
|
||||
# Traverse the default hierachy. Custom templates will be picked up
|
||||
# via the INCLUDE_PATH, but we know that bugzilla will only be
|
||||
# calling stuff which exists in en/default
|
||||
# FIXME - if we start doing dynamic INCLUDE_PATH we may have to
|
||||
# recurse all of template/, changing the INCLUDE_PATH each time
|
||||
|
||||
find({wanted => \&compile, no_chdir => 1}, "template/en/default");
|
||||
}
|
||||
# update the time on the stamp file
|
||||
open FILE, '>data/template/.lastRebuild'; close FILE;
|
||||
utime $lastTemplateParamChange, $lastTemplateParamChange, ('data/template/.lastRebuild');
|
||||
}
|
||||
|
||||
# Just to be sure ...
|
||||
unlink "data/versioncache";
|
||||
@@ -852,20 +950,6 @@ sub fixPerms {
|
||||
}
|
||||
|
||||
if ($my_webservergroup) {
|
||||
unless ($< == 0) { # zach: if not root, yell at them, bug 87398
|
||||
print <<EOF;
|
||||
|
||||
Warning: you have entered a value for the "webservergroup" parameter
|
||||
in localconfig, but you are not running this script as root.
|
||||
This can cause permissions problems and decreased security. If you
|
||||
experience problems running Bugzilla scripts, log in as root and re-run
|
||||
this script, or remove the value of the "webservergroup" parameter.
|
||||
Note that any warnings about "uninitialized values" that you may
|
||||
see below are caused by this.
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
# Funny! getgrname returns the GID if fed with NAME ...
|
||||
my $webservergid = getgrnam($my_webservergroup);
|
||||
# chown needs to be called with a valid uid, not 0. $< returns the
|
||||
@@ -873,6 +957,7 @@ EOF
|
||||
# userid.
|
||||
fixPerms('.htaccess', $<, $webservergid, 027); # glob('*') doesn't catch dotfiles
|
||||
fixPerms('data/.htaccess', $<, $webservergid, 027);
|
||||
fixPerms('data/template', $<, $webservergid, 007, 1); # webserver will write to these
|
||||
fixPerms('data/webdot/.htaccess', $<, $webservergid, 027);
|
||||
fixPerms('data/params', $<, $webservergid, 017);
|
||||
fixPerms('*', $<, $webservergid, 027);
|
||||
@@ -887,6 +972,7 @@ EOF
|
||||
my $gid = (split " ", $()[0];
|
||||
fixPerms('.htaccess', $<, $gid, 022); # glob('*') doesn't catch dotfiles
|
||||
fixPerms('data/.htaccess', $<, $gid, 022);
|
||||
fixPerms('data/template', $<, $gid, 022, 1);
|
||||
fixPerms('data/webdot/.htaccess', $<, $gid, 022);
|
||||
fixPerms('data/params', $<, $gid, 011);
|
||||
fixPerms('*', $<, $gid, 022);
|
||||
|
||||
@@ -41,7 +41,7 @@ Perl v5.005
|
||||
DBI v1.13
|
||||
DBD::MySQL v1.2209
|
||||
AppConfig v1.52
|
||||
Template Toolkit v2.06
|
||||
Template Toolkit v2.07
|
||||
Text::Wrap v20001.0131
|
||||
Data::Dumper, Date::Parse, CGI::Carp (any)
|
||||
GD v1.19 (optional)
|
||||
@@ -87,6 +87,30 @@ XML::Parser (any)
|
||||
the MySQL optimiser.
|
||||
(bug 96101)
|
||||
|
||||
- This release of Bugzilla uses the Template Toolkit. For speed,
|
||||
compiled templates are cached on disk. If you modify the templates
|
||||
in order to customise the look and feel of your Bugzilla instalation,
|
||||
the toolkit will normally detect the changes, and recompile the
|
||||
changed templates.
|
||||
|
||||
However, if you do not set a webservergroup in the localconfig file,
|
||||
(a generally unwise thing on a production installation of Bugzilla)
|
||||
the template directory would have to be world-writable for automatic
|
||||
recompilation to happen.
|
||||
|
||||
Doing that would be a security risk. So, if you modify templates locally
|
||||
and do not have a webservergroup set, you will have to rerun checksetup.pl
|
||||
to recompile the templates manually. If you do not do this, the changes
|
||||
you make will not appear, and an error message will be reported.
|
||||
|
||||
Adding new directories anywhere inside the template directory may cause
|
||||
permission errors. If you see these, rerun checksetup.pl as root. If you
|
||||
do not have root access, or cannot get someone who does to do this for you,
|
||||
you can rename the data/template directory to data/template.old (or any
|
||||
other name bugzilla doesn't use). Then rerun checksetup.pl to regenerate
|
||||
the compiled templates.
|
||||
(bug 97832)
|
||||
|
||||
************************************************************
|
||||
*** USERS UPGRADING FROM 2.14.1 OR EARLIER - 2.16 ISSUES ***
|
||||
************************************************************
|
||||
|
||||
@@ -1527,6 +1527,11 @@ use Template;
|
||||
|
||||
# Create the global template object that processes templates and specify
|
||||
# configuration parameters that apply to all templates processed in this script.
|
||||
|
||||
# IMPORTANT - If you make any configuration changes here, make sure to make
|
||||
# them in t/004.template.t and checksetup.pl. You may also need to change the
|
||||
# date settings were last changed - see the comments in checksetup.pl for
|
||||
# details
|
||||
$::template ||= Template->new(
|
||||
{
|
||||
# Colon-separated list of directories containing templates.
|
||||
@@ -1539,6 +1544,8 @@ $::template ||= Template->new(
|
||||
PRE_CHOMP => 1 ,
|
||||
TRIM => 1 ,
|
||||
|
||||
COMPILE_DIR => 'data',
|
||||
|
||||
# Functions for processing text within templates in various ways.
|
||||
FILTERS =>
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user