[yum-commits] Branch 'yum-3_2_X' - 9 commits - rpmUtils/updates.py test/depsolvetests.py yum/__init__.py yum/comps.py yum/depsolve.py yum/packages.py yum/parser.py yum/repoMDObject.py yum/sqlitesack.py yum/transactioninfo.py

James Antill james at osuosl.org
Tue Dec 23 06:54:19 UTC 2008


 rpmUtils/updates.py    |   39 +++++++++++++++++++++++++++++++++++++++
 test/depsolvetests.py  |   25 +++++++++++++++++++++++++
 yum/__init__.py        |    8 +++-----
 yum/comps.py           |    2 +-
 yum/depsolve.py        |    3 ++-
 yum/packages.py        |    3 ++-
 yum/parser.py          |    2 +-
 yum/repoMDObject.py    |    2 +-
 yum/sqlitesack.py      |    2 ++
 yum/transactioninfo.py |    2 +-
 10 files changed, 77 insertions(+), 11 deletions(-)

New commits:
commit 5e53b4ecbb85ff5526c2b018efc39cc1017fb8bb
Author: James Antill <james at and.org>
Date:   Tue Dec 23 01:54:01 2008 -0500

    Remove debugging msg

diff --git a/yum/__init__.py b/yum/__init__.py
index 9df7644..e4ec245 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -2405,7 +2405,6 @@ class YumBase(depsolve.Depsolve):
     def _find_obsoletees(self, po):
         """ Return the pkgs. that are obsoleted by the po we pass in. """
         for (obstup, inst_tup) in self.up.getObsoletersTuples(name=po.name):
-            print "JDBG:", po, obstup
             if po.pkgtup == obstup:
                 installed_pkg =  self.rpmdb.searchPkgTuple(inst_tup)[0]
                 yield installed_pkg
commit 1e17f7929d7c168529c83c7aeb1b7d20417f311e
Author: James Antill <james at and.org>
Date:   Tue Dec 23 01:44:16 2008 -0500

    Get the "updating for deps" text correct

diff --git a/yum/depsolve.py b/yum/depsolve.py
index 579e7a1..4e1b637 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -386,7 +386,8 @@ class Depsolve(object):
         
         if needmode in ['i', 'u']:
             length = len(self.tsInfo)
-            self.update(name=name, epoch=epoch, version=ver, release=rel)
+            self.update(name=name, epoch=epoch, version=ver, release=rel,
+                        requiringPo=requiringPo)
             txmbrs = self.tsInfo.getMembersWithState(requiringPo.pkgtup, TS_REMOVE_STATES)
             if len(self.tsInfo) != length and txmbrs:
                 if txmbrs[0].output_state == TS_OBSOLETED:
diff --git a/yum/transactioninfo.py b/yum/transactioninfo.py
index 5a843fd..0a896d1 100644
--- a/yum/transactioninfo.py
+++ b/yum/transactioninfo.py
@@ -254,7 +254,7 @@ class TransactionData:
 
         for txmbr in self.getMembers():
             if txmbr.output_state == TS_UPDATE:
-                if txmbr.isDep and txmbr.reason == "dep":
+                if txmbr.isDep:
                     self.depupdated.append(txmbr)
                 else:
                     self.updated.append(txmbr)
commit 928c98c07a80f1407b511500e86a2f4d8264fead
Author: James Antill <james at and.org>
Date:   Tue Dec 23 01:40:46 2008 -0500

     Use getObsoletersTuples() where that's what we wanted.
     Don't pass arch (it's an or test -- bad monkey), as name will work now we
    are using the right selector.
     This fixes: testUpdate_so_req_diff_arch().

diff --git a/yum/__init__.py b/yum/__init__.py
index 27eb5c2..9df7644 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -2404,8 +2404,8 @@ class YumBase(depsolve.Depsolve):
 
     def _find_obsoletees(self, po):
         """ Return the pkgs. that are obsoleted by the po we pass in. """
-        for (obstup, inst_tup) in self.up.getObsoletesTuples(name=po.name, 
-                                                             arch=po.arch):
+        for (obstup, inst_tup) in self.up.getObsoletersTuples(name=po.name):
+            print "JDBG:", po, obstup
             if po.pkgtup == obstup:
                 installed_pkg =  self.rpmdb.searchPkgTuple(inst_tup)[0]
                 yield installed_pkg
@@ -2580,7 +2580,7 @@ class YumBase(depsolve.Depsolve):
                     break
             
             # it doesn't obsolete anything. If it does, mark that in the tsInfo, too
