File add-weak-dependencies.diff of Package rpmlint

--- Pkg.py
+++ Pkg.py
@@ -176,6 +176,10 @@ class Pkg:
         self._missing_ok_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:
@@ -414,6 +418,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):
         self._gatherDepInfo()
         return self._prereq
@@ -453,7 +473,8 @@ class Pkg:
         return self._provides
 
     # internal function to gather dependency info used by the above ones
-    def _gather_aux(self, header, list, nametag, versiontag, flagstag, prereq=None):
+    def _gather_aux(self, header, list, nametag, versiontag, flagstag, 
+            prereq=None,strong_only=False,weak_only=False):
         names = header[nametag]
         versions = header[versiontag]
         flags = header[flagstag]
@@ -462,10 +483,15 @@ class Pkg:
             # workaroung buggy rpm python module that doesn't return a list
             if type(flags) != types.ListType:
                 flags=[flags]
+
             for loop in range(len(versions)):
                 if prereq != None and flags[loop] & PREREQ_FLAG:
                     prereq.append((names[loop], versions[loop], flags[loop] & (~PREREQ_FLAG)))
-                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((names[loop], versions[loop], flags[loop]))
 
     def _gatherDepInfo(self):
@@ -475,6 +501,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,
@@ -493,6 +523,27 @@ class Pkg:
                              rpm.RPMTAG_OBSOLETENAME,
                              rpm.RPMTAG_OBSOLETEVERSION,
                              rpm.RPMTAG_OBSOLETEFLAGS)
+            try:
+                self._gather_aux(self.header, self._recommends,
+                                 rpm.RPMTAG_SUGGESTSNAME,
+                                 rpm.RPMTAG_SUGGESTSVERSION,
+                                 rpm.RPMTAG_SUGGESTSFLAGS, strong_only=True)
+                self._gather_aux(self.header, self._suggests,
+                                 rpm.RPMTAG_SUGGESTSNAME,
+                                 rpm.RPMTAG_SUGGESTSVERSION,
+                                 rpm.RPMTAG_SUGGESTSFLAGS, weak_only=True)
+                self._gather_aux(self.header, self._enhances,
+                                 rpm.RPMTAG_ENHANCESNAME,
+                                 rpm.RPMTAG_ENHANCESVERSION,
+                                 rpm.RPMTAG_ENHANCESFLAGS, weak_only=True)
+                self._gather_aux(self.header, self._supplements,
+                                 rpm.RPMTAG_ENHANCESNAME,
+                                 rpm.RPMTAG_ENHANCESVERSION,
+                                 rpm.RPMTAG_ENHANCESFLAGS, strong_only=True)
+ 
+            except:
+                pass
+
 
 def getInstalledPkgs(name):
     """Get list of installed package objects by name."""
openSUSE Build Service is sponsored by