[yum-commits] Branch 'yum-3_2_X' - 5 commits - test/simpleupdatetests.py yum/depsolve.py yum/__init__.py

James Antill james at osuosl.org
Mon May 10 13:59:38 UTC 2010


 test/simpleupdatetests.py |   45 +++++++++++++++++++++++++++++++++++++++++++++
 yum/__init__.py           |   14 +++++++-------
 yum/depsolve.py           |   20 ++++++++++++++------
 3 files changed, 66 insertions(+), 13 deletions(-)

New commits:
commit 720f0141b7f147170bcbf66c19c99b20b8bc4dcb
Author: James Antill <james at and.org>
Date:   Sun May 9 23:56:23 2010 -0400

    Comment explaining testUpdateRLEvince1 and 2

diff --git a/test/simpleupdatetests.py b/test/simpleupdatetests.py
index 8232675..df641f7 100644
--- a/test/simpleupdatetests.py
+++ b/test/simpleupdatetests.py
@@ -766,6 +766,8 @@ class SimpleUpdateTests(OperationsTests):
         self.assertResult((pa1, pa3))
 
     def testUpdateRLEvince1(self):
+        """ This tests a dep. upgrade from a dep. upgrade, with a multilib. pkg.
+            where only half of the multilib. is installed. """
         pi1 = FakePackage('evince', '1', '1', '0', 'x86_64')
         pi1.addRequires('evince-libs', 'EQ', ('0', '1', '1'))
         pi2 = FakePackage('evince-libs', '1', '1', '0', 'x86_64')
@@ -786,6 +788,9 @@ class SimpleUpdateTests(OperationsTests):
         self.assertResult((pa1, pa2x, pa3))
 
     def testUpdateRLEvince2(self):
+        """ Dito. testUpdateRLEvince1, except here pa2i is before pa2x, and
+            thus. will be seen first by .update() when it does an
+            archless "find". """
         pi1 = FakePackage('evince', '1', '1', '0', 'x86_64')
         pi1.addRequires('evince-libs', 'EQ', ('0', '1', '1'))
         pi2 = FakePackage('evince-libs', '1', '1', '0', 'x86_64')
commit dace53a1169f0c66c4771f6b9885c12fa6a6a885
Author: James Antill <james at and.org>
Date:   Sat May 8 18:06:49 2010 -0400

    Fix weird logging error, comma separated values must be expanded

diff --git a/yum/__init__.py b/yum/__init__.py
index b7f7702..9546aec 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -3291,7 +3291,7 @@ class YumBase(depsolve.Depsolve):
                 
             for (new, old) in updates:
                 if self.tsInfo.isObsoleted(pkgtup=old):
-                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'), 
+                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s') %
                         old)
                 else:
                     tx_return.extend(self.update(po=self.getPackageObject(new)))
@@ -3400,7 +3400,7 @@ class YumBase(depsolve.Depsolve):
                         txmbr.setAsDep(requiringPo)
                     tx_return.append(txmbr)
                     if self.tsInfo.isObsoleted(obsoleted):
-                        self.verbose_logger.log(logginglevels.DEBUG_2, _('Package is already obsoleted: %s.%s %s:%s-%s'), obsoleted)
+                        self.verbose_logger.log(logginglevels.DEBUG_2, _('Package is already obsoleted: %s.%s %s:%s-%s') % obsoleted)
                     else:
                         txmbr = self.tsInfo.addObsoleted(obsoleted_pkg, available_pkg)
                         tx_return.append(txmbr)
@@ -3409,7 +3409,7 @@ class YumBase(depsolve.Depsolve):
             for updating in self.up.updatesdict.get(installed_pkg.pkgtup, []):
                 po = self.getPackageObject(updating)
                 if self.tsInfo.isObsoleted(installed_pkg.pkgtup):
-                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'), 
+                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s') %
                                             installed_pkg.pkgtup)                                               
                 # at this point we are going to mark the pkg to be installed, make sure
                 # it doesn't obsolete anything. If it does, mark that in the tsInfo, too