-            if po.pkgtup in self.up.getObsoletesList(name=po.name, arch=po.arch):
+            if po.pkgtup in self.up.getObsoletesList(name=po.name):
                 for obsoletee in self._find_obsoletees(po):
                     txmbr = self.tsInfo.addObsoleting(po, obsoletee)
                     self.tsInfo.addObsoleted(obsoletee, po)
@@ -2777,8 +2777,7 @@ class YumBase(depsolve.Depsolve):
                                             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
-                elif po.pkgtup in self.up.getObsoletesList(name=po.name,
-                                                           arch=po.arch):
+                elif po.pkgtup in self.up.getObsoletesList(name=po.name):
                     for obsoletee in self._find_obsoletees(po):
                         txmbr = self.tsInfo.addUpdate(po, installed_pkg)
                         if requiringPo:
commit 67f41dced53d4311fefa0e072ea13beb489c6be6
Author: James Antill <james at and.org>
Date:   Tue Dec 23 01:37:23 2008 -0500

     Add getObsoletersTuples() for searching based on the obsoleter
       add comments for WTF the difference is between
       getObsoletesTuples and
       getObsoletesList (same prefix, different selector == bad monkey)

diff --git a/rpmUtils/updates.py b/rpmUtils/updates.py
index 16f733b..062a522 100644
--- a/rpmUtils/updates.py
+++ b/rpmUtils/updates.py
@@ -528,6 +528,7 @@ class Updates:
             for newtup in self.updatesdict[oldtup]:
                 returnlist.append((newtup, oldtup))
         
+        # self.reduceListByNameArch() for double tuples
         tmplist = []
         if name:
             for ((n, a, e, v, r), oldtup) in returnlist:
@@ -558,6 +559,8 @@ class Updates:
         
         return returnlist
                 
+    # NOTE: This returns obsoleters and obsoletees, but narrows based on
+    # _obsoletees_ (unlike getObsoletesList). Look at getObsoletersTuples
     def getObsoletesTuples(self, newest=0, name=None, arch=None):
         """returns obsoletes for packages in a list of tuples of:
            (obsoleting naevr, installed naevr). You can specify name and/or
@@ -574,6 +577,7 @@ class Updates:
             for rpmtup in self.obsoletes[obstup]:
                 tmplist.append((obstup, rpmtup))
         
+        # self.reduceListByNameArch() for double tuples
         returnlist = []
         if name or arch:
             for (obstup, (n, a, e, v, r)) in tmplist:
@@ -590,8 +594,43 @@ class Updates:
 
         return returnlist
                         
+    # NOTE: This returns obsoleters and obsoletees, but narrows based on
+    # _obsoleters_ (like getObsoletesList).
+    def getObsoletersTuples(self, newest=0, name=None, arch=None):
+        """returns obsoletes for packages in a list of tuples of:
+           (obsoleting naevr, installed naevr). You can specify name and/or
+           arch of the obsoleting package to narrow the results.
+           You can also specify newest=1 to get the set of newest pkgs (name, arch)
+           sorted, that obsolete something"""
            
+        tmplist = []
+        obslist = self.obsoletes.keys()
+        if newest:
+            obslist = self._reduceListNewestByNameArch(obslist)
+
+        for obstup in obslist:
+            for rpmtup in self.obsoletes[obstup]:
+                tmplist.append((obstup, rpmtup))
+
+        # self.reduceListByNameArch() for double tuples
+        returnlist = []
+        if name or arch:
+            for ((n, a, e, v, r), insttup) in tmplist:
+                if name:
+                    if name == n:
+                        returnlist.append(((n, a, e, v, r), insttup))
+                        continue
+                if arch:
+                    if arch == a:
+                        returnlist.append(((n, a, e, v, r), insttup))
+                        continue
+        else:
+            returnlist = tmplist
+
+        return returnlist
            
+    # NOTE: This returns _obsoleters_, and narrows based on that (unlike
+    # getObsoletesTuples, but like getObsoletersTuples)
     def getObsoletesList(self, newest=0, name=None, arch=None):
         """returns obsoleting packages in a list of naevr tuples of just the
            packages that obsolete something that is installed. You can specify
commit 79d52701631b97b364e4429839c7146116a817a4
Author: James Antill <james at and.org>
Date:   Tue Dec 23 01:35:58 2008 -0500

    Fix the testcase for gnome-packagekit, PackageKit and pirut

