summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--findpackageset.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/findpackageset.py b/findpackageset.py
index cfcc659c3..df9904136 100644
--- a/findpackageset.py
+++ b/findpackageset.py
@@ -1,6 +1,7 @@
import rpm
import rhpl.arch
import string
+import types
from constants import *
# set DB_PRIVATE to make rpm happy
@@ -146,7 +147,7 @@ def findpackageset(hdrlist, dbPath='/'):
epoch = '0'
else:
epoch = str(h[rpm.RPMTAG_EPOCH])
- val = rpm.labelCompare(oevr,(epoch,h[rpm.RPMTAG_VERSION],h[rpm.RPMTAG_RELEASE]))
+ val = compareEVR(oevr,(epoch,h[rpm.RPMTAG_VERSION],h[rpm.RPMTAG_RELEASE]))
if val > 0:
# dEBUG("adding %(name)s %(version)s to the upgrade set for obsoletes" % pkg)
updDict[(name,arch)] = pkg
@@ -154,6 +155,26 @@ def findpackageset(hdrlist, dbPath='/'):
return updDict.values()
+def rpmOutToStr(arg):
+ if type(arg) != types.StringType:
+ # and arg is not None:
+ arg = str(arg)
+
+ return arg
+
+def compareEVR((e1, v1, r1), (e2, v2, r2)):
+ # return 1: a is newer than b
+ # 0: a and b are the same version
+ # -1: b is newer than a
+ e1 = rpmOutToStr(e1)
+ v1 = rpmOutToStr(v1)
+ r1 = rpmOutToStr(r1)
+ e2 = rpmOutToStr(e2)
+ v2 = rpmOutToStr(v2)
+ r2 = rpmOutToStr(r2)
+ rc = rpm.labelCompare((e1, v1, r1), (e2, v2, r2))
+ return rc
+
def strToVersion(str):
"""Parse a string such as in obsoleteversion into evr.
Gratuitously borrowed from yum str_to_version