From 5b24d6f61e17bffc2c9283a65100a29d6a05e586 Mon Sep 17 00:00:00 2001 From: Angelo Naselli Date: Thu, 15 May 2014 16:32:17 +0200 Subject: package list contains only latest updates, not all, so filters and backport list have been managed accordingly (fix mga#12766) --- Rpmdrake/pkg.pm | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) (limited to 'Rpmdrake/pkg.pm') diff --git a/Rpmdrake/pkg.pm b/Rpmdrake/pkg.pm index e9229b86..72d6bfaf 100644 --- a/Rpmdrake/pkg.pm +++ b/Rpmdrake/pkg.pm @@ -518,21 +518,18 @@ sub get_pkgs { $urpm->{rpmdrake_state} = $state; #- Don't forget it $gurpm->progress($level = 0.7); + #anaselli NOTE $all_pkgs contains only latest updates, not all of them + # but that has some issues on backports, and the old management, + # such as filters for instance, let's set backport first then, and + # only if they are enabled my %l; reset_pbar_count(1); - foreach my $pkg (@{$urpm->{depslist}}) { - update_pbar($gurpm); - $pkg->flag_upgrade or next; - my $key = $pkg->name . $pkg->arch; - $l{$key} = $pkg if !$l{$key} || $l{$key}->compare($pkg); - } - my @installable_pkgs = map { my $n = $_->fullname; $all_pkgs{$n} = { pkg => $_ }; $n } values %l; - undef %l; - my @inactive_backports; my @active_backports; my @backport_medias = get_backport_media($urpm); + my @depslist = @{$urpm->{depslist}}; + my $removed = 0; foreach my $medium (@backport_medias) { update_pbar($gurpm); @@ -549,9 +546,30 @@ sub get_pkgs { $pkg->flag_upgrade or next; my $name = $pkg->fullname; push @$backports, $name; - $all_pkgs{$name} = { pkg => $pkg, is_backport => 1 }; + if (!$medium->{searchmedia}) { + # active_backports + my $key = $pkg->name . $pkg->arch; + if (!$l{$key} || ($l{$key}->fullname lt $pkg->fullname)) { + $l{$key} = $pkg ; + #anaselli letting the is_backport_flag + $all_pkgs{$name} = { pkg => $pkg, is_backport => 1 }; + } + } + # removing from list so that only updates will be added later + splice @depslist, $pkg_id-$removed, 1; + $removed++; } } + foreach my $pkg (@depslist) { + update_pbar($gurpm); + $pkg->flag_upgrade or next; + my $key = $pkg->name . $pkg->arch; + my $name = $pkg->fullname; + $l{$key} = $pkg if !$l{$key} || ($l{$key}->fullname lt $pkg->fullname); + } + my @installable_pkgs = map { my $n = $_->fullname; $all_pkgs{$n} = { pkg => $_ }; $n } values %l; + undef %l; + my @updates = @requested; # selecting updates by default but skipped ones (MageiaUpdate only): foreach (@requested_strict) { -- cgit v1.2.1