diff options
-rw-r--r-- | perl-install/ChangeLog | 11 | ||||
-rw-r--r-- | perl-install/c/stuff.xs.pm | 3 | ||||
-rw-r--r-- | perl-install/install2.pm | 4 | ||||
-rw-r--r-- | perl-install/install_steps_auto_install.pm | 4 | ||||
-rw-r--r-- | perl-install/install_steps_gtk.pm | 3 | ||||
-rw-r--r-- | perl-install/modules.pm | 13 | ||||
-rw-r--r-- | perl-install/partition_table_raw.pm | 7 |
7 files changed, 35 insertions, 10 deletions
diff --git a/perl-install/ChangeLog b/perl-install/ChangeLog index d0f571192..aa769c760 100644 --- a/perl-install/ChangeLog +++ b/perl-install/ChangeLog @@ -1,5 +1,16 @@ 2000-02-28 Pixel <pixel@mandrakesoft.com> + * partition_table_raw.pm (get_geometry): when the + HDIO_GET_IDENTITY fails, defaults to what GETGEO gave + + * install2.pm (main): use modules::load_multi to increase boot + start time + + * modules.pm (load_multi): added this function for loading many + modules at once. + + * install_steps_gtk.pm (new): increase time before timeout + * detect_devices.pm (cdroms): change the device associated with ide-burners (hdX -> scdX). Problem is how to know the X in scdX :( diff --git a/perl-install/c/stuff.xs.pm b/perl-install/c/stuff.xs.pm index fbdc8bf09..d4a272a53 100644 --- a/perl-install/c/stuff.xs.pm +++ b/perl-install/c/stuff.xs.pm @@ -102,8 +102,7 @@ total_sectors(fd) CODE: { struct hd_driveid s; - ioctl(fd, HDIO_GET_IDENTITY, &s); - RETVAL = s.lba_capacity; + RETVAL = ioctl(fd, HDIO_GET_IDENTITY, &s) == 0 ? s.lba_capacity : 0; } OUTPUT: RETVAL diff --git a/perl-install/install2.pm b/perl-install/install2.pm index 8f8666f02..a9e22535b 100644 --- a/perl-install/install2.pm +++ b/perl-install/install2.pm @@ -619,11 +619,11 @@ sub main { } modules::unload($_) foreach qw(vfat msdos fat); - modules::load_deps("/modules/modules.dep"); + modules::load_deps(($::testing ? ".." : "") . "/modules/modules.dep"); modules::read_stage1_conf("/tmp/conf.modules"); modules::read_already_loaded(); - eval { modules::load($_, 'prereq') } foreach qw(ide-probe ide-disk ide-cd sd_mod af_packet); + modules::load_multi(qw(ide-probe ide-disk ide-cd sd_mod af_packet)); install_any::lnx4win_preinstall() if $o->{lnx4win}; #-the main cycle diff --git a/perl-install/install_steps_auto_install.pm b/perl-install/install_steps_auto_install.pm index b6a17f2f9..8367af3b6 100644 --- a/perl-install/install_steps_auto_install.pm +++ b/perl-install/install_steps_auto_install.pm @@ -26,14 +26,14 @@ sub ask_warn { sub errorInStep { print "error :(\n"; print "switch to console f2 for a shell\n"; - print "press to return to reboot\n"; + print "Press <Enter> to reboot\n"; <STDIN>; c::_exit(0); } sub exitInstall { print "Auto installation complete\n"; - print "Press <enter> to reboot\n"; + print "Press <Enter> to reboot\n"; <STDIN>; } diff --git a/perl-install/install_steps_gtk.pm b/perl-install/install_steps_gtk.pm index 3e05193ab..c04c07214 100644 --- a/perl-install/install_steps_gtk.pm +++ b/perl-install/install_steps_gtk.pm @@ -178,11 +178,12 @@ sub new($$) { unless (fork) { exec $_[0], "-dpms","-s" ,"240", "-allowMouseOpenFail", "-xf86config", $f or exit 1; } - foreach (1..15) { + foreach (1..60) { sleep 1; return 0 if !$ok; return 1 if c::Xtest($ENV{DISPLAY}); } + log::l("Timeout!!"); 0; }; my @servers = qw(FBDev VGA16); #-) diff --git a/perl-install/modules.pm b/perl-install/modules.pm index c82cee6a1..734523fcb 100644 --- a/perl-install/modules.pm +++ b/perl-install/modules.pm @@ -379,6 +379,19 @@ sub load { } $conf{$name}{options} = join " ", @options if @options; } +sub load_multi { + my $f; $f = sub { map { $f->(@{$deps{$_}}), $_ } @_ }; + my %l; my @l = + grep { !$conf{$_}{loaded} } + grep { my $o = $l{$_}; $l{$_} = 1; !$o } + $f->(@_); + + $::testing and log::l("i would install modules @l"), return; + + run_program::run("extract_archive", "/lib/modules.cz2", "/tmp", map { "$_.o" } @l); + run_program::run(["insmod_", "insmod"], "/tmp/$_.o") and $conf{$_}{loaded} = 1 foreach @l; + unlink map { "/tmp/$_.o" } @l; +} sub unload($;$) { my ($m, $remove_alias) = @_; diff --git a/perl-install/partition_table_raw.pm b/perl-install/partition_table_raw.pm index a27947bdd..af73da1d1 100644 --- a/perl-install/partition_table_raw.pm +++ b/perl-install/partition_table_raw.pm @@ -76,10 +76,11 @@ sub get_geometry($) { my %geom; @geom{qw(heads sectors cylinders start)} = unpack "CCSL", $g; #- $geom{cylinders} is no good (only a ushort, that means less than 2^16 => at best 512MB) - my $total = c::total_sectors(fileno F); - $geom{totalcylinders} = $total / $geom{heads} * $geom{sectors}; + if (my $total = c::total_sectors(fileno F)) { + $geom{cylinders} = $total / $geom{heads} / $geom{sectors}; + } - { geom => \%geom, totalsectors => $total }; + { geom => \%geom, totalsectors => $geom{heads} * $geom{sectors} * $geom{cylinders} }; } sub openit($$;$) { sysopen $_[1], $_[0]{file}, $_[2] || 0; } |