James Bowes wrote:
This one (with tests) also won't apply. Do you mind resolving the
conflicts?

Taking the time to do things right pays off...

Patches against current head are attached.

Florian
>From ebe15d09f886f88df35033f0442ddf1db6a766d7 Mon Sep 17 00:00:00 2001
From: Florian Festi <[EMAIL PROTECTED]>
Date: Mon, 12 Nov 2007 17:48:21 +0100
Subject: [PATCH] Do arch checks for versioned obsoletes, too
 Reduce duplicated code in doObsoletes

---
 rpmUtils/updates.py |   29 +++++------------------------
 1 files changed, 5 insertions(+), 24 deletions(-)

diff --git a/rpmUtils/updates.py b/rpmUtils/updates.py
index 861037f..94d8aa1 100644
--- a/rpmUtils/updates.py
+++ b/rpmUtils/updates.py
@@ -207,9 +207,11 @@ class Updates:
         for pkgtup in self.rawobsoletes.keys():
             (name, arch, epoch, ver, rel) = pkgtup
             for (obs_n, flag, (obs_e, obs_v, obs_r)) in self.rawobsoletes[(pkgtup)]:
-                if flag in [None, 0]: # unversioned obsolete
-                    if self.installdict.has_key((obs_n, None)):
-                        for (rpm_a, rpm_e, rpm_v, rpm_r) in self.installdict[(obs_n, None)]:
+                if self.installdict.has_key((obs_n, None)):
+                    for (rpm_a, rpm_e, rpm_v, rpm_r) in self.installdict[(obs_n, None)]:
+                        if flag in [None, 0] or \
+                                rpmUtils.miscutils.rangeCheck((obs_n, flag, (obs_e, obs_v, obs_r)),
+                                                              (obs_n, rpm_a, rpm_e, rpm_v, rpm_r)):
                             # make sure the obsoleting pkg is not already installed
                             willInstall = 1
                             if self.installdict.has_key((name, None)):
@@ -225,27 +227,6 @@ class Updates:
                                 if not obsdict.has_key(pkgtup):
                                     obsdict[pkgtup] = []
                                 obsdict[pkgtup].append((obs_n, rpm_a, rpm_e, rpm_v, rpm_r))
-
-                else: # versioned obsolete
-                    if self.installdict.has_key((obs_n, None)):
-                        for (rpm_a, rpm_e, rpm_v, rpm_r) in self.installdict[(obs_n, None)]:
-                            if rpmUtils.miscutils.rangeCheck((obs_n, flag, (obs_e, \
-                                                        obs_v, obs_r)), (obs_n,\
-                                                        rpm_a, rpm_e, rpm_v, rpm_r)):
-                                # make sure the obsoleting pkg is not already installed
-                                willInstall = 1
-                                if self.installdict.has_key((name, None)):
-                                    for (ins_a, ins_e, ins_v, ins_r) in self.installdict[(name, None)]:
-                                        pkgver = (epoch, ver, rel)
-                                        installedver = (ins_e, ins_v, ins_r)
-                                        if self.returnNewest((pkgver, installedver)) == installedver:
-                                            willInstall = 0
-                                            break
-                                if willInstall:
-                                    if not obsdict.has_key(pkgtup):
-                                        obsdict[pkgtup] = []
-                                    obsdict[pkgtup].append((obs_n, rpm_a, rpm_e, rpm_v, rpm_r))
-           
         self.obsoletes = obsdict
         self.makeObsoletedDict()
 
-- 
1.5.3.3

>From 28d7657f2faa5f7d7735e8803ff1d406dd53226c Mon Sep 17 00:00:00 2001
From: Florian Festi <[EMAIL PROTECTED]>
Date: Wed, 14 Nov 2007 11:08:04 +0100
Subject: [PATCH] Work around unreliable result of .update()

---
 yum/depsolve.py |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/yum/depsolve.py b/yum/depsolve.py
index 55f7130..665fbdd 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -501,9 +501,10 @@ class Depsolve(object):
         # find the best one 
 
         # try updating the already install pkgs
+        length = len(self.tsInfo)
         for pkg in provSack.returnNewestByName():
-            txmbrs = self.update(name=pkg.name, epoch=pkg.epoch, version=pkg.version, rel=pkg.rel)
-            if txmbrs:
+            self.update(name=pkg.name, epoch=pkg.epoch, version=pkg.version, rel=pkg.rel)
+            if len(self.tsInfo) != length:
                 checkdeps = True
                 return checkdeps, missingdep
 
-- 
1.5.3.3

_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to