Setup automator: Check that each plugin added to the generated setup file can be loaded and that its config is ok. If a plugin fails for any reason, disable it in the generated file. Closes: 532001

master
Joey Hess 2009-06-05 16:58:06 -04:00
parent 9e74d60057
commit 0293ae8e3d
2 changed files with 27 additions and 0 deletions

View File

@ -98,6 +98,29 @@ sub import (@) {
}
}
# Make sure that all the listed plugins can load
# and checkconfig is ok. If a plugin fails to work,
# remove it from the configuration and keep on truckin'.
my %bakconfig=%config; # checkconfig can modify %config so back up
if (! eval { IkiWiki::loadplugins(); IkiWiki::checkconfig() }) {
foreach my $plugin (@{$config{default_plugins}}, @{$bakconfig{add_plugins}}) {
eval {
# delete all hooks so that only this plugins's
# checkconfig will be run
%IkiWiki::hooks=();
IkiWiki::loadplugin($plugin);
IkiWiki::run_hooks(checkconfig => sub { shift->() });
};
if ($@) {
print STDERR sprintf(gettext("** Disabling plugin %s, since it is failing with this message:"),
$plugin)."\n";
print STDERR "$@\n";
push @{$bakconfig{disable_plugins}}, $plugin;
}
}
}
%config=%bakconfig;
# Generate setup file.
require IkiWiki::Setup;
IkiWiki::Setup::dump($config{dumpsetup});

4
debian/changelog vendored
View File

@ -9,6 +9,10 @@ ikiwiki (3.15) UNRELEASED; urgency=low
allow an unterminated """ string to be treated as a series
of bare words. Fixes runaway regexp recursion/backtracking
in strange situations.
* Setup automator: Check that each plugin added to the generated
setup file can be loaded and that its config is ok. If a plugin
fails for any reason, disable it in the generated file.
Closes: 532001
-- Joey Hess <joeyh@debian.org> Tue, 02 Jun 2009 17:03:41 -0400