@@ -3436,11 +3436,11 @@ class YumBase(depsolve.Depsolve):
                 continue
             for updated in self.up.updating_dict.get(available_pkg.pkgtup, []):
                 if self.tsInfo.isObsoleted(updated):
-                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'), 
+                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s') %
                                             updated)
                 elif self._newer_update_in_trans(updated, available_pkg,
                                                  tx_return):
-                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already updated: %s.%s %s:%s-%s'), 
+                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already updated: %s.%s %s:%s-%s') %
                                             updated)
                 
                 else:
@@ -3462,11 +3462,11 @@ class YumBase(depsolve.Depsolve):
 
             for ipkg in pot_updated:
                 if self.tsInfo.isObsoleted(ipkg.pkgtup):
-                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'), 
+                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s') %
                                             ipkg.pkgtup)
                 elif self._newer_update_in_trans(ipkg.pkgtup, available_pkg,
                                                  tx_return):
-                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already updated: %s.%s %s:%s-%s'), 
+                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already updated: %s.%s %s:%s-%s') %
                                             ipkg.pkgtup)
                 elif ipkg.verLT(available_pkg):
                     txmbr = self._add_up_txmbr(requiringPo, available_pkg, ipkg)
commit a148eb3e854a7c170771b61b3d06f78e46c1e9ce
Author: James Antill <james at and.org>
Date:   Sat May 8 17:55:02 2010 -0400

    Do the second fix, for the previous testcase. Seems correct, but not 100%.

diff --git a/yum/depsolve.py b/yum/depsolve.py
index eb47587..60b4e2f 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -521,10 +521,11 @@ class Depsolve(object):
         # find the best one 
 
         # try updating the already install pkgs
+        results = []
         for pkg in provSack.returnNewestByName():
-            results = self.update(requiringPo=requiringPo, name=pkg.name,
-                                  epoch=pkg.epoch, version=pkg.version,
-                                  rel=pkg.rel)
+            tresults = self.update(requiringPo=requiringPo, name=pkg.name,
+                                   epoch=pkg.epoch, version=pkg.version,
+                                   rel=pkg.rel)
             #  Note that this does "interesting" things with multilib. We can
             # have say A.i686 and A.x86_64, and if we hit "A.i686" first,
             # .update() will actually update "A.x86_64" which will then fail
@@ -533,6 +534,7 @@ class Depsolve(object):
             # fails.
             #  Keeping results through the loop and thus. testing each pkg
             # against all txmbr's from previous runs "fixes" this.
+            results.extend(tresults)
             for txmbr in results:
                 if pkg == txmbr.po:
                     checkdeps = True
commit 1be67b3fa5a15277c94d42c48569edb6b094cb29
Author: James Antill <james at and.org>
Date:   Sat May 8 17:50:35 2010 -0400

    Add a fix for the _old_ bug, and a comment about another possible fix.

diff --git a/yum/depsolve.py b/yum/depsolve.py
index 17b2ce9..eb47587 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -515,8 +515,6 @@ class Depsolve(object):
             if pkgmode in ['i', 'u']:
                 self.verbose_logger.log(logginglevels.DEBUG_2,
                     _('%s already in ts, skipping this one'), pkg)
-                # FIXME: Remove this line, if it is not needed ?
-                # checkdeps = 1
                 self._last_req = pkg
                 return checkdeps, missingdep
 
@@ -527,6 +525,14 @@ class Depsolve(object):
             results = self.update(requiringPo=requiringPo, name=pkg.name,
                                   epoch=pkg.epoch, version=pkg.version,
                                   rel=pkg.rel)
+            #  Note that this does "interesting" things with multilib. We can
+            # have say A.i686 and A.x86_64, and if we hit "A.i686" first,
+            # .update() will actually update "A.x86_64" which will then fail
+            # the pkg == txmbr.po test below, but then they'll be nothing to
+            # update when we get around to A.x86_64 ... so this entire loop
+            # fails.
+            #  Keeping results through the loop and thus. testing each pkg
+            # against all txmbr's from previous runs "fixes" this.
             for txmbr in results:
                 if pkg == txmbr.po:
                     checkdeps = True
