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 git-svn-id: svn://10.0.0.236/trunk@261392 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
52730cc3d0
commit
aefe414e6d
@ -1 +1 @@
|
||||
7537
|
||||
7538
|
||||
@ -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",
|
||||
};
|
||||
}
|
||||
|
||||
@ -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 },
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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...",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user