From 4ad0308a646d6d6ff38d1f8410e3ae43e0b9cabb Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Mon, 3 Apr 2000 14:23:31 +0000 Subject: no_comment --- perl-install/Xconfigurator.pm | 8 +-- perl-install/any.pm | 2 +- perl-install/detect_devices.pm | 10 ++-- perl-install/fs.pm | 10 +--- perl-install/install2.pm | 33 ++++++----- perl-install/install_any.pm | 22 ++++---- perl-install/install_steps.pm | 12 ++-- perl-install/install_steps_gtk.pm | 88 ++++++++++++++++++++++------- perl-install/install_steps_interactive.pm | 89 ++++++++++++++++-------------- perl-install/keyboard.pm | 9 +-- perl-install/lang.pm | 8 +-- perl-install/modparm.pm | 2 +- perl-install/modules.pm | 8 ++- perl-install/my_gtk.pm | 11 ++-- perl-install/share/keyboards.tar.bz2 | Bin 20724 -> 15936 bytes 15 files changed, 187 insertions(+), 125 deletions(-) diff --git a/perl-install/Xconfigurator.pm b/perl-install/Xconfigurator.pm index bbebb1cba..215bf4b26 100644 --- a/perl-install/Xconfigurator.pm +++ b/perl-install/Xconfigurator.pm @@ -178,12 +178,12 @@ sub cardConfiguration(;$$$) { add2hash($card, cardName2card($card->{type})) if $card->{type}; add2hash($card, { vendor => "Unknown", board => "Unknown" }); - $card->{prog} = "/usr/X11R6/bin/" . ($::xf4 ? 'XFree86' : "XF86_$card->{server}"); + $card->{prog} = "/usr/X11R6/bin/" . ($::xf4 && $card->{driver} ? 'XFree86' : "XF86_$card->{server}"); -x "$prefix$card->{prog}" or $install && do { $in->suspend; &$install($card->{server}); - &$install('server') if $::xf4; + &$install('server') if $::xf4 && $card->{driver}; $in->resume; }; -x "$prefix$card->{prog}" or die "server $card->{server} is not available (should be in $prefix$card->{prog})"; @@ -267,7 +267,7 @@ sub testConfig($) { unlink "/tmp/.X9-lock"; #- restart_xfs; - my $f = $tmpconfig . ($::xf4 && "-4"); + my $f = $tmpconfig . ($::xf4 && $o->{card}{driver} && "-4"); local *F; open F, "$prefix$o->{card}{prog} :9 -probeonly -pn -xf86config $f 2>&1 |"; foreach () { @@ -332,7 +332,7 @@ sub testFinalConfig($;$$) { open STDERR, ">$f_err"; chroot $prefix if $prefix; exec $o->{card}{prog}, - ($o->{card}{prog} !~ /Xsun/ ? ("-xf86config", ($::testing ? $tmpconfig : $f) . ($::xf4 && "-4")) : ()), + ($o->{card}{prog} !~ /Xsun/ ? ("-xf86config", ($::testing ? $tmpconfig : $f) . ($::xf4 && $o->{card}{driver} && "-4")), ":9" or c::_exit(0); } diff --git a/perl-install/any.pm b/perl-install/any.pm index 735753809..ae3d187f7 100644 --- a/perl-install/any.pm +++ b/perl-install/any.pm @@ -47,7 +47,7 @@ sub addUsers { foreach my $u (@users) { substInFile { s/^$u\n//; $_ .= "$u\n" if eof } "$msec/user.conf" if -d $msec; } - run_program::rooted($prefix, "/etc/security/msec/init-sh/grpuser.sh --refresh"); + run_program::rooted($prefix, "/usr/share/msec/grpuser.sh --refresh"); } sub setupBootloader { diff --git a/perl-install/detect_devices.pm b/perl-install/detect_devices.pm index 74e498d8d..ee4aa3319 100644 --- a/perl-install/detect_devices.pm +++ b/perl-install/detect_devices.pm @@ -34,8 +34,9 @@ sub get { [ \&hasCompaqSmartArray, \&getCompaqSmartArray ]; } sub hds() { grep { $_->{type} eq 'hd' && ($::isStandalone || !isRemovableDrive($_)) } get(); } -sub zips() { grep { $_->{type} eq 'hd' && isZipDrive($_) } get(); } -#-sub jazzs() { grep { $_->{type} eq 'hd' && isJazDrive($_) } get(); } +sub zips() { grep { $_->{type} =~ /.d/ && isZipDrive($_) } get(); } +sub ide_zips() { grep { $_->{type} =~ /.d/ && isZipDrive($_) } getIDE(); } +#-sub jazzs() { grep { $_->{type} =~ /.d/ && isJazDrive($_) } get(); } sub ls120s() { grep { $_->{type} =~ /.d/ && isLS120Drive($_) } get(); } sub cdroms() { my @l = grep { $_->{type} eq 'cdrom' } get(); @@ -51,7 +52,7 @@ sub cdroms() { @l; } sub floppies() { - my @ide = map { $_->{device} } grep { $_->{type} eq 'fd' } get() and modules::load("ide-floppy"); + my @ide = map { $_->{device} } ls120s() and modules::load("ide-floppy"); (@ide, grep { tryOpen($_) } qw(fd0 fd1)); } #- example ls120, model = "LS-120 SLIM 02 UHD Floppy" @@ -197,12 +198,11 @@ sub syslog { sub hasSMP { c::detectSMP() } -#- warning: hasUltra66 does a pci probe sub hasUltra66 { cat_("/proc/cmdline") =~ /(ide2=(\S+)(\s+ide3=(\S+))?)/ and return $1; require pci_probing::main; - my @l = map { $_->[0] } grep { $_->[1] =~ /(HPT|Ultra66)/ } pci_probing::main::probe('STORAGE_OTHER', 'more') or return; + my @l = map { $_->[0] } pci_probing::main::matching_desc('(HPT|Ultra66)') or return; my $ide = sprintf "ide2=0x%x,0x%x ide3=0x%x,0x%x", @l == 2 ? diff --git a/perl-install/fs.pm b/perl-install/fs.pm index 88734a3e4..43b88e69d 100644 --- a/perl-install/fs.pm +++ b/perl-install/fs.pm @@ -312,15 +312,7 @@ sub write($$$$) { $useSupermount ? [ "/mnt/zip$i", "/mnt/zip$i", "supermount", "fs=vfat,dev=/dev/zip$i", 0, 0 ] : [ "/dev/zip$i", "/mnt/zip$i", "auto", "user,noauto,nosuid,exec,nodev", 0, 0 ]; - } detect_devices::zips()), - (map_index { #- for LS-120 drives, there are no partitions by default. - my $i = $::i ? $::i + 1 : ''; - mkdir "$prefix/mnt/floppy-ls$i", 0755 or log::l("failed to mkdir $prefix/mnt/floppy-ls$i: $!"); - symlinkf $_->{device}, "$prefix/dev/floppy-ls$i" or log::l("failed to symlink $prefix/dev/floppy-ls$i: $!"); - $useSupermount ? - [ "/mnt/floppy-ls$i", "/mnt/floppy-ls$i", "supermount", "fs=vfat,dev=/dev/floppy-ls$i", 0, 0 ] : - [ "/dev/floppy-ls$i", "/mnt/floppy-ls$i", "auto", "user,noauto,nosuid,exec,nodev", 0, 0 ]; - } detect_devices::ls120s())); + } detect_devices::zips())); write_fstab($fstab, $prefix, @to_add); } diff --git a/perl-install/install2.pm b/perl-install/install2.pm index 4e5fb566f..f81b7ba8d 100644 --- a/perl-install/install2.pm +++ b/perl-install/install2.pm @@ -43,21 +43,20 @@ my (%installSteps, @orderedInstallSteps); selectLanguage => [ __("Choose your language"), 1, 1, '' ], selectInstallClass => [ __("Select installation class"), 1, 1, '' ], setupSCSI => [ __("Setup SCSI"), 1, 0, '' ], - selectPath => [ __("Choose install or upgrade"), 0, 0, '', "selectInstallClass" ], - selectMouse => [ __("Configure mouse"), 1, 1, 'beginner', "selectPath" ], - selectKeyboard => [ __("Choose your keyboard"), 1, 1, '', "selectPath" ], + selectMouse => [ __("Configure mouse"), 1, 1, 'beginner', "selectInstallClass" ], + selectKeyboard => [ __("Choose your keyboard"), 1, 1, '', "selectInstallClass" ], miscellaneous => [ __("Miscellaneous"), 1, 1, 'beginner' ], - partitionDisks => [ __("Setup filesystems"), 1, 0, '', "selectPath" ], + partitionDisks => [ __("Setup filesystems"), 1, 0, '', "selectInstallClass" ], formatPartitions => [ __("Format partitions"), 1, -1, '', "partitionDisks" ], - choosePackages => [ __("Choose packages to install"), 1, 1, 'beginner', "selectPath" ], - doInstallStep => [ __("Install system"), 1, -1, '', ["formatPartitions", "selectPath"] ], + choosePackages => [ __("Choose packages to install"), 1, 1, 'beginner', "selectInstallClass" ], + doInstallStep => [ __("Install system"), 1, -1, '', ["formatPartitions", "selectInstallClass"] ], configureNetwork => [ __("Configure networking"), 1, 1, 'beginner', "formatPartitions" ], installCrypto => [ __("Cryptographic"), 1, 1, '!expert', "configureNetwork" ], configureTimezone => [ __("Configure timezone"), 1, 1, '', "doInstallStep" ], configureServices => [ __("Configure services"), 1, 1, '!expert', "doInstallStep" ], configurePrinter => [ __("Configure printer"), 1, 0, '', "doInstallStep" ], setRootPassword => [ __("Set root password"), 1, 1, '', "formatPartitions" ], - addUser => [ __("Add a user"), 1, 1, '', "doInstallStep" ], + addUser => [ __("Add a user"), 1, 1, '' ], arch() !~ /alpha/ ? ( createBootdisk => [ __("Create a bootdisk"), 1, 0, '', "doInstallStep" ], ) : (), @@ -68,7 +67,6 @@ arch() !~ /alpha/ ? ( ); for (my $i = 0; $i < @installSteps; $i += 2) { my %h; @h{@installStepsFields} = @{ $installSteps[$i + 1] }; - $h{previous}= $installSteps[$i - 2] if $i >= 2; $h{next} = $installSteps[$i + 2]; $h{entered} = 0; $h{onError} = $installSteps[$i + 2 * $h{onError}]; @@ -259,12 +257,6 @@ sub selectKeyboard { } 'doInstallStep' unless $::g_auto_install; } -#------------------------------------------------------------------------------ -sub selectPath { - $o->selectPath; - install_any::searchAndMount4Upgrade($o) if $o->{isUpgrade}; -} - #------------------------------------------------------------------------------ sub selectInstallClass { $o->selectInstallClass(@install_classes); @@ -275,16 +267,24 @@ sub selectInstallClass { $o->setPackages(\@install_classes); $o->selectPackagesToUpgrade() if $o->{isUpgrade}; } + if ($o->{isUpgrade}) { + @{$o->{orderedSteps}} = map { /selectInstallClass/ ? ($_, "partitionDisks") : $_ } + grep { !/partitionDisks/ } @{$o->{orderedSteps}}; + my $s; foreach (@{$o->{orderedSteps}}) { + $s->{next} = $_; + $s = $o->{steps}{$_}; + } + } } #------------------------------------------------------------------------------ sub partitionDisks { + return install_any::searchAndMount4Upgrade($o) if $o->{isUpgrade}; return $o->{fstab} = [ { device => "loop7", type => 0x83, size => 2048 * cat_('/dos/lnx4win/size.txt'), mntpoint => "/", isFormatted => 1, isMounted => 1 }, { device => "/initrd/dos/lnx4win/swapfile", type => 0x82, mntpoint => "swap", isFormatted => 1, isMounted => 1 }, ] if $o->{lnx4win}; - return if $o->{isUpgrade}; ($o->{hd_dev}) = cat_("/proc/mounts") =~ m|/tmp/(\S+)\s+/tmp/hdimage|; @@ -491,6 +491,7 @@ sub main { require install_steps_auto_install; install_steps_auto_install::errorInStep(); }; + $ENV{SHARE_PATH} ||= "/usr/share"; $::beginner = $::expert = $::g_auto_install = 0; @@ -585,6 +586,8 @@ sub main { if ($@) { log::l("error using auto_install, continuing"); undef $::auto_install; + } else { + log::l("auto install config file loaded successfully"); } } unless ($::auto_install) { diff --git a/perl-install/install_any.pm b/perl-install/install_any.pm index 30fdec6bc..d7e22cce1 100644 --- a/perl-install/install_any.pm +++ b/perl-install/install_any.pm @@ -359,7 +359,7 @@ sub searchAndMount4Upgrade { log::l("found root partition : $root->{device}"); - #- test if the partition has to be fschecked and remounted rw. + #- test if the partition has to be fsck'ed and remounted rw. if ($root->{realMntpoint}) { ($o->{prefix}, $root->{mntpoint}) = ($root->{realMntpoint}, '/'); } else { @@ -723,44 +723,44 @@ sub kdeicons_postinstall($) { foreach () { if (m|^/dev/(\S+)\s+/mnt/cdrom(\d*)\s+|) { my %toreplace = ( device => $1, id => $2 ); - template2userfile($prefix, "/usr/share/cdrom.fsdev.kdelnk.in", "Desktop/Cd-Rom". ($2 && " $2") .".kdelnk", + template2userfile($prefix, "$ENV{SHARE_PATH}/cdrom.fsdev.kdelnk.in", "Desktop/Cd-Rom". ($2 && " $2") .".kdelnk", 1, %toreplace); } elsif (m|^/dev/(\S+)\s+/mnt/zip(\d*)\s+|) { my %toreplace = ( device => $1, id => $2 ); - template2userfile($prefix, "/usr/share/zip.fsdev.kdelnk.in", "Desktop/Zip". ($2 && " $2") .".kdelnk", + template2userfile($prefix, "$ENV{SHARE_PATH}/zip.fsdev.kdelnk.in", "Desktop/Zip". ($2 && " $2") .".kdelnk", 1, %toreplace); } elsif (m|^/dev/(\S+)\s+/mnt/floppy-ls(\d*)\s+|) { my %toreplace = ( device => $1, id => $2 ); - template2userfile($prefix, "/usr/share/floppy.fsdev.kdelnk.in", "Desktop/LS-120". ($2 && " $2") .".kdelnk", + template2userfile($prefix, "$ENV{SHARE_PATH}/floppy.fsdev.kdelnk.in", "Desktop/LS-120". ($2 && " $2") .".kdelnk", 1, %toreplace); } elsif (m|^/dev/(\S+)\s+/mnt/floppy(\d*)\s+|) { my %toreplace = ( device => $1, id => $2 ); - template2userfile($prefix, "/usr/share/floppy.fsdev.kdelnk.in", "Desktop/Floppy". ($2 && " $2") .".kdelnk", + template2userfile($prefix, "$ENV{SHARE_PATH}/floppy.fsdev.kdelnk.in", "Desktop/Floppy". ($2 && " $2") .".kdelnk", 1, %toreplace); } elsif (m|^/mnt/cdrom(\d*)\s+/mnt/cdrom\d*\s+supermount|) { my %toreplace = ( id => $1 ); - template2userfile($prefix, "/usr/share/cdrom.kdelnk.in", "Desktop/Cd-Rom". ($1 && " $1") .".kdelnk", + template2userfile($prefix, "$ENV{SHARE_PATH}/cdrom.kdelnk.in", "Desktop/Cd-Rom". ($1 && " $1") .".kdelnk", 1, %toreplace); } elsif (m|^/mnt/zip(\d*)\s+/mnt/zip\d*\s+supermount|) { my %toreplace = ( id => $1 ); - template2userfile($prefix, "/usr/share/zip.kdelnk.in", "Desktop/Zip". ($1 && " $1") .".kdelnk", + template2userfile($prefix, "$ENV{SHARE_PATH}/zip.kdelnk.in", "Desktop/Zip". ($1 && " $1") .".kdelnk", 1, %toreplace); } elsif (m|^/mnt/floppy-ls(\d*)\s+/mnt/floppy-ls\d*\s+supermount|) { my %toreplace = ( id => $1 ); - template2userfile($prefix, "/usr/share/floppy.kdelnk.in", "Desktop/LS-120". ($1 && " $1") .".kdelnk", + template2userfile($prefix, "$ENV{SHARE_PATH}/floppy.kdelnk.in", "Desktop/LS-120". ($1 && " $1") .".kdelnk", 1, %toreplace); } elsif (m|^/mnt/floppy(\d*)\s+/mnt/floppy\d*\s+supermount|) { my %toreplace = ( id => $1 ); - template2userfile($prefix, "/usr/share/floppy.kdelnk.in", "Desktop/Floppy". ($1 && " $1") .".kdelnk", + template2userfile($prefix, "$ENV{SHARE_PATH}/floppy.kdelnk.in", "Desktop/Floppy". ($1 && " $1") .".kdelnk", 1, %toreplace); } elsif (m|^/dev/(\S+)\s+(/mnt/DOS_\S*)\s+|) { my %toreplace = ( device => $1, id => $1, mntpoint => $2 ); - template2userfile($prefix, "/usr/share/Dos_.kdelnk.in", "Desktop/Dos_$1.kdelnk", 1, %toreplace); + template2userfile($prefix, "$ENV{SHARE_PATH}/Dos_.kdelnk.in", "Desktop/Dos_$1.kdelnk", 1, %toreplace); symlink "hd_umount.xpm", "$prefix/usr/share/icons/hd_unmount.xpm"; symlink "hd_umount.xpm", "$prefix/usr/share/icons/large/hd_unmount.xpm"; } elsif (m|^/dev/(\S+)\s+(\S*)\s+vfat\s+|) { my %toreplace = ( device => $1, id => $1, mntpoint => $2 ); - template2userfile($prefix, "/usr/share/Dos_.kdelnk.in", "Desktop/Dos_$1.kdelnk", 1, %toreplace); + template2userfile($prefix, "$ENV{SHARE_PATH}/Dos_.kdelnk.in", "Desktop/Dos_$1.kdelnk", 1, %toreplace); symlink "hd_umount.xpm", "$prefix/usr/share/icons/hd_unmount.xpm"; symlink "hd_umount.xpm", "$prefix/usr/share/icons/large/hd_unmount.xpm"; } diff --git a/perl-install/install_steps.pm b/perl-install/install_steps.pm index df04546d5..34f18407e 100644 --- a/perl-install/install_steps.pm +++ b/perl-install/install_steps.pm @@ -114,8 +114,7 @@ sub selectInstallClass($@) { } #------------------------------------------------------------------------------ sub setupSCSI { - modules::load("ide-mod", 'prereq', 'options="' . detect_devices::hasUltra66() . '"'); - modules::load_multi(qw(ide-probe ide-disk ide-cd)); + modules::load_ide(); modules::load_thiskind('scsi'); } #------------------------------------------------------------------------------ @@ -429,7 +428,7 @@ sub pppConfig { print F "nameserver $o->{modem}{dns2}\n" if $o->{modem}{dns2}; close F; - install_any::template2userfile($o->{prefix}, "/usr/share/kppprc.in", ".kde/share/config/kppprc", 1, %toreplace); + install_any::template2userfile($o->{prefix}, "$ENV{SHARE_PATH}/kppprc.in", ".kde/share/config/kppprc", 1, %toreplace); miscellaneousNetwork($o); } @@ -762,10 +761,11 @@ sub miscellaneous { $_ .= " mem=$ramsize"; } if (my @l = detect_devices::getIDEBurners() and !/ide-scsi/) { - $_ .= " " . join(" ", map { "$_=ide-scsi" } @l); + $_ .= " " . join(" ", (map { "$_=ide-scsi" } @l), + map { "$_->{device}=ide-floppy" } detect_devices::ide_zips()); } - if (my $m = modules::get_options("ide-mod")) { - $m =~ /options="(.*)"/ and $_ .= " $1" if !/ide.=/; + if (my $m = detect_devices::hasUltra66()) { + $_ .= " $m" if !/ide.=/; } #- keep some given parameters diff --git a/perl-install/install_steps_gtk.pm b/perl-install/install_steps_gtk.pm index bf5d30467..13d83a316 100644 --- a/perl-install/install_steps_gtk.pm +++ b/perl-install/install_steps_gtk.pm @@ -264,6 +264,30 @@ sub selectLanguage { install_theme($o); } +#------------------------------------------------------------------------------ +sub selectInstallClass1 { + my ($o, $verif, $l, $def, $l2, $def2) = @_; + + my $w = my_gtk->new(''); + my ($radio, $focused); + gtkadd($w->{window}, + gtkpack($o->create_box_with_title(_("Which installation class do you want?")), + (my @radios = map { $radio = new Gtk::RadioButton($_, $radio ? $radio : ()); + $radio->set_active($_ eq $def); $radio } @$l), + gtkadd(create_hbox(), + map { my $v = $_; + my $b = new Gtk::Button($_); + $focused = $b if $_ eq $def2; + gtksignal_connect($b, "clicked" => sub { $w->{retval} = $v; Gtk->main_quit }); + } @$l2) + )); + $focused->grab_focus if $focused; + $w->main; + + mapn { $verif->($_[1]) if $_[0]->active } \@radios, $l; + $w->{retval}; +} + #------------------------------------------------------------------------------ sub selectMouse { my ($o, $force) = @_; @@ -368,7 +392,7 @@ installation of each selected groups.") . sub choosePackagesTree { my ($o, $packages, $compss) = @_; - my ($curr, $info_widget, $w_size, $go, $idle); + my ($curr, $info_widget, $w_size, $go, $idle, $flat, $auto_deps); my (%wtree, %ptree); my $w = my_gtk->new(''); @@ -385,20 +409,22 @@ sub choosePackagesTree { gtkadd(gtkset_usize(new Gtk::Frame(_("Info")), 150, 0), createScrolledWindow($info_widget = new Gtk::Text), )), - 0, gtkpack__(new Gtk::HBox(0,0), $w_size = new Gtk::Label('')), + 0, my $l = new Gtk::HBox(0,0), 0, gtkpack(new Gtk::HBox(0,10), $go = gtksignal_connect(new Gtk::Button(_("Install")), "clicked" => sub { $w->{retval} = 1; Gtk->main_quit }), ) )); + gtkpack__($l, $w_size = new Gtk::Label('')); + $l->pack_end(my $toolbar = new Gtk::Toolbar('horizontal', 'icons'), 0, 1, 0); + $l->pack_end(gtksignal_connect(new Gtk::CheckButton(_("Automatic dependencies")), clicked => sub { invbool \$auto_deps }), 0, 1, 0); + $w->{window}->set_usize(map { $_ - 2 * $my_gtk::border - 4 } $::windowwidth, $::windowheight); $go->grab_focus; - $w->show; + $w->{rwindow}->show_all; - $tree->freeze; - my $dir = $::testing && $ENV{SHARE_PATH} || "/usr/share"; - my $pix_base = [ Gtk::Gdk::Pixmap->create_from_xpm($w->{window}->window, $w->{window}->style->bg('normal'), "$dir/rpm-base.xpm") ]; - my $pix_selected = [ Gtk::Gdk::Pixmap->create_from_xpm($w->{window}->window, $w->{window}->style->bg('normal'), "$dir/rpm-selected.xpm") ]; - my $pix_unselect = [ Gtk::Gdk::Pixmap->create_from_xpm($w->{window}->window, $w->{window}->style->bg('normal'), "$dir/rpm-unselected.xpm") ]; + my $pix_base = [ gtkcreate_xpm($w->{window}, "$ENV{SHARE_PATH}/rpm-base.xpm") ]; + my $pix_selected = [ gtkcreate_xpm($w->{window}, "$ENV{SHARE_PATH}/rpm-selected.xpm") ]; + my $pix_unselect = [ gtkcreate_xpm($w->{window}, "$ENV{SHARE_PATH}/rpm-unselected.xpm") ]; my $parent; $parent = sub { if (my $w = $wtree{$_[0]}) { return $w } @@ -417,16 +443,38 @@ sub choosePackagesTree { $tree->node_set_pixmap($node, 1, $pix->[0], $pix->[1]); push @{$ptree{$leaf}}, $node; }; - - my ($root, $leaf); - foreach (sort keys %{$packages->[0]}) { - $add_node->($_, 'all'); - } - foreach (sort @$compss) { - ($root, $leaf) = m|(.*)/(.+)|o or ($root, $leaf) = ('', $_); - $add_node->($leaf, $root); + my $add_nodes = sub { + %ptree = %wtree = (); + + $tree->freeze; + while (1) { $tree->remove_node($tree->node_nth(0) || last) } + + my ($root, $leaf); + if ($flat = $_[0]) { + $add_node->($_, undef) foreach sort keys %{$packages->[0]}; + } else { + foreach (sort @$compss) { + ($root, $leaf) = m|(.*)/(.+)|o or ($root, $leaf) = ('', $_); + $add_node->($leaf, $root); + } + } + $tree->thaw; + }; + $add_nodes->($flat); + + my %toolbar = my @toolbar = + ( + ftout => [ _("Expand Tree") , sub { $tree->expand_recursive(undef) } ], + ftin => [ _("Collapse Tree") , sub { $tree->collapse_recursive(undef) } ], + reload=> [ _("Toggle between flat and group sorted"), sub { $add_nodes->(!$flat) } ], + ); + $toolbar->set_button_relief("none"); + foreach (grep_index { $::i % 2 == 0 } @toolbar) { + gtksignal_connect($toolbar->append_item(undef, $toolbar{$_}[0], undef, gtkxpm($tree, "$ENV{SHARE_PATH}/$_.xpm")), + clicked => $toolbar{$_}[1]); } - $tree->thaw; + $toolbar->set_style("icons"); + my $display_info = sub { my $p = $packages->[0]{$curr} or return gtktext_insert($info_widget, ''); @@ -462,7 +510,7 @@ sub choosePackagesTree { my $p = $packages->[0]{$curr} or return; pkgs::togglePackageSelection($packages, $p, my $l = {}); if (my @l = grep { $l->{$_} } keys %$l) { - @l > 1 and $o->ask_okcancel('', [ _("The following packages are going to be install/removed"), join(", ", sort @l) ], 1) || return; + @l > 1 && !$auto_deps and $o->ask_okcancel('', [ _("The following packages are going to be install/removed"), join(", ", sort @l) ], 1) || return; pkgs::togglePackageSelection($packages, $p); foreach (@l) { my $p = $packages->[0]{$_}; @@ -598,7 +646,7 @@ _("There was an error ordering packages:"), $1, _("Go on anyway?") ], 1) and ret #------------------------------------------------------------------------------ sub load_rc($) { - if (my ($f) = grep { -r $_ } map { "$_/$_[0].rc" } ("share", "/usr/share", dirname(__FILE__))) { + if (my ($f) = grep { -r $_ } map { "$_/$_[0].rc" } ("share", $ENV{SHARE_PATH}, dirname(__FILE__))) { Gtk::Rc->parse($f); foreach (cat_($f)) { if (/style\s+"background"/ .. /^\s*$/) { @@ -782,7 +830,7 @@ sub create_logo_window() { $w->{rwindow}->set_name("logo"); $w->show; my $file = "logo-mandrake.xpm"; - -r $file or $file = "/usr/share/$file"; + -r $file or $file = "$ENV{SHARE_PATH}/$file"; if (-r $file) { my $ww = $w->{window}; my @logo = Gtk::Gdk::Pixmap->create_from_xpm($ww->window, $ww->style->bg('normal'), $file); diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm index d0a7eb06b..2362b3582 100644 --- a/perl-install/install_steps_interactive.pm +++ b/perl-install/install_steps_interactive.pm @@ -84,16 +84,6 @@ sub selectKeyboard($) { } } #------------------------------------------------------------------------------ -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, @parts) = @_; $o->{upgradeRootPartition} = @@ -103,31 +93,45 @@ sub selectRootPartition($@) { #- TODO check choice, then mount partition in $o->{prefix} and autodetect. #- install_steps::selectRootPartition($o); } + +sub selectInstallClass1 { + my ($o, $verif, $l, $def, $l2, $def2) = @_; + $verif->($o->ask_from_list(_("Install Class"), _("Which installation class do you want?"), $l, $def)); + + $o->ask_from_list_(_("Install/Upgrade"), _("Is this an install or an upgrade?"), $l2, $def2); +} + #------------------------------------------------------------------------------ sub selectInstallClass($@) { my ($o, @classes) = @_; - my @c = qw(beginner specific expert); - my %c = ( - beginner => _("Recommended"), - specific => _("Customized"), - expert => _("Expert"), - ); - my $installClass = ${{reverse %c}}{$o->ask_from_list(_("Install Class"), - _("Which installation class do you want?"), - [ map { $c{$_} } @c ], $c{$o->{installClass}} || $c{beginner})}; - $::expert = $installClass eq "expert"; - $::beginner = $installClass eq "beginner"; - - if ($::beginner) { - $o->{installClass} = "normal"; - } else { + my %c = my @c = ( + _("Recommended") => "beginner", + _("Customized") => "specific", + _("Expert") => "expert", + ); + + my $verifInstallClass = sub { + $o->{installClass} = $c{$_[0]}; + $::beginner = $o->{installClass} eq "beginner"; + $::expert = $o->{installClass} eq "expert" && + $o->ask_from_list_('', +_("Are you sure you are an expert? +Hey no kidding, you will be allowed powerfull but dangerous things here."), + [ _("Hurt me plenty"), _("Normal") ]) ne "Normal"; + }; + + $o->{isUpgrade} = $o->selectInstallClass1($verifInstallClass, + first(list2kv(@c)), ${{reverse %c}}{$o->{installClass}}, + [ __("Install"), __("Upgrade") ], $o->{isUpgrade} ? "Upgrade" : "Install") eq "Upgrade"; + + unless ($::beginner || $o->{isUpgrade}) { my %c = ( normal => _("Normal"), developer => _("Development"), server => _("Server"), ); $o->{installClass} = ${{reverse %c}}{$o->ask_from_list(_("Install Class"), - _("What usage do you want?"), + _("Which usage do you want?"), [ values %c ], $c{$o->{installClass}})}; } install_steps::selectInstallClass($o); @@ -156,7 +160,12 @@ sub selectMouse { $o->SUPER::selectMouse; } #------------------------------------------------------------------------------ -sub setupSCSI { setup_thiskind($_[0], 'scsi', $_[1], $_[2]) } +sub setupSCSI { + my ($o) = @_; + { my $w = $o->wait_message(_("IDE"), _("Configuring IDE")); + modules::load_ide() } + setup_thiskind($_[0], 'scsi', $_[1], $_[2]); +} sub ask_mntpoint_s { my ($o, $fstab) = @_; @@ -283,7 +292,7 @@ You can go on anyway, but be warned that you won't get all packages", $max_size ($o->{packages_}{ind}) = pkgs::setSelectedFromCompssList($o->{compssListLevels}, $packages, 1, $size2install, $o->{installClass}); } - $o->choosePackagesTree($packages, $compss) if $::expert; + $o->choosePackagesTree($packages, $compss) if $o->{compssUsersChoice}{Individual} || $::expert && $o->{isUpgrade}; } sub chooseSizeToInstall { @@ -297,8 +306,8 @@ sub chooseGroups { $o->ask_many_from_list_ref('', _("Package Group Selection"), - [ @$compssUsersSorted, "Miscellaneous" ], - [ map { \$o->{compssUsersChoice}{$_} } @$compssUsersSorted, "Miscellaneous" ] + [ @$compssUsersSorted, _("Miscellaneous"), _("Individual package selection") ], + [ map { \$o->{compssUsersChoice}{$_} } @$compssUsersSorted, "Miscellaneous", "Individual" ] ) or goto &chooseGroups unless $::beginner; unless ($o->{compssUsersChoice}{Miscellaneous}) { @@ -594,7 +603,11 @@ sub setRootPassword($) { $::beginner ? () : "setRootPasswordNIS"); $o->ask_from_entries_refH([_("Set root password"), _("Ok"), $o->{security} > 2 ? () : _("No password")], - _("Set root password"), [ + [ _("Set root password"), + $::beginner ? "\n" . +_("(a user ``mandrake'' with password ``mandrake'' has been automatically added. +Do not use the user ``root'', except in special occasions.") : () + ], [ _("Password") => { val => \$sup->{password}, hidden => 1 }, _("Password (again)") => { val => \$sup->{password2}, hidden => 1 }, $o->{installClass} eq "server" || $::expert ? ( @@ -628,14 +641,14 @@ _("Use NIS") => { val => \$o->{authentication}{NIS}, type => 'bool', text => _(" #------------------------------------------------------------------------------ sub addUser($) { my ($o, $clicked) = @_; - my $u = $o->{user} ||= $o->{security} < 1 ? { name => "mandrake", realname => "default" } : {}; + my $u = $o->{user} ||= $o->{security} < 1 ? { name => "mandrake", passwd => "mandrake", realname => "default" } : {}; $u->{password2} ||= $u->{password} ||= ""; $u->{shell} ||= "/bin/bash"; $u->{icon} ||= translate('default'); my @fields = qw(realname name password password2); my @shells = install_any::shells($o); - if ($o->{security} < 2 && !$clicked || $o->ask_from_entries_refH( + if (($o->{security} >= 2 || $clicked) && $o->ask_from_entries_refH( [ _("Add user"), _("Accept user"), $o->{security} >= 4 && !@{$o->{users}} ? () : _("Done") ], _("Enter a user\n%s", $o->{users} ? _("(already added %s)", join(", ", map { $_->{realname} || $_->{name} } @{$o->{users}})) : ''), [ @@ -667,7 +680,7 @@ sub addUser($) { )) { push @{$o->{users}}, $o->{user}; $o->{user} = {}; - goto &addUser unless $o->{security} < 2 && !$clicked; #- INFO_TO_DEL: bad security level may cause deadlocks... + goto &addUser; } install_steps::addUser($o); } @@ -950,6 +963,8 @@ sub setupXfree { sub generateAutoInstFloppy($) { my ($o) = @_; + return unless $::expert && $::corporate; + my ($floppy) = detect_devices::floppies(); $o->ask_yesorno('', @@ -1089,12 +1104,6 @@ sub setup_thiskind { my @l; my $allow_probe = !$::expert || $o->ask_yesorno('', _("Try to find PCI devices?"), 1); - { - my $w = $o->wait_message(_("IDE"), _("Configuring IDE")); - modules::load("ide-mod", 'prereq', $allow_probe && 'options="' . detect_devices::hasUltra66() . '"'); - modules::load_multi(qw(ide-probe ide-disk ide-cd)); - } - if ($allow_probe && $type =~ /scsi/i) { #- hey, we're allowed to pci probe :) let's do a lot of probing! require pci_probing::main; diff --git a/perl-install/keyboard.pm b/perl-install/keyboard.pm index 7cb5418d7..5e905aa2c 100644 --- a/perl-install/keyboard.pm +++ b/perl-install/keyboard.pm @@ -180,6 +180,7 @@ sub lang2keyboard($) { sub load($) { my ($keymap) = @_; + return if $::testing; my ($magic, @keymaps) = unpack "I i" . c::MAX_NR_KEYMAPS() . "a*", $keymap; $keymap = pop @keymaps; @@ -209,9 +210,9 @@ sub load($) { sub xmodmap_file { my ($keyboard) = @_; - my $f = "/usr/share/xmodmap/xmodmap.$keyboard"; + my $f = "$ENV{SHARE_PATH}/xmodmap/xmodmap.$keyboard"; if (! -e $f) { - run_program::run("extract_archive", "/usr/share/xmodmap.cz2", '/tmp', "xmodmap.$keyboard"); + run_program::run("extract_archive", "$ENV{SHARE_PATH}/xmodmap.cz2", '/tmp', "xmodmap.$keyboard"); $f = "/tmp/xmodmap.$keyboard"; } -e $f && $f; @@ -222,11 +223,11 @@ sub setup($) { my $o = $keyboards{$keyboard} or return; log::l("loading keymap $o->[1]"); - if (-e (my $f = "/usr/share/keymaps/$o->[1].kmap")) { + if (-e (my $f = "$ENV{SHARE_PATH}/keymaps/$o->[1].kmap")) { load(cat_($f)); } else { local *F; - open F, "extract_archive /usr/share/keymaps.cz2 '' $o->[1].kmap |"; + open F, "extract_archive $ENV{SHARE_PATH}/keymaps.cz2 '' $o->[1].kmap |"; local $/ = undef; eval { load() }; } diff --git a/perl-install/lang.pm b/perl-install/lang.pm index 298225425..e7199a2f0 100644 --- a/perl-install/lang.pm +++ b/perl-install/lang.pm @@ -208,12 +208,12 @@ sub set { #- using a compressed cpio archive is nighmare to extract all files. #- reset locale environment variable to avoid any warnings by perl, #- so installation of new locale is done with empty locale ... - unless (-e "/usr/share/locale/".$languages{$lang}[2]) { + unless (-e "$ENV{SHARE_PATH}/locale/".$languages{$lang}[2]) { @ENV{qw(LANG LC_ALL LANGUAGE LINGUAS)} = (); - eval { commands::rm("-r", "/usr/share/locale") }; + eval { commands::rm("-r", "$ENV{SHARE_PATH}/locale") }; require 'run_program.pm'; - run_program::run("extract_archive", "/usr/share/locale.cz2", '/usr/share/locale', $languages{$lang}[2]); + run_program::run("extract_archive", "$ENV{SHARE_PATH}/locale.cz2", '$ENV{SHARE_PATH}/locale', $languages{$lang}[2]); } $ENV{LC_ALL} = $lang; @@ -330,7 +330,7 @@ sub load_po($) { #- } #- #- # text mode font -#- log::l("loading font /usr/share/consolefonts/$fontFile"); +#- log::l("loading font $ENV{SHARE_PATH}/consolefonts/$fontFile"); #- #c::loadFont("/tmp/$fontFile") or log::l("error in loadFont: one of PIO_FONT PIO_UNIMAPCLR PIO_UNIMAP PIO_UNISCRNMAP failed: $!"); #- #print STDERR "\033(K"; #- diff --git a/perl-install/modparm.pm b/perl-install/modparm.pm index 067c2477e..46dcb23b7 100644 --- a/perl-install/modparm.pm +++ b/perl-install/modparm.pm @@ -15,7 +15,7 @@ use log; #- Functions #-###################################################################################### sub read_modparm_file { - my $file = -e "modparm.lst" ? "modparm.lst" : "/usr/share/modparm.lst"; + my $file = -e "modparm.lst" ? "modparm.lst" : "$ENV{SHARE_PATH}/modparm.lst"; my @line; my %modparm_hash; diff --git a/perl-install/modules.pm b/perl-install/modules.pm index fc02afec3..b98230b1e 100644 --- a/perl-install/modules.pm +++ b/perl-install/modules.pm @@ -134,6 +134,7 @@ arch() =~ /^sparc/ ? ( "qlogicisp" => "Qlogic ISP", "sym53c8xx" => "Symbios 53c8xx", "scsi_mod" => "scsi_mod", + "sd_mod" => "sd_mod", "ide-mod" => "ide-mod", "ide-probe" => "ide-probe", }], @@ -485,7 +486,7 @@ sub write_conf { my @l = sort grep { $conf{$_}{alias} && /scsi_hostadapter/ } keys %conf; add_alias('block-major-11', 'scsi_hostadapter') if @l; - push @l, "ide-floppy" if detect_devices::zips(); + push @l, "ide-floppy" if detect_devices::ide_zips(); $conf{supermount}{"post-install"} = join " ; ", map { "modprobe $_" } @l if @l; local *F; @@ -566,3 +567,8 @@ sub get_pcmcia_devices($$) { } @devs; } + +sub load_ide { + load("ide-mod", 'prereq', 'options="' . detect_devices::hasUltra66() . '"'); + load_multi(qw(ide-probe ide-disk ide-cd)); +} diff --git a/perl-install/my_gtk.pm b/perl-install/my_gtk.pm index 40f82f4cd..491680271 100644 --- a/perl-install/my_gtk.pm +++ b/perl-install/my_gtk.pm @@ -10,7 +10,7 @@ use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK $border @grabbed); @ISA = qw(Exporter); %EXPORT_TAGS = ( helpers => [ qw(create_okcancel createScrolledWindow create_menu create_notebook create_packtable create_hbox create_vbox create_adjustment create_box_with_title create_treeitem) ], - wrappers => [ qw(gtksignal_connect gtkpack gtkpack_ gtkpack__ gtkappend gtkadd gtktext_insert gtkset_usize gtkset_justify gtkset_active gtkshow gtkdestroy gtkset_mousecursor gtkset_background gtkset_default_fontset) ], + wrappers => [ qw(gtksignal_connect gtkpack gtkpack_ gtkpack__ gtkappend gtkadd gtktext_insert gtkset_usize gtkset_justify gtkset_active gtkshow gtkdestroy gtkset_mousecursor gtkset_background gtkset_default_fontset gtkxpm gtkcreate_xpm) ], ask => [ qw(ask_warn ask_okcancel ask_yesorno ask_from_entry ask_from_list ask_file) ], ); $EXPORT_TAGS{all} = [ map { @$_ } values %EXPORT_TAGS ]; @@ -180,6 +180,9 @@ sub gtkset_default_fontset($) { Gtk::Widget->set_default_style($style); } +sub gtkcreate_xpm { my $w = shift; Gtk::Gdk::Pixmap->create_from_xpm($w->window, $w->style->bg('normal'), @_) } +sub xpm_d { my $w = shift; Gtk::Gdk::Pixmap->create_from_xpm_d($w->window, undef, @_) } +sub gtkxpm { new Gtk::Pixmap(gtkcreate_xpm(@_)) } #-############################################################################### #- createXXX functions @@ -450,7 +453,7 @@ sub _ask_from_entry($$@) { gtksignal_connect($entry, 'activate' => $f), ($o->{hide_buttons} ? () : create_okcancel($o))), ); - $entry->grab_focus(); + $entry->grab_focus; } sub _ask_from_list { @@ -536,7 +539,7 @@ sub _ask_warn($@) { gtksignal_connect(my $w = new Gtk::Button(_("Ok")), "clicked" => sub { Gtk->main_quit }), ), ); - $w->grab_focus(); + $w->grab_focus; } sub _ask_okcancel($@) { @@ -548,7 +551,7 @@ sub _ask_okcancel($@) { create_okcancel($o, $ok, $cancel), ) ); - $o->{ok}->grab_focus(); + $o->{ok}->grab_focus; } diff --git a/perl-install/share/keyboards.tar.bz2 b/perl-install/share/keyboards.tar.bz2 index 78085e860..3ac57d229 100644 Binary files a/perl-install/share/keyboards.tar.bz2 and b/perl-install/share/keyboards.tar.bz2 differ -- cgit v1.2.1