aboutsummaryrefslogtreecommitdiffstats
path: root/URPM.pm
diff options
context:
space:
mode:
authorChristophe Fergeau <cfergeau@mandriva.com>2009-07-28 13:12:01 +0000
committerChristophe Fergeau <cfergeau@mandriva.com>2009-07-28 13:12:01 +0000
commit12bdae7779a82ecf0d9aceb1f7ec03a4c5f98dc1 (patch)
tree8bfc5008087d65ef26430eed6b27c7565311dafe /URPM.pm
parent60bb91532ae971221aae22da36dd6f981936a63e (diff)
downloadperl-URPM-12bdae7779a82ecf0d9aceb1f7ec03a4c5f98dc1.tar
perl-URPM-12bdae7779a82ecf0d9aceb1f7ec03a4c5f98dc1.tar.gz
perl-URPM-12bdae7779a82ecf0d9aceb1f7ec03a4c5f98dc1.tar.bz2
perl-URPM-12bdae7779a82ecf0d9aceb1f7ec03a4c5f98dc1.tar.xz
perl-URPM-12bdae7779a82ecf0d9aceb1f7ec03a4c5f98dc1.zip
keep track of sources for obsoleted/removed levels
Patch by Anssi Hannula, fixes bug #50666 removed/obsoleted levels are set in set_rejected() when a package is rejected (i.e. removed) or a rejection reason is added. They keep track on whether the package is removed and/or obsoleted. When the package has both flags and one of the rejection reasons is removed by _remove_rejected_from(), appropriate flags do not get removed. The case I encountered: the package is set for removal when a package it depends on fails upgrade due to unsatisfied dependency and has to be removed (backtrack_selected => resolve_rejected, causing removed=1), and the package is then promoted (causing obsoleted=1). However, the promotion fails due to the same unsatisfied dependency and backtrack_selected => disable_selected_and_unrequested_dependencies => disable_selected => _remove_all_rejected_from => _remove_rejected_from gets called. This removes the latter rejection reason, but leaves flags, including the now wrong obsoleted=1. Thus the package is not explicitely removed as an obsoletion is assumed, therefore failing the transaction.
Diffstat (limited to 'URPM.pm')
-rw-r--r--URPM.pm3
1 files changed, 2 insertions, 1 deletions
diff --git a/URPM.pm b/URPM.pm
index dc10a0f..d1d4a13 100644
--- a/URPM.pm
+++ b/URPM.pm
@@ -834,7 +834,8 @@ B<selected>: { id => {
} }
B<rejected>: { fullname => {
- size => int, removed => bool, obsoleted => bool,
+ size => int, removed => { fullname|"asked" => undef },
+ obsoleted => { fullname|"asked" => undef },
backtrack => { # those info are only used to display why package is unselected
promote => [ name ], keep => [ fullname ],
unsatisfied => [ id|property ],