diff options
Diffstat (limited to 'perl-install/install/pkgs.pm')
| -rw-r--r-- | perl-install/install/pkgs.pm | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/perl-install/install/pkgs.pm b/perl-install/install/pkgs.pm index b01ae5165..b612b5282 100644 --- a/perl-install/install/pkgs.pm +++ b/perl-install/install/pkgs.pm @@ -1,4 +1,4 @@ -package install::pkgs; # $Id: pkgs.pm 267288 2010-04-02 14:49:40Z pterjan $ +package install::pkgs; use strict; use feature 'state'; @@ -158,7 +158,6 @@ sub _bestKernel_extensions { $::o->{kernel_extension} ? $::o->{kernel_extension} : $o_match_all_hardware ? (arch() =~ /i.86/ ? '-desktop586' : '-desktop') : - detect_devices::is_xbox() ? '-xbox' : detect_devices::is_i586() ? '-desktop586' : _is_kernelServer_needed() ? '-server' : '-desktop'; @@ -190,7 +189,7 @@ sub packagesToInstall { log::l("examining packagesToInstall of medium $_->{name}"); push @packages, grep { $_->flag_selected } install::media::packagesOfMedium($packages, $_); } - log::l("found " . scalar(@packages) . " packages to install"); + log::l("found " . scalar(@packages) . " packages to install: " . formatList(5, map { $_->fullname } @packages)); @packages; } @@ -288,17 +287,17 @@ sub select_by_package_names_or_die { } } -my @suggested_package_ids; +my @recommended_package_ids; sub _resolve_requested_and_check { my ($packages, $state, $requested) = @_; my @l = $packages->resolve_requested($packages->{rpmdb}, $state, $requested, - callback_choices => \&packageCallbackChoices, no_suggests => $::o->{no_suggests}); + callback_choices => \&packageCallbackChoices, no_recommends => $::o->{no_recommends}); - #- keep track of suggested packages so that theys could be unselected if the "no suggests" option is choosen later: + #- keep track of recommended packages so that theys could be unselected if the "no recommends" option is choosen later: if (!is_empty_hash_ref($state->{selected})) { - my @new_ids = map { $packages->{depslist}[$_]->id } grep { $state->{selected}{$_}{suggested} } keys $state->{selected}; - @suggested_package_ids = uniq(@suggested_package_ids, @new_ids); + my @new_ids = map { $packages->{depslist}[$_]->id } grep { $state->{selected}{$_}{recommended} } keys $state->{selected}; + @recommended_package_ids = uniq(@recommended_package_ids, @new_ids); } my $error; @@ -352,9 +351,9 @@ sub unselectAllPackages { log::l("unselecting all packages..."); foreach (@{$packages->{depslist}}) { my $to_select = $_->flag_base || $_->flag_installed && $_->flag_selected; - # unselect suggested packages if minimal install: - if ($::o->{no_suggests} && member($_->id, @suggested_package_ids)) { - log::l("unselecting suggested package " . $_->name); + # unselect recommended packages if minimal install: + if ($::o->{no_recommends} && member($_->id, @recommended_package_ids)) { + log::l("unselecting recommended package " . $_->name); undef $to_select; } if ($to_select) { @@ -375,6 +374,7 @@ sub unselectAllPackages { my (@errors, $push_errors); sub start_pushing_error() { $push_errors = 1; + undef @errors; } sub popup_errors() { @@ -595,7 +595,7 @@ sub computeGroupSize { $newSelection{$id} = undef; my $pkg = $packages->{depslist}[$id]; - my @deps = map { [ $_, keys %{$packages->{provides}{$_} || {}} ] } $pkg->requires_nosense, $pkg->suggests; + my @deps = map { [ $_, keys %{$packages->{provides}{$_} || {}} ] } $pkg->requires_nosense, $pkg->recommends_nosense; foreach (sort { @$a <=> @$b } @deps) { #- sort on number of provides (it helps choosing "b" in: "a" requires both "b" and virtual={"b","c"}) my ($virtual, @choices) = @$_; if (@choices <= 1) { @@ -792,6 +792,8 @@ sub install { log::l("install::pkgs::install the following: ", join(" ", map { $_->name } values %packages)); URPM::read_config_files(); + # force loading libnss* + getgrent(); URPM::add_macro(join(' ', '__dbi_cdb', URPM::expand('%__dbi_cdb'), 'nofsync')); my $LOG = _openInstallLog(); @@ -855,6 +857,8 @@ sub _install_raw { # bug present in 2009.0, 2008.1, 2008.0, ... (probably since r11141 aka when switching to rpm-4.2 in URPM-0.83) local $packages->{options}{script_fd} = fileno $LOG; + start_pushing_error(); + log::l("rpm transactions start"); my $exit_code = urpm::main_loop::run($packages, $packages->{state}, undef, undef, { @@ -908,6 +912,11 @@ sub _install_raw { N("Installation of packages failed:") . "\n\n" . join("\n", @$errors)); } }, + completed => sub { + if (!$packages->{options}{auto}) { + popup_errors(); + } + }, message => sub { my ($title, $message) = @_; log::l($message); |
