File add-weak-dependencies.diff of Package rpmlint

Index: Pkg.py
===================================================================
--- Pkg.py.orig	2014-02-21 15:11:27.194647274 +0000
+++ Pkg.py	2014-02-21 15:13:26.205647064 +0000
@@ -427,6 +427,10 @@ class Pkg:
         self._missingok_files = None
         self._files = None
         self._requires = None
+        self._suggests = None
+        self._supplements = None
+        self._enhances = None
+        self._recommends = None
         self._req_names = -1
 
         if header:
@@ -673,6 +677,22 @@ class Pkg:
         self._gatherDepInfo()
         return self._requires
 
+    def recommends(self):
+        self._gatherDepInfo()
+        return self._recommends
+
+    def suggests(self):
+        self._gatherDepInfo()
+        return self._suggests
+
+    def supplements(self):
+        self._gatherDepInfo()
+        return self._supplements
+
+    def enhances(self):
+        self._gatherDepInfo()
+        return self._enhances
+
     def prereq(self):
         """Get package PreReqs as list of
            (name, flags, (epoch, version, release)) tuples."""
@@ -709,7 +729,7 @@ class Pkg:
 
     # internal function to gather dependency info used by the above ones
     def _gather_aux(self, header, list, nametag, flagstag, versiontag,
-                    prereq = None):
+                    prereq = None, strong_only = False, weak_only = False):
         names = header[nametag]
         flags = header[flagstag]
         versions = header[versiontag]
@@ -720,7 +740,11 @@ class Pkg:
                 evr = stringToVersion(versions[loop].decode())
                 if prereq is not None and flags[loop] & PREREQ_FLAG:
                     prereq.append((name, flags[loop] & (~PREREQ_FLAG), evr))
-                else:
+                elif strong_only and flags[loop] & rpm.RPMSENSE_STRONG:
+                    list.append((names[loop], versions[loop], flags[loop] & (~rpm.RPMSENSE_STRONG)))
+                elif  weak_only and not (flags[loop] & rpm.RPMSENSE_STRONG):
+                    list.append((names[loop], versions[loop], flags[loop]))
+                elif not (weak_only or strong_only):
                     list.append((name, flags[loop], evr))
 
     def _gatherDepInfo(self):
@@ -730,6 +754,10 @@ class Pkg:
             self._provides = []
             self._conflicts = []
             self._obsoletes = []
+            self._suggests = []
+            self._supplements = []
+            self._enhances = []
+            self._recommends = []
 
             self._gather_aux(self.header, self._requires,
                              rpm.RPMTAG_REQUIRENAME,
@@ -748,6 +776,26 @@ class Pkg:
                              rpm.RPMTAG_OBSOLETENAME,
                              rpm.RPMTAG_OBSOLETEFLAGS,
                              rpm.RPMTAG_OBSOLETEVERSION)
+            try:
+                self._gather_aux(self.header, self._recommends,
+                                 rpm.RPMTAG_RECOMMENDNAME,
+                                 rpm.RPMTAG_RECOMMENDFLAGS,
+                                 rpm.RPMTAG_RECOMMENDVERSION)
+                self._gather_aux(self.header, self._suggests,
+                                 rpm.RPMTAG_SUGGESTNAME,
+                                 rpm.RPMTAG_SUGGESTFLAGS,
+                                 rpm.RPMTAG_SUGGESTVERSION)
+                self._gather_aux(self.header, self._supplements,
+                                 rpm.RPMTAG_SUPPLEMENTNAME,
+                                 rpm.RPMTAG_SUPPLEMENTFLAGS,
+                                 rpm.RPMTAG_SUPPLEMENTVERSION)
+                self._gather_aux(self.header, self._enhances,
+                                 rpm.RPMTAG_ENHANCENAME,
+                                 rpm.RPMTAG_ENHANCEFLAGS,
+                                 rpm.RPMTAG_ENHANCEVERSION)
+            except:
+                pass
+
 
     def scriptprog(self, which):
         """Get the specified script interpreter as a string.
@@ -761,6 +809,7 @@ class Pkg:
             prog = " ".join(prog)
         return prog
 
+
 def getInstalledPkgs(name):
     """Get list of installed package objects by name."""