diff options
-rw-r--r-- | Bugzilla/Template.pm | 21 | ||||
-rw-r--r-- | template/en/default/setup/strings.txt.pl | 5 |
2 files changed, 17 insertions, 9 deletions
diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index d897cd946..05ce2dde5 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -792,17 +792,20 @@ sub precompile_templates { if (-e "$datadir/template") { print install_string('template_removing_dir') . "\n" if $output; - # XXX This frequently fails if the webserver made the files, because - # then the webserver owns the directories. We could fix that by - # doing a chmod/chown on all the directories here. + # This frequently fails if the webserver made the files, because + # then the webserver owns the directories. rmtree("$datadir/template"); - # Check that the directory was really removed - if(-e "$datadir/template") { - print "\n\n"; - print "The directory '$datadir/template' could not be removed.\n"; - print "Please remove it manually and rerun checksetup.pl.\n\n"; - exit; + # Check that the directory was really removed, and if not, move it + # into data/deleteme/. + if (-e "$datadir/template") { + print STDERR "\n\n", + install_string('template_removal_failed', + { datadir => $datadir }), "\n\n"; + mkpath("$datadir/deleteme"); + my $random = generate_random_password(); + rename("$datadir/template", "$datadir/deleteme/$random") + or die "move failed: $!"; } } diff --git a/template/en/default/setup/strings.txt.pl b/template/en/default/setup/strings.txt.pl index 6766bac78..bbccf6339 100644 --- a/template/en/default/setup/strings.txt.pl +++ b/template/en/default/setup/strings.txt.pl @@ -145,6 +145,11 @@ EOT * top of the displayed list. * 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 + deleted manually to conserve disk space. +END template_removing_dir => "Removing existing compiled templates...", ); |