]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 602418: Add "template_cache" to bz_locations(), a way of specifying that
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Wed, 13 Oct 2010 23:36:18 +0000 (16:36 -0700)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Wed, 13 Oct 2010 23:36:18 +0000 (16:36 -0700)
cached templates should be stored somewhere else than the data directory.
r=LpSolit, a=mkanat

Bugzilla/Constants.pm
Bugzilla/Install/Filesystem.pm
Bugzilla/Template.pm
template/en/default/setup/strings.txt.pl

index 06bdaade052f01fe0e6011622c7acdd4ab290301..14c3f2b26548fc358fbf02bc0fb3b9d3e31a8cb1 100644 (file)
@@ -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",
     };
 }
index 20bd021ef19c9dde2e319e935ee905242aa05fbe..6a265bffedc2740bf8032c16122ecc03c81d10ed 100644 (file)
@@ -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 },
index ee4d6cba2573e873398643604b385f8def4512db..46a4b6b72c6974a9967dea6bd6c8c2005b9772ed 100644 (file)
@@ -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) {
index ca1bf6145e43a5f6c35e4a892f607962851a0a4f..889bb12b261f917022730fe42c0fd22ece2bd350 100644 (file)
@@ -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...",