summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2007-10-15 16:44:49 +0000
committerPascal Rigaux <pixel@mandriva.com>2007-10-15 16:44:49 +0000
commitce297706b1db03b49e57ce55d01e1fcef5e20e10 (patch)
tree325391f61aba833b131f12f321f3ca4c77998e31
parent35d1a23c06c648bbaac08b83ab4a579ecbcc401b (diff)
downloaddrakx-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)
-rw-r--r--perl-install/install/NEWS3
-rw-r--r--perl-install/install/pkgs.pm21
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-(.*)/) {