summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kanat-Alexander <mkanat@bugzilla.org>2010-10-14 01:36:18 +0200
committerMax Kanat-Alexander <mkanat@bugzilla.org>2010-10-14 01:36:18 +0200
commitf2d5af261b95310c2fb7d0565222c211998bff4f (patch)
tree08895bd9f38f0afbc549b2e70daaf78a28e1f9c2
parent8cfb548a7897269668cc5879025546e4ae8ac500 (diff)
downloadbugzilla-f2d5af261b95310c2fb7d0565222c211998bff4f.tar.gz
bugzilla-f2d5af261b95310c2fb7d0565222c211998bff4f.tar.xz
Bug 602418: Add "template_cache" to bz_locations(), a way of specifying that
cached templates should be stored somewhere else than the data directory. r=LpSolit, a=mkanat
-rw-r--r--Bugzilla/Constants.pm8
-rw-r--r--Bugzilla/Install/Filesystem.pm3
-rw-r--r--Bugzilla/Template.pm24
-rw-r--r--template/en/default/setup/strings.txt.pl4
4 files changed, 23 insertions, 16 deletions
diff --git a/Bugzilla/Constants.pm b/Bugzilla/Constants.pm
index 06bdaade0..14c3f2b26 100644
--- a/Bugzilla/Constants.pm
+++ b/Bugzilla/Constants.pm
@@ -596,6 +596,7 @@ sub bz_locations {
$datadir = "data";
}
+ $datadir = "$libpath/$datadir";
# We have to return absolute paths for mod_perl.
# That means that if you modify these paths, they must be absolute paths.
return {
@@ -605,10 +606,11 @@ sub bz_locations {
# make sure this still points to the CGIs.
'cgi_path' => $libpath,
'templatedir' => "$libpath/template",
+ 'template_cache' => "$datadir/template",
'project' => $project,
'localconfig' => "$libpath/$localconfig",
- 'datadir' => "$libpath/$datadir",
- 'attachdir' => "$libpath/$datadir/attachments",
+ 'datadir' => $datadir,
+ 'attachdir' => "$datadir/attachments",
'skinsdir' => "$libpath/skins",
# $webdotdir must be in the web server's tree somewhere. Even if you use a
# local dot, we output images to there. Also, if $webdotdir is
@@ -616,7 +618,7 @@ sub bz_locations {
# change showdependencygraph.cgi to set image_url to the correct
# location.
# The script should really generate these graphs directly...
- 'webdotdir' => "$libpath/$datadir/webdot",
+ 'webdotdir' => "$datadir/webdot",
'extensionsdir' => "$libpath/extensions",
};
}
diff --git a/Bugzilla/Install/Filesystem.pm b/Bugzilla/Install/Filesystem.pm
index 20bd021ef..6a265bffe 100644
--- a/Bugzilla/Install/Filesystem.pm
+++ b/Bugzilla/Install/Filesystem.pm
@@ -121,6 +121,7 @@ sub FILESYSTEM {
my $extlib = bz_locations()->{'ext_libpath'};
my $skinsdir = bz_locations()->{'skinsdir'};
my $localconfig = bz_locations()->{'localconfig'};
+ my $template_cache = bz_locations()->{'template_cache'};
# We want to set the permissions the same for all localconfig files
# across all PROJECTs, so we do something special with $localconfig,
@@ -189,7 +190,7 @@ sub FILESYSTEM {
# the webserver.
my %recurse_dirs = (
# Writeable directories
- "$datadir/template" => { files => CGI_READ,
+ $template_cache => { files => CGI_READ,
dirs => DIR_CGI_OVERWRITE },
$attachdir => { files => CGI_WRITE,
dirs => DIR_CGI_WRITE },
diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm
index ee4d6cba2..46a4b6b72 100644
--- a/Bugzilla/Template.pm
+++ b/Bugzilla/Template.pm
@@ -633,7 +633,7 @@ sub create {
ABSOLUTE => 1,
RELATIVE => $ENV{MOD_PERL} ? 0 : 1,
- COMPILE_DIR => bz_locations()->{'datadir'} . "/template",
+ COMPILE_DIR => bz_locations()->{'template_cache'},
# Initialize templates (f.e. by loading plugins like Hook).
PRE_PROCESS => ["global/initialize.none.tmpl"],
@@ -990,23 +990,27 @@ sub precompile_templates {
my ($output) = @_;
# Remove the compiled templates.
+ my $cache_dir = bz_locations()->{'template_cache'};
my $datadir = bz_locations()->{'datadir'};
- if (-e "$datadir/template") {
+ if (-e $cache_dir) {
print install_string('template_removing_dir') . "\n" if $output;
# This frequently fails if the webserver made the files, because
# then the webserver owns the directories.
- rmtree("$datadir/template");
+ rmtree($cache_dir);
# Check that the directory was really removed, and if not, move it
# into data/deleteme/.
- if (-e "$datadir/template") {
+ if (-e $cache_dir) {
+ my $deleteme = "$datadir/deleteme";
+
print STDERR "\n\n",
install_string('template_removal_failed',
- { datadir => $datadir }), "\n\n";
- mkpath("$datadir/deleteme");
+ { deleteme => $deleteme,
+ template_cache => $cache_dir }), "\n\n";
+ mkpath($deleteme);
my $random = generate_random_password();
- rename("$datadir/template", "$datadir/deleteme/$random")
+ rename($cache_dir, "$deleteme/$random")
or die "move failed: $!";
}
}
@@ -1071,10 +1075,10 @@ sub _do_template_symlink {
my $abs_root = dirname($abs_path);
my $dir_name = basename($abs_path);
- my $datadir = bz_locations()->{'datadir'};
- my $container = "$datadir/template$abs_root";
+ my $cache_dir = bz_locations()->{'template_cache'};
+ my $container = "$cache_dir$abs_root";
mkpath($container);
- my $target = "$datadir/template/$dir_name";
+ my $target = "$cache_dir/$dir_name";
# Check if the directory exists, because if there are no extensions,
# there won't be an "data/template/extensions" directory to link to.
if (-d $target) {
diff --git a/template/en/default/setup/strings.txt.pl b/template/en/default/setup/strings.txt.pl
index ca1bf6145..889bb12b2 100644
--- a/template/en/default/setup/strings.txt.pl
+++ b/template/en/default/setup/strings.txt.pl
@@ -389,8 +389,8 @@ EOT
EOT
template_precompile => "Precompiling templates...",
template_removal_failed => <<END,
-WARNING: The directory '##datadir##/template' could not be removed.
- It has been moved into '##datadir##/deleteme', which should be
+WARNING: The directory '##template_cache##' could not be removed.
+ It has been moved into '##deleteme##', which should be
deleted manually to conserve disk space.
END
template_removing_dir => "Removing existing compiled templates...",