diff options
Diffstat (limited to 'perl-install/modules')
| -rw-r--r-- | perl-install/modules/any_conf.pm | 28 | ||||
| -rw-r--r-- | perl-install/modules/interactive.pm | 38 | ||||
| -rw-r--r-- | perl-install/modules/modprobe_conf.pm | 7 | ||||
| -rw-r--r-- | perl-install/modules/modules_conf.pm | 5 | ||||
| -rw-r--r-- | perl-install/modules/parameters.pm | 47 | 
5 files changed, 42 insertions, 83 deletions
| diff --git a/perl-install/modules/any_conf.pm b/perl-install/modules/any_conf.pm index 7c2bcc0a8..c235e84f4 100644 --- a/perl-install/modules/any_conf.pm +++ b/perl-install/modules/any_conf.pm @@ -1,17 +1,12 @@ -package modules::any_conf; # $Id$ +package modules::any_conf;  use log;  use common;  sub vnew { -    if (c::kernel_version() =~ /^\Q2.6/) { -	require modules::modprobe_conf; -	modules::modprobe_conf->new; -    } else { -	require modules::modules_conf; -	modules::modules_conf->new; -    }     +    require modules::modprobe_conf; +    modules::modprobe_conf->new;  } @@ -103,10 +98,13 @@ sub remove_alias_regexp_byname {  sub remove_module {      my ($conf, $module) = @_; +    return if !$module;      $module = $conf->mapping($module); -    substInFile { -        undef $_ if /^$module/; -    } $_  foreach "$::prefix/etc/modules", "$::prefix/etc/modprobe.preload"; +    foreach my $file ("$::prefix/etc/modules", "$::prefix/etc/modprobe.preload") { +        substInFile { +            undef $_ if /^$module/; +        } $file; +    }      $conf->remove_alias($module);      log::explanations("removing module $module"); @@ -141,10 +139,7 @@ sub write {      #- Substitute new config (if config has changed)      substInFile {  	my ($type, $module, $val) = split(' ', chomp_($_), 3); -	if ($type eq 'post-install' && $module eq 'supermount') {	     -	    #- remove the post-install supermount stuff. -	    $_ = ''; -	} elsif (member($type, $conf->handled_fields)) { +	if (member($type, $conf->handled_fields)) {  	    my $new_val = $conf->{$module}{$type};  	    if (!$new_val) {  		$_ = ''; @@ -205,9 +200,6 @@ sub read_raw {  	s/#.*$//;  	s/\s+$//; -	s/\b(snd-card-)/snd-/g; -	s/\b(snd-via686|snd-via8233)\b/snd-via82xx/g; -  	my ($type, $module, $val) = split(' ', $_, 3) or next;  	$c{$module}{$type} = $val; diff --git a/perl-install/modules/interactive.pm b/perl-install/modules/interactive.pm index ead9e7b71..dae135889 100644 --- a/perl-install/modules/interactive.pm +++ b/perl-install/modules/interactive.pm @@ -1,4 +1,4 @@ -package modules::interactive; # $Id$ +package modules::interactive;  use modules;  use common; @@ -11,17 +11,18 @@ sub config_window {      require modules::parameters;      my @l;      foreach (modules::parameters::parameters($data->{driver})) { -	   my ($name, $format, $description) = @$_; -	   push @l, { label => $name, help => join("\n", $description, if_(c::kernel_version() !~ /^\Q2.6/, "[$format]")), -                                                val => \$conf{$name}, allow_empty_list => 1 }; +	   my ($name, $description) = @$_; +	   push @l, { label => $name, help => $description, +		      val => \$conf{$name}, allow_empty_list => 1 }; +    } +    if (!@l) { +        $in->ask_warn(N("Error"), N("This driver has no configuration parameter!")); +        return;      } -    # BUG: once we've released mdk9.2 and unfreeze cooker, morph this -    #      into a proper error dialog with a nice error message (but -    #      for now we cannot due to string freeze :-() -    @l = { label => N("Parameters"), help => "", val => N("NONE"), allow_empty_list => 1 } if !@l;      if ($in->ask_from(N("Module configuration"), N("You can configure each parameter of the module here."), \@l)) { -	   my $options = join(' ', map { if_($conf{$_}, "$_=$conf{$_}") } keys %conf); -	   if ($options) { +	   my $options = join(' ', map { if_($conf{$_} =~ /^\S+$/, "$_=$conf{$_}") } keys %conf); +	   my $old_options = $modules_conf->get_options($data->{driver}); +	   if ($options ne $old_options) {  	       $modules_conf->set_options($data->{driver}, $options);  	       $modules_conf->write;  	   } @@ -80,13 +81,13 @@ sub load_category__prompt_for_more {  my %category2text = (      'bus/usb' => N_("Installing driver for USB controller"), -    'bus/firewire' => N_("Installing driver for firewire controller %s"), -    'disk/ide|scsi|hardware_raid|sata|firewire' => N_("Installing driver for hard drive controller %s"), -    list_modules::ethernet_categories() => N_("Installing driver for ethernet controller %s"), +    'bus/firewire' => N_("Installing driver for firewire controller \"%s\""), +    'disk/card_reader|ide|scsi|hardware_raid|sata|firewire|virtual' => N_("Installing driver for hard disk drive controller \"%s\""), +    list_modules::ethernet_categories() => N_("Installing driver for ethernet controller \"%s\""),  );  sub wait_load_module { -    my ($in, $category, $text, $module) = @_; +    my ($in, $category, $text, $_module) = @_;      my $msg = do {  	if (my $t = $category2text{$category}) {  	    sprintf(translate($t), $text); @@ -96,20 +97,21 @@ sub wait_load_module {  	    N("Installing driver for %s card %s", $category, $text);  	}      }; -    $in->wait_message('', [ $msg, if_($::expert, N("(module %s)", $module)) ]); +    $in->wait_message(N("Configuring Hardware"), $msg);  }  sub load_module__ask_options {      my ($in, $module_descr, $parameters) = @_; -    my @parameters = map { [ @$_[0, 1, 2] ] } @$parameters; +    #- deep copying +    my @parameters = map { [ @$_[0, 1] ] } @$parameters;      if (@parameters) {  	$in->ask_from('',   		      N("You may now provide options to module %s.\nNote that any address should be entered with the prefix 0x like '0x123'", $module_descr),  -		      [ map { { label => $_->[0] . ($_->[1] ? " ($_->[1])" : ''), help => $_->[2], val => \$_->[3] } } @parameters ], +		      [ map { { label => $_->[0], help => $_->[1], val => \$_->[2] } } @parameters ],  		     ) or return; -	join(' ', map { if_($_->[3], "$_->[0]=$_->[3]") } @parameters); +	join(' ', map { if_($_->[2], "$_->[0]=$_->[2]") } @parameters);      } else {  	my $s = $in->ask_from_entry('',  N("You may now provide options to module %s. diff --git a/perl-install/modules/modprobe_conf.pm b/perl-install/modules/modprobe_conf.pm index b2a57717d..7989096f8 100644 --- a/perl-install/modules/modprobe_conf.pm +++ b/perl-install/modules/modprobe_conf.pm @@ -1,7 +1,8 @@ -package modules::modprobe_conf; # $Id$ +package modules::modprobe_conf;  use log;  use common; +# perl_checker: require modules::any_conf  our @ISA = qw(modules::any_conf); @@ -21,7 +22,7 @@ sub get_above {      my (undef, $after) = parse_non_virtual($module, $conf->{$module}{install}) or return;      my ($l, $_other_cmds) = partition_modprobes($after); -    join(' ', @$l); +    @$l;  }  sub set_above {      my ($conf, $module, $o_modules) = @_; @@ -102,7 +103,7 @@ sub parse_non_virtual {  sub unparse_non_virtual {      my ($module, $mode, $before, $after) = @_;      ($before ? "$before; " : '') -      . "/sbin/modprobe --first-time $mode $module"  +      . (($before || $after) ? "/sbin/modprobe --first-time $mode $module" : '')  	. ($after ? " && { $after; /bin/true; }" : '');      } diff --git a/perl-install/modules/modules_conf.pm b/perl-install/modules/modules_conf.pm index afcf08b35..be4b8fca4 100644 --- a/perl-install/modules/modules_conf.pm +++ b/perl-install/modules/modules_conf.pm @@ -1,7 +1,8 @@ -package modules::modules_conf; # $Id$ +package modules::modules_conf;  use log;  use common; +# perl_checker: require modules::any_conf  our @ISA = qw(modules::any_conf); @@ -19,7 +20,7 @@ sub get_above {      my ($conf, $module) = @_;      $module = $conf->mapping($module); -    $conf->{$module} && $conf->{$module}{above}; +    $conf->{$module} && split(' ', $conf->{$module}{above});  }  sub set_above {      my ($conf, $module, $o_modules) = @_; diff --git a/perl-install/modules/parameters.pm b/perl-install/modules/parameters.pm index fa8fcfae7..36990b5d1 100644 --- a/perl-install/modules/parameters.pm +++ b/perl-install/modules/parameters.pm @@ -1,4 +1,4 @@ -package modules::parameters; # $Id$ +package modules::parameters;  use diagnostics;  use strict; @@ -13,48 +13,11 @@ use modules;  sub parameters {    my ($module) = @_; -  if (!$::isStandalone && !$::testing) { -      ($module) = modules::extract_modules('/tmp', $module); -  } - -  my @parameters; -  foreach (common::join_lines(run_program::get_stdout('modinfo', '-p', $module))) { +  map {        chomp; -      next if /^warning:/; -      (my $name, $_) = /(\w+)(?::|\s+)(.*)/s or warn "modules::parameters::get_options_name($module): unknown line\n"; -      if (c::kernel_version() =~ /^\Q2.6/) { -          push @parameters, [ $name, '', $_ ]; -          next; -      } - -      my $c_types = 'int|string|short|byte|char|long'; -      my ($is_a_number, $description, $min, $max) = (0, '', 1, 1); -      if (/^($c_types) array \(min = (\d+), max = (\d+)\),?\s*(.*)/s) { -	  $_ = $4; -	  #- seems like "char" are buggy entries -	  ($is_a_number, $min, $max) = ($1 ne 'string', $2, $3) if $1 ne 'char';  -      } elsif (/^($c_types),?\s*(.*)/s) { -	  $_ = $2; -	  #- here "char" really are size-limited strings, modinfo does not display the size limit (but since we do not care about it, it does not matter :) -	  $is_a_number = $1 ne 'string' if $1 ne 'char'; -      } else { -	  #- for things like "no format character" or "unknown format character" -      } -      if (/^description "(.*)",?\s*/s) { -	  ($description, $_) = ($1, $2); -      } -      #- print "STILL HAVE ($_)\n" if $_; - -	 my $format = $min == 1 && $max == 1 ? -		($is_a_number ? N("a number") : '') : -		$min == $max ?  -		($is_a_number ? N("%d comma separated numbers", $min) : N("%d comma separated strings", $min)) : -		$min == 1 ? -		($is_a_number ? N("comma separated numbers") : N("comma separated strings")) : -		''; #- too weird and buggy, do not display it -    push @parameters, [ $name, $format, $description ]; -  } -  @parameters; +      (my $name, $_) = /(\w+):(.*)/s or warn "modules::parameters::parameters($module): unknown line\n"; +      [ $name, $_ ]; +  } common::join_lines(run_program::get_stdout('modinfo', '-p', $module));  }  1; | 