diff --git a/test/depsolvetests.py b/test/depsolvetests.py
index 7386022..05e189c 100644
--- a/test/depsolvetests.py
+++ b/test/depsolvetests.py
@@ -1153,34 +1153,20 @@ class DepsolveTests(DepsolveTests):
         self.assertEquals('ok', *self.resolveCode())
         self.assertResult((ipo1, po1))
 
-    def testUpdate_so_req1(self):
-        rpo1 = FakePackage('foo')
+    def testUpdate_so_req_diff_arch(self):
+        rpo1 = FakePackage('foozoomer')
         rpo1.addRequires('libbar.so.1()', None, (None, None, None))
-        rpo2 = FakePackage('bar')
-        rpo2.addProvides('libbar.so.1()', None, (None, None, None))
+        rpo1.addObsoletes('zoom', 'LT', ('8', '8', '8'))
         self.rpmdb.addPackage(rpo1)
-
-        apo1 = FakePackage('foo', version=2)
-        apo1.addRequires('libbar.so.2()', None, (None, None, None))
-        self.xsack.addPackage(apo1)
-        apo2 = FakePackage('bar', version=2)
-        apo2.addProvides('libbar.so.2()', None, (None, None, None))
-        self.xsack.addPackage(apo2)
-
-        self.tsInfo.addUpdate(apo1, oldpo=rpo1)
-
-        self.assertEquals('ok', *self.resolveCode())
-        self.assertResult((apo1, apo2))
-
-    def testUpdate_so_req2(self):
-        rpo1 = FakePackage('foo')
-        rpo1.addRequires('libbar.so.1()', None, (None, None, None))
         rpo2 = FakePackage('bar')
         rpo2.addProvides('libbar.so.1()', None, (None, None, None))
-        self.rpmdb.addPackage(rpo1)
+        self.rpmdb.addPackage(rpo2)
+        rpo3 = FakePackage('zoom', arch='i386')
+        self.rpmdb.addPackage(rpo3)
 
-        apo1 = FakePackage('foo', version=2)
+        apo1 = FakePackage('foozoomer', version=2)
         apo1.addRequires('libbar.so.2()', None, (None, None, None))
+        apo1.addObsoletes('zoom', 'LT', ('8', '8', '8'))
         self.xsack.addPackage(apo1)
         apo2 = FakePackage('bar', version=2)
         apo2.addProvides('libbar.so.2()', None, (None, None, None))
@@ -1188,6 +1174,6 @@ class DepsolveTests(DepsolveTests):
 
         self.tsInfo.addUpdate(apo2, oldpo=rpo2)
 
-        self.assertEquals('ok', *self.resolveCode())
+        self.assertEquals('ok', *self.resolveCode(obs=True))
         self.assertResult((apo1, apo2))
 
commit b220472b78d653004b54fee483e01f0438d0929b
Author: James Antill <james at and.org>
Date:   Mon Dec 22 13:50:26 2008 -0500

    Fix tab vs. spaces crack, so stupid python is happy

diff --git a/yum/parser.py b/yum/parser.py
index 4f297c3..dd45d6d 100644
--- a/yum/parser.py
+++ b/yum/parser.py
@@ -135,7 +135,7 @@ class ConfigPreProcessor:
                     # check if the current line starts a new section
                     secmatch = re.match( r'\s*\[(?P<section>.*)\]', line )
                     if secmatch:
-			self._section = secmatch.group('section')
+                        self._section = secmatch.group('section')
                     # line didn't match include=, just return it as is
                     # for the ConfigParser
                     break
commit b64aceea0237dd48eaa3fb2ce3c41b9b692482cb
Author: James Antill <james at and.org>
Date:   Mon Dec 22 13:37:47 2008 -0500

    Work around "empty" deescriptions as we do for summaries, picasa needs this

diff --git a/yum/packages.py b/yum/packages.py
index acfb9f0..31b6045 100644
--- a/yum/packages.py
+++ b/yum/packages.py
@@ -981,7 +981,8 @@ class YumHeaderPackage(YumAvailablePackage):
         # Summaries "can be" empty, which rpm return [], see BZ 473239, *sigh*
         self.summary = self.hdr['summary'] or ''
         self.summary = misc.share_data(self.summary.replace('\n', ''))
-        self.description = misc.share_data(self.hdr['description'])
+        self.description = self.hdr['description'] or ''
+        self.description = misc.share_data(self.description)
         self.pkgid = self.hdr[rpm.RPMTAG_SHA1HEADER]
         if not self.pkgid:
             self.pkgid = "%s.%s" %(self.hdr['name'], self.hdr['buildtime'])
diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
index 21fec5a..d98e43b 100644
--- a/yum/sqlitesack.py
+++ b/yum/sqlitesack.py
@@ -154,6 +154,8 @@ class YumAvailablePackageSqlite(YumAvailablePackage, PackageObject, RpmBase):
         value = r[0]
         if varname == 'epoch' and value is None:
             value = '0'
+        if value is None:
+            value = '' # Description for picasa, probably among others *sigh*
         if varname in {'vendor' : 1, 'packager' : 1, 'buildhost' : 1,
                        'license' : 1, 'group' : 1,
                        'summary' : 1, 'description' : 1, 'sourcerpm' : 1,
commit c470492a359fb5565275b82e2c09473809dce041
Author: James Antill <james at and.org>
Date:   Mon Dec 22 13:34:04 2008 -0500

    Remove "not" in test for strings

diff --git a/yum/comps.py b/yum/comps.py
index 20ff28f..ac20652 100755
--- a/yum/comps.py
+++ b/yum/comps.py
@@ -496,7 +496,7 @@ class Comps(object):
         if not srcfile:
             raise CompsException
             
-        if type(srcfile) not in types.StringTypes:
+        if type(srcfile) in types.StringTypes:
             # srcfile is a filename string
             infile = open(srcfile, 'rt')
         else:
diff --git a/yum/repoMDObject.py b/yum/repoMDObject.py
index 2025d68..298d369 100755
--- a/yum/repoMDObject.py
+++ b/yum/repoMDObject.py
@@ -79,7 +79,7 @@ class RepoMD:
         self.revision  = None
         self.tags      = {'content' : set(), 'distro' : {}}
         
-        if type(srcfile) not in types.StringTypes:
+        if type(srcfile) in types.StringTypes:
             # srcfile is a filename string
             infile = open(srcfile, 'rt')
         else:
commit 4ef6b9c6e03ebf41bf7c9488153b3400f389cd93
Author: James Antill <james at and.org>
Date:   Mon Dec 22 13:28:30 2008 -0500

    Add tests for .so dep. problems

diff --git a/test/depsolvetests.py b/test/depsolvetests.py
index 87522eb..7386022 100644
--- a/test/depsolvetests.py
+++ b/test/depsolvetests.py
@@ -1152,3 +1152,42 @@ class DepsolveTests(DepsolveTests):
         # self.assertEquals('err', *self.resolveCode())
         self.assertEquals('ok', *self.resolveCode())
         self.assertResult((ipo1, po1))
+
+    def testUpdate_so_req1(self):
+        rpo1 = FakePackage('foo')
+        rpo1.addRequires('libbar.so.1()', None, (None, None, None))
+        rpo2 = FakePackage('bar')
+        rpo2.addProvides('libbar.so.1()', None, (None, None, None))
+        self.rpmdb.addPackage(rpo1)
+
+        apo1 = FakePackage('foo', version=2)
+        apo1.addRequires('libbar.so.2()', None, (None, None, None))
+        self.xsack.addPackage(apo1)
+        apo2 = FakePackage('bar', version=2)
+        apo2.addProvides('libbar.so.2()', None, (None, None, None))
+        self.xsack.addPackage(apo2)
+
+        self.tsInfo.addUpdate(apo1, oldpo=rpo1)
+
+        self.assertEquals('ok', *self.resolveCode())
+        self.assertResult((apo1, apo2))
+
+    def testUpdate_so_req2(self):
+        rpo1 = FakePackage('foo')
+        rpo1.addRequires('libbar.so.1()', None, (None, None, None))
+        rpo2 = FakePackage('bar')
+        rpo2.addProvides('libbar.so.1()', None, (None, None, None))
+        self.rpmdb.addPackage(rpo1)
+
+        apo1 = FakePackage('foo', version=2)
+        apo1.addRequires('libbar.so.2()', None, (None, None, None))
+        self.xsack.addPackage(apo1)
+        apo2 = FakePackage('bar', version=2)
+        apo2.addProvides('libbar.so.2()', None, (None, None, None))
+        self.xsack.addPackage(apo2)
+
+        self.tsInfo.addUpdate(apo2, oldpo=rpo2)
+
+        self.assertEquals('ok', *self.resolveCode())
+        self.assertResult((apo1, apo2))
+


More information about the Yum-commits mailing list