Package: debconf
Version: 1.5.24
Severity: wishlist
Tags: patch
Hello,
In the current frontend selection mechanism, saying --frontend=gnome
unconditionally assumes the frontend should be loaded from
FrontEnd/Gnome.pm and have a package name Debconf::FrontEnd::Gnome.
However, it is handy to allow the file and package to have different
names (Set filename to your customized frontend, and package name to
existing frontend's name).
That way, you can override/extend parts of an existing frontend with
great ease, and use all other parts as-is.
The simple patch attached allows Debconf to use a different file and
package name when selecting and initializing the frontend.
The functionality is accessed by specifying '=' in the frontend name.
So, a setting of --frontend frontend2=gnome has the following effect:
File to "use": FrontEnd/Frontend2.pm
Package to call "->new" on: Debconf::FrontEnd::Gnome
Thanks,
Davor Ocelic
[email protected]
http://www.spinlocksolutions.com/
diff -ruNP debconf-1.5.24/Debconf/AutoSelect.pm debconf-1.5.24,p/Debconf/AutoSelect.pm
--- debconf-1.5.24/Debconf/AutoSelect.pm 2005-08-01 19:51:57.000000000 +0200
+++ debconf-1.5.24,p/Debconf/AutoSelect.pm 2009-01-14 15:34:12.000000000 +0100
@@ -41,7 +41,8 @@
);
-my $frontend;
+our $frontend;
+our $confmodule;
my $type;
=head1 METHODS
@@ -69,14 +70,19 @@
my $showfallback=0;
foreach $type ($starttype, @{$fallback{$starttype}}, 'Noninteractive') {
+ my $file = $type;
+ if ( index($type, '=') > 0) {
+ ($file, $type) = split /=/, $type;
+ $type=ucfirst($type);
+ }
if (! $showfallback) {
- debug user => "trying frontend $type";
+ debug user => "trying frontend $type (file $file)";
}
else {
warn(sprintf(gettext("falling back to frontend: %s"), $type));
}
$frontend=eval qq{
- use Debconf::FrontEnd::$type;
+ use Debconf::FrontEnd::$file;
Debconf::FrontEnd::$type->new();
};
return $frontend if defined $frontend;
@@ -98,7 +104,7 @@
=cut
sub make_confmodule {
- my $confmodule=Debconf::ConfModule->new(frontend => $frontend);
+ $confmodule=Debconf::ConfModule->new(frontend => $frontend);
$confmodule->startup(@_) if @_;