[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