From 0161860c8f78bb47d31111af9d6e3f59d45098c8 Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Fri, 1 Nov 2019 17:41:03 +0100
Subject: [PATCH] Temporary UTF8 hack for fedora31

---
 src/mio/rpmDB.py | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/mio/rpmDB.py b/src/mio/rpmDB.py
index 38a0495..d17b5b6 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)
-- 
GitLab