diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2007-10-15 16:44:49 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2007-10-15 16:44:49 +0000 |
commit | ce297706b1db03b49e57ce55d01e1fcef5e20e10 (patch) | |
tree | 325391f61aba833b131f12f321f3ca4c77998e31 /perl-install | |
parent | 35d1a23c06c648bbaac08b83ab4a579ecbcc401b (diff) | |
download | drakx-ce297706b1db03b49e57ce55d01e1fcef5e20e10.tar drakx-ce297706b1db03b49e57ce55d01e1fcef5e20e10.tar.gz drakx-ce297706b1db03b49e57ce55d01e1fcef5e20e10.tar.bz2 drakx-ce297706b1db03b49e57ce55d01e1fcef5e20e10.tar.xz drakx-ce297706b1db03b49e57ce55d01e1fcef5e20e10.zip |
- in case of ftp/http media, we select basesystem before doing
bestKernelPackage so we must ensure the choice callback selects the good
kernel (reported by Thomas Spuhler on cooker mailing list)
Diffstat (limited to 'perl-install')
-rw-r--r-- | perl-install/install/NEWS | 3 | ||||
-rw-r--r-- | perl-install/install/pkgs.pm | 21 |
2 files changed, 18 insertions, 6 deletions
diff --git a/perl-install/install/NEWS b/perl-install/install/NEWS index 211cd3ae6..ec7d5c471 100644 --- a/perl-install/install/NEWS +++ b/perl-install/install/NEWS @@ -1,3 +1,6 @@ +- in case of ftp/http media, we select basesystem before doing + bestKernelPackage so we must ensure the choice callback selects the good + kernel (reported by Thomas Spuhler on cooker mailing list) - do propose "Suisse" after selecting french language (#34675) - use time() to know when to timeout (when launching installer X server) since the loop may be slower than 1 second (xf86misc::main::Xtest takes time diff --git a/perl-install/install/pkgs.pm b/perl-install/install/pkgs.pm index 5bde50be0..4c96b681a 100644 --- a/perl-install/install/pkgs.pm +++ b/perl-install/install/pkgs.pm @@ -128,17 +128,21 @@ sub packageByName { $best; } -sub bestKernelPackage { - my ($packages, $o_match_all_hardware) = @_; +sub bestKernel_extensions { + my ($o_match_all_hardware) = @_; - my @preferred_exts = - $o_match_all_hardware ? (arch() =~ /i.86/ ? '-desktop586' : '-desktop') : + $o_match_all_hardware ? (arch() =~ /i.86/ ? '-desktop586' : '-desktop') : detect_devices::is_xbox() ? '-xbox' : detect_devices::is_i586() ? '-desktop586' : detect_devices::isLaptop() ? '-laptop' : detect_devices::dmi_detect_memory() > 3.8 * 1024 ? '-server' : '-desktop'; +} +sub bestKernelPackage { + my ($packages, $o_match_all_hardware) = @_; + + my @preferred_exts = bestKernel_extensions($o_match_all_hardware); my @kernels = grep { $_ } map { packageByName($packages, "kernel$_-latest") } @preferred_exts; log::l("bestKernelPackage (" . join(':', @preferred_exts) . "): " . join(' ', map { $_->name } @kernels) . (@kernels > 1 ? ' (choosing the first)' : '')); @@ -177,7 +181,7 @@ sub packageCallbackChoices { if ($prefered && @$prefered) { @$prefered; - } elsif (my @l = packageCallbackChoices_($urpm, $choices)) { + } elsif (my @l = packageCallbackChoices_($urpm, $choices, $virtual_pkg_name)) { @l; } else { log::l("packageCallbackChoices: default choice from " . join(",", map { $_->name } @$choices) . " for $virtual_pkg_name"); @@ -186,11 +190,16 @@ sub packageCallbackChoices { } sub packageCallbackChoices_ { - my ($urpm, $choices) = @_; + my ($urpm, $choices, $virtual_pkg_name) = @_; my ($prefer, $_other) = urpm::select::get_preferred($urpm, $choices, ''); if (@$prefer) { @$prefer; + } elsif ($virtual_pkg_name eq 'kernel') { + my $re = join('|', map { "kernel\Q$_-2" } bestKernel_extensions($o_match_all_hardware)); + my @l = grep { $_->name =~ $re } @$choices; + log::l("packageCallbackChoices: kernel chosen ", join(",", map { $_->name } @l), " in ", join(",", map { $_->name } @$choices)); + @l; } elsif ($choices->[0]->name =~ /^kernel-(.*source-|.*-devel-)/) { my @l = grep { if ($_->name =~ /^kernel-.*source-stripped-(.*)/) { |