aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancois Pons <fpons@mandriva.com>2004-08-02 10:42:03 +0000
committerFrancois Pons <fpons@mandriva.com>2004-08-02 10:42:03 +0000
commitc5bf8148079ce8ac2ae6e860be574c60a5fe7440 (patch)
treeb1dbe45d5bdb0ae4ed9863a65b1c6fabbcf0792a
parent22b7f2b88cba1b99d01d016fe120ffdcb27d84b1 (diff)
downloadperl-URPM-c5bf8148079ce8ac2ae6e860be574c60a5fe7440.tar
perl-URPM-c5bf8148079ce8ac2ae6e860be574c60a5fe7440.tar.gz
perl-URPM-c5bf8148079ce8ac2ae6e860be574c60a5fe7440.tar.bz2
perl-URPM-c5bf8148079ce8ac2ae6e860be574c60a5fe7440.tar.xz
perl-URPM-c5bf8148079ce8ac2ae6e860be574c60a5fe7440.zip
fixed deadlock caused with libgc1 obsoleting itself ;-) and in the case were an
older package is already installed and an older package is present in urpmi db. The problems comes with a badly interpreted comparison without an operator checked.
-rw-r--r--URPM/Resolve.pm4
1 files changed, 2 insertions, 2 deletions
diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm
index 88d655b..eafa50f 100644
--- a/URPM/Resolve.pm
+++ b/URPM/Resolve.pm
@@ -499,7 +499,7 @@ sub resolve_requested {
my (%diff_provides);
foreach ($pkg->name." < ".$pkg->epoch.":".$pkg->version."-".$pkg->release, $pkg->obsoletes) {
- $pkg->name eq $_ and next; #- this package obsoletes itself ?? Ignore.
+ #$pkg->name eq $_ and print STDERR "avoiding same name for package ".$pkg->fullname."\n", next; #- this package obsoletes itself ?? Ignore.
if (my ($n, $o, $v) = /^([^\s\[]*)(?:\[\*\])?\s*\[?([^\s\]]*)\s*([^\s\]]*)/) {
#- populate avoided entries according to what is selected.
foreach (keys %{$urpm->{provides}{$n} || {}}) {
@@ -536,7 +536,7 @@ sub resolve_requested {
if ($p->name eq $pkg->name) {
#- all packages older than the current one are obsoleted,
#- the others are simply removed (the result is the same).
- if ($comparison > 0) {
+ if ($o && $comparison > 0) {
#- installed package is newer
#- remove this package from the list of packages to install,
#- unless urpmi was invoked with --allow-force (in which