aboutsummaryrefslogtreecommitdiffstats
path: root/Rpmdrake
diff options
context:
space:
mode:
authorThierry Vignaud <tv@mandriva.org>2007-03-23 06:06:30 +0000
committerThierry Vignaud <tv@mandriva.org>2007-03-23 06:06:30 +0000
commit48b8d0e85b7d7f743c4b4d8643298ef5754d8bac (patch)
tree566db9f84aad6cd7cd06ab0947a846c293b95955 /Rpmdrake
parentb8d0897b8f058f99aebaa5d4ac2ec8040ae7ce20 (diff)
downloadrpmdrake-48b8d0e85b7d7f743c4b4d8643298ef5754d8bac.tar
rpmdrake-48b8d0e85b7d7f743c4b4d8643298ef5754d8bac.tar.gz
rpmdrake-48b8d0e85b7d7f743c4b4d8643298ef5754d8bac.tar.bz2
rpmdrake-48b8d0e85b7d7f743c4b4d8643298ef5754d8bac.tar.xz
rpmdrake-48b8d0e85b7d7f743c4b4d8643298ef5754d8bac.zip
(perform_installation) fix installing more than selection in MandrivaUpdate
Diffstat (limited to 'Rpmdrake')
-rwxr-xr-xRpmdrake/pkg.pm25
1 files changed, 14 insertions, 11 deletions
diff --git a/Rpmdrake/pkg.pm b/Rpmdrake/pkg.pm
index dd2dd478..334a7ccd 100755
--- a/Rpmdrake/pkg.pm
+++ b/Rpmdrake/pkg.pm
@@ -280,8 +280,6 @@ Then, restart %s.", $rpmdrake::myname_update)), myexit(-1);
# find out installed packages:
- #$urpm = urpm->new;
- #$urpm->read_config;
my $level = 0.05;
my $total = @{$urpm->{depslist}};
Rpmdrake::gurpm::label(N("Please wait, listing base packages..."));
@@ -352,7 +350,6 @@ Then, restart %s.", $rpmdrake::myname_update)), myexit(-1);
# find out availlable packages:
- #$urpm = urpm->new;
$urpm->{state} = {};
my (@installable_pkgs, @updates);
@@ -369,9 +366,17 @@ Then, restart %s.", $rpmdrake::myname_update)), myexit(-1);
$state,
$requested,
);
- my @requested = $probe_only_for_updates ?
- sort map { urpm_name($_) } $urpm->resolve_requested($db, $state, $requested, callback_choices => \&Rpmdrake::gui::callback_choices)
- : sort map { urpm_name($_) } @{$urpm->{depslist}}[keys %$requested];
+
+ # list of updates (including those matching /etc/urpmi/skip.list):
+ my @requested = sort map { urpm_name($_) } @{$urpm->{depslist}}[keys %$requested];
+ # list of pure updates (w/o those matching /etc/urpmi/skip.list but with their deps):
+ my @requested_strict = $probe_only_for_updates ?
+ sort map {
+ urpm_name($_);
+ } $urpm->resolve_requested($db, $state, $requested, callback_choices => \&Rpmdrake::gui::callback_choices)
+ : ();
+ # list updates including skiped ones + their deps in MandrivaUpdate:
+ push @requested, difference2(\@requested_strict, \@requested) if $probe_only_for_updates;
if (!$probe_only_for_updates) {
$urpm->compute_installed_flags($db); # TODO/FIXME: not for updates
@@ -397,8 +402,8 @@ Then, restart %s.", $rpmdrake::myname_update)), myexit(-1);
$pkg_sel{$n} || $pkg_nosel{$n} or next;
$pkg_sel{$n} and $selected = 1;
} else {
- # selecting updates by default:
- $selected = 1 if $probe_only_for_updates;
+ # selecting updates by default but skipped ones (MandrivaUpdate only):
+ $selected = member($name, @requested_strict);
}
push @updates, $name;
} else {
@@ -470,12 +475,10 @@ sub perform_installation { #- (partially) duplicated from /usr/sbin/urpmi :-(
my $lock = urpm::lock::urpmi_db($urpm);
my $rpm_lock = urpm::lock::rpm_db($urpm, 'exclusive');
- my $state = $urpm->{rpmdrake_state};
+ my $state = $probe_only_for_updates ? { } : $urpm->{rpmdrake_state};
# select packages to install for !update mode:
- if (!$probe_only_for_updates) {
$urpm->resolve_requested(open_db(), $state, { map { $_->id => undef } grep { $_->flag_selected } @{$urpm->{depslist}} }, callback_choices => \&Rpmdrake::gui::callback_choices);
- }
my ($local_sources, $list) = urpm::get_pkgs::selected2list($urpm,
$state->{selected},