From f9ce61418706583c40a2804220a50c00e102ed29 Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Mon, 28 Oct 2019 09:59:02 +0100
Subject: [PATCH] Consider packages found in 'rpm provides' as installed

---
 src/mio.py       |  1 +
 src/mio/rpmDB.py | 27 +++++++++++++++++++++++----
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/src/mio.py b/src/mio.py
index 53e2a0f..24b25d6 100755
--- a/src/mio.py
+++ b/src/mio.py
@@ -328,6 +328,7 @@ if __name__ == '__main__':
                 pass
             except Exception as e:
                 log(MUTE, "Failed to install rpm's, rerun with '--noyum'")
+                raise()
                 exit(1)
                 pass
         log(NORMAL, "Installing files")
diff --git a/src/mio/rpmDB.py b/src/mio/rpmDB.py
index 95bc885..38a0495 100755
--- a/src/mio/rpmDB.py
+++ b/src/mio/rpmDB.py
@@ -39,13 +39,32 @@ class VersionDB:
             for e in read_ts.dbMatch():
                 (name, arch, version, release) = (
                     e[rpm.RPMTAG_NAME].decode('utf-8'),
-                    e[rpm.RPMTAG_ARCH].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'))
-                if not name in self.rpm:
-                    self.rpm[name] = []
+                theRPM = RPM(name, arch, version, release)
+                def add_rpm(name, rpm):
+                    if not name in self.rpm:
+                        self.rpm[name] = []
+                        pass
+                    self.rpm[name].append(rpm)
                     pass
-                self.rpm[name].append(RPM(name, arch, version, release))
+                def add_alias(name, alias, rpm):
+                    if name == alias:
+                        return
+                    if '(' in alias or '/' in alias:
+                        # Filter out specials and paths
+                        return
+                    add_rpm(alias, rpm)
+                    pass
+                add_rpm(name, theRPM)
+                for p in e['provides']:
+                    add_alias(name, p.decode('utf8'), theRPM)
+                    pass
+                # for o in e['obsoletes']:
+                #     add_alias(name, o.decode('utf8'), theRPM)
+                #     pass
+                pass
             del read_ts
         except:
             raise
-- 
GitLab