diff --git a/src/mio/rpmDB.py b/src/mio/rpmDB.py index 38a0495a6c2be7701757afa9d61818d6a82e1d5f..d17b5b61f089425b6ef3998777d924f8ea97fb17 100755 --- a/src/mio/rpmDB.py +++ b/src/mio/rpmDB.py @@ -35,13 +35,22 @@ class VersionDB: def __init__(self): self.rpm = {} try: + def toUtf8(s): + # Hack, need to investigate python2/python3 on all + # supported versions, ... + if not s: + return '' + try: + return s.decode('utf-8') + except AttributeError: + return s read_ts = initReadOnlyTransaction() for e in read_ts.dbMatch(): (name, arch, version, release) = ( - e[rpm.RPMTAG_NAME].decode('utf-8'), - (e[rpm.RPMTAG_ARCH] or b'').decode('utf-8'), - e[rpm.RPMTAG_VERSION].decode('utf-8'), - e[rpm.RPMTAG_RELEASE].decode('utf-8')) + toUtf8(e[rpm.RPMTAG_NAME]), + toUtf8(e[rpm.RPMTAG_ARCH]), + toUtf8(e[rpm.RPMTAG_VERSION]), + toUtf8(e[rpm.RPMTAG_RELEASE])) theRPM = RPM(name, arch, version, release) def add_rpm(name, rpm): if not name in self.rpm: @@ -59,7 +68,7 @@ class VersionDB: pass add_rpm(name, theRPM) for p in e['provides']: - add_alias(name, p.decode('utf8'), theRPM) + add_alias(name, toUtf8(p), theRPM) pass # for o in e['obsoletes']: # add_alias(name, o.decode('utf8'), theRPM)