@@ -551,7 +557,6 @@ class Depsolve(object):
             return checkdeps, missingdep
         
                 
-            
         # FIXME - why can't we look up in the transaction set for the requiringPkg
         # and know what needs it that way and provide a more sensible dep structure in the txmbr
         inst = self.rpmdb.searchNevra(name=best.name, arch=best.arch)
@@ -562,6 +567,7 @@ class Depsolve(object):
             txmbr = self.tsInfo.addUpdate(best, inst[0])
             txmbr.setAsDep(po=requiringPo)
             txmbr.reason = "dep"
+            checkdeps = True
             self._last_req = best
         else:
             self.verbose_logger.debug(_('TSINFO: Marking %s as install for %s'), best,
commit 37899b9c170ce1a97cd29be6a0a0322f608c4fd6
Author: James Antill <james at and.org>
Date:   Sat May 8 17:49:34 2010 -0400

    Add a couple of depsolve tests, from a bug I found updating F-13.

diff --git a/test/simpleupdatetests.py b/test/simpleupdatetests.py
index f02cc75..8232675 100644
--- a/test/simpleupdatetests.py
+++ b/test/simpleupdatetests.py
@@ -764,3 +764,43 @@ class SimpleUpdateTests(OperationsTests):
                                      [pa1, pa2, pa4, pa3])
         self.assert_(res=='ok', msg)
         self.assertResult((pa1, pa3))
+
+    def testUpdateRLEvince1(self):
+        pi1 = FakePackage('evince', '1', '1', '0', 'x86_64')
+        pi1.addRequires('evince-libs', 'EQ', ('0', '1', '1'))
+        pi2 = FakePackage('evince-libs', '1', '1', '0', 'x86_64')
+        pi3 = FakePackage('evince-djvu', '1', '1', '0', 'x86_64')
+        pi3.addRequires('evince-libs', 'EQ', ('0', '1', '1'))
+
+        pa1 = FakePackage('evince', '2', '1', '0', 'x86_64')
+        pa1.addRequires('evince-libs', 'EQ', ('0', '2', '1'))
+        pa2i = FakePackage('evince-libs', '2', '1', '0', 'i686')
+        pa2x = FakePackage('evince-libs', '2', '1', '0', 'x86_64')
+        pa3 = FakePackage('evince-djvu', '2', '1', '0', 'x86_64')
+        pa3.addRequires('evince-libs', 'EQ', ('0', '2', '1'))
+
+        res, msg = self.runOperation(['update', 'evince'],
+                                     [pi1, pi2, pi3],
+                                     [pa1, pa2x, pa2i, pa3])
+        self.assert_(res=='ok', msg)
+        self.assertResult((pa1, pa2x, pa3))
+
+    def testUpdateRLEvince2(self):
+        pi1 = FakePackage('evince', '1', '1', '0', 'x86_64')
+        pi1.addRequires('evince-libs', 'EQ', ('0', '1', '1'))
+        pi2 = FakePackage('evince-libs', '1', '1', '0', 'x86_64')
+        pi3 = FakePackage('evince-djvu', '1', '1', '0', 'x86_64')
+        pi3.addRequires('evince-libs', 'EQ', ('0', '1', '1'))
+
+        pa1 = FakePackage('evince', '2', '1', '0', 'x86_64')
+        pa1.addRequires('evince-libs', 'EQ', ('0', '2', '1'))
+        pa2i = FakePackage('evince-libs', '2', '1', '0', 'i686')
+        pa2x = FakePackage('evince-libs', '2', '1', '0', 'x86_64')
+        pa3 = FakePackage('evince-djvu', '2', '1', '0', 'x86_64')
+        pa3.addRequires('evince-libs', 'EQ', ('0', '2', '1'))
+
+        res, msg = self.runOperation(['update', 'evince'],
+                                     [pi1, pi2, pi3],
+                                     [pa1, pa2i, pa2x, pa3])
+        self.assert_(res=='ok', msg)
+        self.assertResult((pa1, pa2x, pa3))


More information about the Yum-commits mailing list