summaryrefslogtreecommitdiffstats
path: root/perl-install/install_steps_interactive.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/install_steps_interactive.pm')
-rw-r--r--perl-install/install_steps_interactive.pm758
1 files changed, 0 insertions, 758 deletions
diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm
deleted file mode 100644
index 5b616bd2c..000000000
--- a/perl-install/install_steps_interactive.pm
+++ /dev/null
@@ -1,758 +0,0 @@
-package install_steps_interactive;
-
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(install_steps);
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use common qw(:common :file :functional);
-use partition_table qw(:types);
-use install_steps;
-use pci_probing::main;
-use install_any;
-use detect_devices;
-use timezone;
-use network;
-use mouse;
-use modules;
-use lang;
-use pkgs;
-use keyboard;
-use fs;
-use modparm;
-use log;
-use printer;
-use lilo;
-#-######################################################################################
-#- In/Out Steps Functions
-#-######################################################################################
-sub errorInStep($$) {
- my ($o, $err) = @_;
- $o->ask_warn(_("Error"), [ _("An error occurred"), $err ]);
-}
-
-sub kill_action {
- my ($o) = @_;
- $o->kill;
-}
-
-#-######################################################################################
-#- Steps Functions
-#-######################################################################################
-#------------------------------------------------------------------------------
-sub selectLanguage($) {
- my ($o) = @_;
- $o->{lang} =
- lang::text2lang($o->ask_from_list("Language",
- _("Which language do you want?"),
- # the translation may be used for the help
- [ lang::list() ],
- lang::lang2text($o->{lang})));
- install_steps::selectLanguage($o);
-}
-#------------------------------------------------------------------------------
-sub selectKeyboard($) {
- my ($o) = @_;
- $o->{keyboard} =
- keyboard::text2keyboard($o->ask_from_list_("Keyboard",
- _("Which keyboard do you have?"),
- [ keyboard::list() ],
- keyboard::keyboard2text($o->{keyboard})));
- $o->{keyboard_force} = 1;
- install_steps::selectKeyboard($o);
-}
-#------------------------------------------------------------------------------
-sub selectPath($) {
- my ($o) = @_;
- $o->{isUpgrade} =
- $o->ask_from_list_(_("Install/Upgrade"),
- _("Is this an install or an upgrade?"),
- [ __("Install"), __("Upgrade") ],
- $o->{isUpgrade} ? "Upgrade" : "Install") eq "Upgrade";
- install_steps::selectPath($o);
-}
-#------------------------------------------------------------------------------
-sub selectRootPartition($@) {
- my ($o,@partitions) = @_;
- $o->{upgradeRootPartition} =
- $o->ask_from_list_(_("Root Partition"),
- _("What is the root partition of your system?"),
- [ @partitions ], $o->{upgradeRootPartitions});
-#- TODO check choice, then mount partition in $o->{prefix} and autodetect.
-#- install_steps::selectRootPartition($o);
-}
-#------------------------------------------------------------------------------
-sub selectInstallClass($@) {
- my ($o, @classes) = @_;
- $o->{installClass} =
- $o->ask_from_list_(_("Install Class"),
- _("What type of user will you have?"),
- [ @classes ], $o->{installClass});
- install_steps::selectInstallClass($o);
-}
-
-#------------------------------------------------------------------------------
-sub selectMouse {
- my ($o, $force) = @_;
-
- my $name = $o->{mouse}{FULLNAME};
- if (!$name || $::expert || $force) {
- $name = $o->ask_from_list_('', _("Which mouse do you have"), [ mouse::names() ], $name);
- $o->{mouse} = mouse::name2mouse($name);
- }
- my $b = $o->{mouse}{nbuttons} < 3;
- $o->{mouse}{XEMU3} = 'yes' if $::expert && $o->ask_yesorno('', _("Emulate third button"), $b) || $b;
-
- $o->{mouse}{device} = mouse::serial_ports_names2dev(
- $o->ask_from_list(_("Mouse Port"),
- _("Which serial port is your mouse connected to?"),
- [ mouse::serial_ports_names() ])) if $o->{mouse}{device} eq "ttyS";
-
- $o->SUPER::selectMouse;
-}
-#------------------------------------------------------------------------------
-sub setupSCSI { setup_thiskind($_[0], 'scsi', $_[1], $_[2]) }
-#------------------------------------------------------------------------------
-sub rebootNeeded($) {
- my ($o) = @_;
- $o->ask_warn('', _("You need to reboot for the partition table modifications to take place"));
-
- install_steps::rebootNeeded($o);
-}
-sub choosePartitionsToFormat($$) {
- my ($o, $fstab) = @_;
-
- $o->SUPER::choosePartitionsToFormat($fstab);
-
- my @l = grep { $_->{mntpoint} && !($::beginner && isSwap($_)) } @$fstab;
-
- return if $::beginner && 0 == grep { ! $_->{toFormat} } @l;
-
- $o->ask_many_from_list_ref('', _("Choose the partitions you want to format"),
- [ map { isSwap($_) ? type2name($_->{type}) . " ($_->{device})" : $_->{mntpoint} } @l ],
- [ map { \$_->{toFormat} } @l ]) or die "cancel";
-}
-
-sub formatPartitions {
- my $o = shift;
- my $w = $o->wait_message('', '');
- foreach (@_) {
- if ($_->{toFormat}) {
- $w->set(_("Formatting partition %s", $_->{device}));
- fs::format_part($_);
- }
- }
-}
-#------------------------------------------------------------------------------
-sub setPackages {
- my ($o, $install_classes) = @_;
- my $w = $o->wait_message('', _("Searching for available packages"));
- $o->SUPER::setPackages($install_classes);
-}
-
-#------------------------------------------------------------------------------
-sub configureNetwork($) {
- my ($o, $first_time) = @_;
- my $r = '';
- if ($o->{intf}) {
- if ($first_time) {
- my @l = (
- __("Keep the current IP configuration"),
- __("Reconfigure network now"),
- __("Don't set up networking"),
- );
- $r = $o->ask_from_list_(_("Network Configuration"),
- _("LAN networking has already been configured. Do you want to:"),
- [ @l ]);
- $r ||= "Don't";
- }
- } else {
- $o->ask_yesorno(_("Network Configuration"),
- _("Do you want to configure LAN (not dialup) networking for your installed system?")) or $r = "Don't";
- }
-
- if ($r =~ /^Don\'t/) {
- $o->{netc}{NETWORKING} = "false";
- } elsif ($r !~ /^Keep/) {
- $o->setup_thiskind('net', !$::expert, 1);
- my @l = detect_devices::getNet() or die _("no network card found");
-
- my $last; foreach ($::beginner ? $l[0] : @l) {
- my $intf = network::findIntf($o->{intf} ||= [], $_);
- add2hash($intf, $last);
- add2hash($intf, { NETMASK => '255.255.255.0' });
- $o->configureNetworkIntf($intf) or return;
-
- $o->{netc} ||= {};
- delete $o->{netc}{dnsServer};
- delete $o->{netc}{GATEWAY};
- $last = $intf;
- }
- #- {
- #- my $wait = $o->wait_message(_("Hostname"), _("Determining host name and domain..."));
- #- network::guessHostname($o->{prefix}, $o->{netc}, $o->{intf});
- #- }
- $o->configureNetworkNet($o->{netc}, $last ||= {}, @l) or return;
- }
- install_steps::configureNetwork($o);
-}
-
-sub configureNetworkIntf {
- my ($o, $intf) = @_;
- delete $intf->{NETWORK};
- delete $intf->{BROADCAST};
- my @fields = qw(IPADDR NETMASK);
- $o->ask_from_entries_ref(_("Configuring network device %s", $intf->{DEVICE}),
-_("Please enter the IP configuration for this machine.
-Each item should be entered as an IP address in dotted-decimal
-notation (for example, 1.2.3.4)."),
- [ _("IP address:"), _("Netmask:")],
- [ \$intf->{IPADDR}, \$intf->{NETMASK} ],
- complete => sub {
- for (my $i = 0; $i < @fields; $i++) {
- unless (network::is_ip($intf->{$fields[$i]})) {
- $o->ask_warn('', _("IP address should be in format 1.2.3.4"));
- return (1,$i);
- }
- return 0;
- }
- },
- focus_out => sub {
- $intf->{NETMASK} = network::netmask($intf->{IPADDR}) unless $_[0]
- }
-
- );
-}
-
-sub configureNetworkNet {
- my ($o, $netc, $intf, @devices) = @_;
- $netc->{dnsServer} ||= network::dns($intf->{IPADDR});
- $netc->{GATEWAY} ||= network::gateway($intf->{IPADDR});
-
- $o->ask_from_entries_ref(_("Configuring network"),
-_("Please enter your host name.
-Your host name should be a fully-qualified host name,
-such as ``mybox.mylab.myco.com''.
-Also give the gateway if you have one"),
- [_("Host name:"), _("DNS server:"), _("Gateway:"), !$::beginner ? _("Gateway device:") : ()],
- [(map { \$netc->{$_}} qw(HOSTNAME dnsServer GATEWAY)),
- {val => \$netc->{GATEWAYDEV}, list => \@devices}]
- );
-}
-
-#------------------------------------------------------------------------------
-sub timeConfig {
- my ($o, $f) = @_;
-
- $o->{timezone}{GMT} = $o->ask_yesorno('', _("Is your hardware clock set to GMT?"), $o->{timezone}{GMT});
- $o->{timezone}{timezone} ||= timezone::bestTimezone(lang::lang2text($o->{lang}));
- $o->{timezone}{timezone} = $o->ask_from_list('', _("In which timezone are you"), [ timezone::getTimeZones($::g_auto_install ? '' : $o->{prefix}) ], $o->{timezone}{timezone});
- install_steps::timeConfig($o,$f);
-}
-
-#------------------------------------------------------------------------------
-#-sub servicesConfig {}
-#------------------------------------------------------------------------------
-sub printerConfig($) {
- my ($o) = @_;
- $o->{printer}{want} =
- $o->ask_yesorno(_("Printer"),
- _("Would you like to configure a printer?"),
- $o->{printer}{want});
- return if !$o->{printer}{want};
-
- unless (($::testing)) {
- printer::set_prefix($o->{prefix});
- pkgs::select($o->{packages}, $o->{packages}{'rhs-printfilters'});
- $o->installPackages($o->{packages});
-
- }
- printer::read_printer_db();
-
- $o->{printer}{complete} = 0;
- if ($::expert) {
- #std info
- #Don't wait, if the user enter something, you must remember it
- $o->ask_from_entries_ref(_("Standard Printer Options"),
- _("Every print queue (which print jobs are directed to) needs a
-name (often lp) and a spool directory associated with it. What
-name and directory should be used for this queue?"),
- [_("Name of queue:"), _("Spool directory:")],
- [\$o->{printer}{QUEUE}, \$o->{printer}{SPOOLDIR}],
- changed => sub
- {
- $o->{printer}{SPOOLDIR}
- = "$printer::spooldir/$o->{printer}{QUEUE}" unless $_[0];
- },
- );
- }
-
- $o->{printer}{str_type} =
- $o->ask_from_list_(_("Select Printer Connection"),
- _("How is the printer connected?"),
- [keys %printer::printer_type],
- ${$o->{printer}}{str_type},
- );
- $o->{printer}{TYPE} = $printer::printer_type{$o->{printer}{str_type}};
-
- if ($o->{printer}{TYPE} eq "LOCAL") {
- {
- my $w = $o->wait_message(_("Test ports"), _("Detecting devices..."));
- eval { modules::load("lp");modules::load("parport_probe"); };
- }
-
- my @port = ();
- my @parport = detect_devices::whatPrinter();
- eval { modules::unload("parport_probe") };
- my $str;
- if ($parport[0]) {
- my $port = $parport[0]{port};
- $o->{printer}{DEVICE} = $port;
- my $descr = common::bestMatchSentence2($parport[0]{val}{DESCRIPTION}, @printer::entry_db_description);
- $o->{printer}{DBENTRY} = $printer::descr_to_db{$descr};
- $str = _("I have detected a %s on ", $parport[0]{val}{DESCRIPTION}) . $port;
- @port = map { $_->{port}} @parport;
- } else {
- @port = detect_devices::whatPrinterPort();
- }
- $o->{printer}{DEVICE} = $port[0] if $port[0];
-
- return if !$o->ask_from_entries_ref(_("Local Printer Device"),
- _("What device is your printer connected to \n(note that /dev/lp0 is equivalent to LPT1:)?\n") . $str ,
- [_("Printer Device:")],
- [{val => \$o->{printer}{DEVICE}, list => \@port }],
- );
- #-TAKE A GOODDEFAULT TODO
-
- } elsif ($o->{printer}{TYPE} eq "REMOTE") {
- return if !$o->ask_from_entries_ref(_("Remote lpd Printer Options"),
- _("To use a remote lpd print queue, you need to supply
-the hostname of the printer server and the queue name
-on that server which jobs should be placed in."),
- [_("Remote hostname:"), _("Remote queue:")],
- [\$o->{printer}{REMOTEHOST}, \$o->{printer}{REMOTEQUEUE}],
- );
-
- } elsif ($o->{printer}{TYPE} eq "SMB") {
- return if !$o->ask_from_entries_ref(
- _("SMB/Windows 95/NT Printer Options"),
- _("To print to a SMB printer, you need to provide the
-SMB host name (this is not always the same as the machines
-TCP/IP hostname) and possibly the IP address of the print server, as
-well as the share name for the printer you wish to access and any
-applicable user name, password, and workgroup information."),
- [_("SMB server host:"), _("SMB server IP:"),
- _("Share name:"), _("User name:"), _("Password:"),
- _("Workgroup:")],
- [\$o->{printer}{SMBHOST}, \$o->{printer}{SMBHOSTIP},
- \$o->{printer}{SMBSHARE}, \$o->{printer}{SMBUSER},
- {val => \$o->{printer}{SMBPASSWD}, hidden => 1}, \$o->{printer}{SMBWORKGROUP}
- ],
- complete => sub {
- unless (network::is_ip($o->{printer}{SMBHOSTIP})) {
- $o->ask_warn('', _("IP address should be in format 1.2.3.4"));
- return (1,1);
- }
- return 0;
- },
-
- );
- } else {#($o->{printer}{TYPE} eq "NCP") {
- return if !$o->ask_from_entries_ref(_("NetWare Printer Options"),
- _("To print to a NetWare printer, you need to provide the
-NetWare print server name (this is not always the same as the machines
-TCP/IP hostname) as well as the print queue name for the printer you
-wish to access and any applicable user name and password."),
- [_("Printer Server:"), _("Print Queue Name:"),
- _("User name:"), _("Password:")],
- [\$o->{printer}{NCPHOST}, \$o->{printer}{NCPQUEUE},
- \$o->{printer}{NCPUSER}, {val => \$o->{printer}{NCPPASSWD}, hidden => 1}],
- );
- }
-
-
-
- $o->{printer}{DBENTRY} =
- $printer::descr_to_db{
- $o->ask_from_list_(_("Configure Printer"),
- _("What type of printer do you have?"),
- [@printer::entry_db_description],
- $printer::db_to_descr{$o->{printer}{DBENTRY}},
- )
- };
-
- my %db_entry = %{$printer::thedb{$o->{printer}{DBENTRY}}};
-
-
- #-paper size conf
- $o->{printer}{PAPERSIZE} =
- $o->ask_from_list_(_("Paper Size"),
- _("Paper Size"),
- \@printer::papersize_type,
- $o->{printer}{PAPERSIZE}
- );
-
- #-resolution size conf
- my @list_res = @{$db_entry{RESOLUTION}};
- my @res = map { "${$_}{XDPI}x${$_}{YDPI}" } @list_res;
- if (@list_res) {
- $o->{printer}{RESOLUTION} = $o->ask_from_list_(_("Resolution"),
- _("Resolution"),
- \@res,
- $o->{printer}{RESOLUTION},
- );
- } else {
- $o->{printer}{RESOLUTION} = "Default";
- }
-
- $o->{printer}{CRLF} = $db_entry{DESCR} =~ /HP/;
- $o->{printer}{CRLF}= $o->ask_yesorno(_("CRLF"),
- _("Fix stair-stepping of text?"),
- $o->{printer}{CRLF});
-
-
- #-color_depth
- if ($db_entry{BITSPERPIXEL}) {
- my @list_col = @{$db_entry{BITSPERPIXEL}};
- my @col = map { "$_->{DEPTH} $_->{DESCR}" } @list_col;
- my %col_to_depth = map { ("$_->{DEPTH} $_->{DESCR}", $_->{DEPTH}) } @list_col;
- my %depth_to_col = reverse %col_to_depth;
-
- if (@list_col) {
- my $is_uniprint = $db_entry{GSDRIVER} eq "uniprint";
- if ($is_uniprint) {
- $o->{printer}{BITSPERPIXEL} =
- $col_to_depth{$o->ask_from_list_
- (_("Configure Uniprint Driver"),
- _("You may now configure the uniprint options for this printer."),
- \@col,
- $depth_to_col{$o->{printer}{BITSPERPIXEL}},
- )};
-
- } else {
- $o->{printer}{BITSPERPIXEL} =
- $col_to_depth{$o->ask_from_list_
- (_("Configure Color Depth"),
- _("You may now configure the color options for this printer."),
- \@col,
- $depth_to_col{$o->{printer}{BITSPERPIXEL}},
- )};
- }
- } else {
- $o->{printer}{BITSPERPIXEL} = "Default";
- }
- }
- $o->{printer}{complete} = 1;
-
- install_steps::printerConfig($o);
-}
-
-
-#------------------------------------------------------------------------------
-sub setRootPassword($) {
- my ($o) = @_;
- $o->{superuser}{password2} ||= $o->{user}{password} ||= "";
- my $sup = $o->{superuser};
-
- $o->ask_from_entries_ref(_("Set root password"),
- _("Set root password"),
- [_("Password"), _("Password (again)")],
- [{ val => \$sup->{password}, hidden => 1},
- { val => \$sup->{password2}, hidden => 1}],
- complete => sub {
- $sup->{password} eq $sup->{password2} or $o->ask_warn('', [ _("You must enter the same password"), _("Please try again") ]), return (1,1);
- (length $sup->{password} < 6) and $o->ask_warn('', _("This password is too simple")), return (1,0);
- return 0
- }
- );
- install_steps::setRootPassword($o);
-}
-
-#------------------------------------------------------------------------------
-#-addUser
-#------------------------------------------------------------------------------
-sub addUser($) {
- my ($o) = @_;
- $o->{user}{password2} ||= $o->{user}{password} ||= "";
- my $u = $o->{user};
- my @fields = qw(realname name password password2);
- my @shells = install_any::shells($o);
-
- $o->ask_from_entries_ref(
- _("Add user"),
- _("Enter a user"),
- [ _("Real name"), _("User name"), _("Password"), _("Password (again)"), _("Shell") ],
- [ \$u->{realname}, \$u->{name},
- {val => \$u->{password}, hidden => 1}, {val => \$u->{password2}, hidden => 1},
- {val => \$u->{shell}, list => \@shells, not_edit => !$::expert},
- ],
- focus_out => sub {
- if ($_[0] eq 0) {
- $u->{name} = lc first($u->{realname} =~ /((\w|-)+)/);
- }
- },
- complete => sub {
- $u->{password} eq $u->{password2} or $o->ask_warn('', [ _("You must enter the same password"), _("Please try again") ]), return (1,3);
- #(length $u->{password} < 6) and $o->ask_warn('', _("This password is too simple")), return (1,2);
- $u->{name} or $o->ask_warn('', _("Please give a user name")), return (1,0);
- $u->{name} =~ /^[a-z0-9_-]+$/ or $o->ask_warn('', _("The user name must contain only lower cased letters, numbers, `-' and `_'")), return (1,0);
- return 0;
- },
- ) or return;
- install_steps::addUser($o);
- $o->{user} = {};
- goto &addUser if $::expert;
-}
-
-
-
-
-#------------------------------------------------------------------------------
-sub createBootdisk {
- my ($o, $first_time) = @_;
- my @l = detect_devices::floppies();
-
- if ($first_time || @l == 1) {
- $o->ask_yesorno('',
- _("A custom bootdisk provides a way of booting into your Linux system without
-depending on the normal bootloader. This is useful if you don't want to install
-lilo on your system, or another operating system removes lilo, or lilo doesn't
-work with your hardware configuration. A custom bootdisk can also be used with
-the Mandrake rescue image, making it much easier to recover from severe system
-failures. Would you like to create a bootdisk for your system?"), $o->{mkbootdisk}) or return;
- $o->{mkbootdisk} = $l[0] if !$o->{mkbootdisk} || $o->{mkbootdisk} eq "1";
- } else {
- @l or die _("Sorry, no floppy drive available");
-
- $o->{mkbootdisk} = $o->ask_from_list('',
- _("Choose the floppy drive you want to use to make the bootdisk"),
- [ @l, "Cancel" ], $o->{mkbootdisk});
- return if $o->{mkbootdisk} eq "Cancel";
- }
-
- $o->ask_warn('', _("Insert a floppy in drive %s", $o->{mkbootdisk}));
- my $w = $o->wait_message('', _("Creating bootdisk"));
- install_steps::createBootdisk($o);
-}
-
-#------------------------------------------------------------------------------
-sub setupBootloaderBefore {
- my ($o) = @_;
- my $w = $o->wait_message('', _("Preparing bootloader"));
- $o->SUPER::setupBootloaderBefore($o);
-}
-
-sub setupBootloader {
- my ($o, $more) = @_;
- my $b = $o->{bootloader};
-
- if ($::beginner && !$more) {
- my @l = (__("First sector of drive"), __("First sector of boot partition"));
-
- my $boot = $o->{hds}[0]{device};
- my $onmbr = "/dev/$boot" eq $b->{boot};
- $b->{boot} = "/dev/$boot" if !$onmbr &&
- $o->ask_from_list_(_("Lilo Installation"),
- _("Where do you want to install the bootloader?"),
- \@l, $l[!$onmbr]) eq $l[0];
- } else {
- $::expert and $o->ask_yesorno('', _("Do you want to use lilo?"), 1) || return;
-
- my @l = (
-_("Boot device") => { val => \$b->{boot}, list => [ map { "/dev/$_->{device}" } @{$o->{hds}}, @{$o->{fstab}} ], not_edit => !$::expert },
-_("Linear (needed for some SCSI drives)") => { val => \$b->{linear}, type => "bool", text => _("linear") },
-_("Compact") => { val => \$b->{compact}, type => "bool", text => _("compact") },
-_("Delay before choosing default choice") => \$b->{timeout},
-_("Video mode") => { val => \$b->{vga}, list => [ keys %lilo::vga_modes ], not_edit => $::beginner },
-_("Password") => { val => \$b->{password}, hidden => 1 },
-_("Restrict command line options") => { val => \$b->{restricted}, type => "bool", text => _("restrict") },
- );
- @l = @l[0..3] if $::beginner;
-
- $b->{vga} ||= 'Normal';
- $o->ask_from_entries_ref('',
- _("Lilo main options"),
- [ grep_index { even($::i) } @l ],
- [ grep_index { odd($::i) } @l ],
- complete => sub {
- $b->{restricted} && !$b->{password} and $o->ask_warn('', _("Option ``Restrict command line options'' is of no use without a password")), return 1;
- 0;
- }
- ) or return;
- $b->{vga} = $lilo::vga_modes{$b->{vga}} || $b->{vga};
- }
-
- until ($::beginner && !$more) {
- my $c = $o->ask_from_list_('',
-_("Here are the following entries in lilo
-You can add some more or change the existent ones."),
- [ (sort @{[map_each { "$::b->{label} ($::a)" . ($b->{default} eq $::b->{label} && " *") } %{$b->{entries}}]}), __("Add"), __("Done") ],
- );
- $c eq "Done" and last;
-
- my $e = {};
- my $name = '';
-
- if ($c ne "Add") {
- ($name) = $c =~ /\((.*?)\)/;
- $e = $b->{entries}{$name};
- }
- my $old_name = $name;
- my $default = my $old_default = $e->{label} eq $b->{default};
-
- my @l;
- if ($e->{type} eq "image") {
- @l = (
-_("Image") => { val => \$name, list => [ eval { glob_("/boot/vmlinuz*") } ] },
-_("Root") => { val => \$e->{root}, list => [ map { "/dev/$_->{device}" } @{$o->{fstab}} ], not_edit => !$::expert },
-_("Append") => \$e->{append},
-_("Initrd") => { val => \$e->{initrd}, list => [ eval { glob_("/boot/initrd*") } ] },
-_("Read-write") => { val => \$e->{'read-write'}, type => 'bool' }
- );
- @l = @l[0..3] if $::beginner;
- } else {
- @l = (
-_("Root") => { val => \$name, list => [ map { "/dev/$_->{device}" } @{$o->{fstab}} ], not_edit => !$::expert },
-_("Table") => { val => \$e->{table}, list => [ map { "/dev/$_->{device}" } @{$o->{hds}} ], not_edit => !$::expert },
-_("Unsafe") => { val => \$e->{unsafe}, type => 'bool' }
- );
- @l = @l[0..1] if $::beginner;
- }
- @l = (
-_("Label") => \$e->{label},
-@l,
-_("Default") => { val => \$default, type => 'bool' },
- );
-
- $o->ask_from_entries_ref('',
- '',
- [ grep_index { even($::i) } @l ],
- [ grep_index { odd($::i) } @l ],
- ) or return;
-
- $b->{default} = $old_default ^ $default ? $default && $e->{label} : $b->{default};
-
- delete $b->{entries}{$old_name};
- $b->{entries}{$name} = $e;
- }
- eval { $o->SUPER::setupBootloader };
- if ($@) {
- $o->ask_warn('',
- [ _("Lilo failed. The following error occured:"),
- grep { !/^Warning:/ } cat_("$o->{prefix}/tmp/.error") ]);
- die "already displayed";
- }
-}
-
-#------------------------------------------------------------------------------
-sub exitInstall {
- my ($o, $alldone) = @_;
-
- return $o->{step} = '' unless $alldone || $o->ask_yesorno('',
-_("Some steps are not completed
-Do you really want to quit now?"), 0);
-
- $o->ask_warn('',
-_("Congratulations, installation is complete.
-Remove the boot media and press return to reboot.
-For information on fixes which are available for this release of Linux Mandrake,
-consult the Errata available from http://www.linux-mandrake.com/.
-Information on configuring your system is available in the post
-install chapter of the Official Linux Mandrake User's Guide.")) if $alldone;
-}
-
-
-#-######################################################################################
-#- Misc Steps Functions
-#-######################################################################################
-sub loadModule {
- my ($o, $type) = @_;
- my @options;
-
- my $l = $o->ask_from_list('',
- _("What %s card have you?", $type),
- [ modules::text_of_type($type) ]) or return;
- my $m = modules::text2driver($l);
-
- my @names = modparm::get_options_name($m);
-
- if ((!defined @names || @names > 0) && $o->ask_from_list('',
-_("In some cases, the %s driver needs to have extra information to work
-properly, although it normally works fine without. Would you like to specify
-extra options for it or allow the driver to probe your machine for the
-information it needs? Occasionally, probing will hang a computer, but it should
-not cause any damage.", $l),
- [ __("Autoprobe"), __("Specify options") ], "Autoprobe") ne "Autoprobe") {
- ASK:
- if (defined @names) {
- my @l = $o->ask_from_entries('',
-_("Here must give the different options for the module %s.", $l),
- \@names) or return;
- @options = modparm::get_options_result($m, @l);
- } else {
- @options = split ' ',
- $o->ask_from_entry('',
-_("Here must give the different options for the module %s.
-Options are in format ``name=value name2=value2 ...''.
-For example you can have ``io=0x300 irq=7''", $l),
- _("Module options:"),
- );
- }
- }
- eval { modules::load($m, $type, @options) };
- if ($@) {
- $o->ask_yesorno('',
-_("Loading of module %s failed
-Do you want to try again with other parameters?", $l), 1) or return;
- goto ASK;
- }
- $l, $m;
-}
-
-#------------------------------------------------------------------------------
-sub load_thiskind {
- my ($o, $type) = @_;
- my $w;
- modules::load_thiskind($type, sub {
- $w = $o->wait_message('',
- [ _("Installing driver for %s card %s", $type, $_->[0]),
- $::beginner ? () : _("(module %s)", $_->[1])
- ]);
- });
-}
-
-#------------------------------------------------------------------------------
-sub setup_thiskind {
- my ($o, $type, $auto, $at_least_one) = @_;
- my @l = $o->load_thiskind($type) unless $::expert && $o->ask_yesorno('', _("Skip %s pci probe", $type), 1);
- return if $auto && (@l || !$at_least_one);
- while (1) {
- my $msg = @l ?
- [ _("Found %s %s interfaces", join(", ", map { $_->[0] } @l), $type),
- _("Do you have another one?") ] :
- _("Do you have an %s interface?", $type);
-
- my $opt = [ __("Yes"), __("No") ];
- push @$opt, __("See hardware info") if $::expert;
- my $r = "Yes";
- $r = $o->ask_from_list_('', $msg, $opt, "No") unless $at_least_one && @l == 0;
- if ($r eq "No") { return }
- elsif ($r eq "Yes") {
- my @r = $o->loadModule($type) or return;
- push @l, \@r;
- } else {
- $o->ask_warn('', [ pci_probing::main::list() ]);
- }
- }
-}
-
-
-#-######################################################################################
-#- Wonderful perl :(
-#-######################################################################################
-1;