File add-weak-dependencies.diff of Package rpmlint

From: Some One <nobody@opensuse.org>
Date: Thu, 9 Apr 2015 14:55:39 +0200
Subject: [PATCH] add-weak-dependencies.diff

===================================================================
---
 Pkg.py       | 29 +++++++++++++++++++++++++++--
 TagsCheck.py | 19 +++++++++++++++++++
 2 files changed, 46 insertions(+), 2 deletions(-)

diff --git a/Pkg.py b/Pkg.py
index 8884dce..360ec39 100644
--- a/Pkg.py
+++ b/Pkg.py
@@ -475,6 +475,10 @@ class Pkg(AbstractPkg):
         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:
@@ -730,6 +734,22 @@ class Pkg(AbstractPkg):
         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."""
@@ -790,7 +810,7 @@ class Pkg(AbstractPkg):
 
     # 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]
@@ -801,7 +821,11 @@ class Pkg(AbstractPkg):
                 evr = stringToVersion(b2s(versions[loop]))
                 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):
@@ -867,6 +891,7 @@ class Pkg(AbstractPkg):
         return prog
 
 
+
 def getInstalledPkgs(name):
     """Get list of installed package objects by name."""
 
diff --git a/TagsCheck.py b/TagsCheck.py
index 13dbb95..00ec2e8 100644
--- a/TagsCheck.py
+++ b/TagsCheck.py
@@ -854,8 +854,27 @@ class TagsCheck(AbstractCheck.AbstractCheck):
             value = Pkg.formatRequire(*c)
             self._unexpanded_macros(pkg, 'Conflicts %s' % (value,), value)
 
+        for i in pkg.supplements():
+            value = Pkg.formatRequire(*i)
+            self._unexpanded_macros(pkg, 'Supplements %s' % (value,), value)
+
+        for i in pkg.suggests():
+            value = Pkg.formatRequire(*i)
+            self._unexpanded_macros(pkg, 'Suggests %s' % (value,), value)
+
+        for i in pkg.enhances():
+            value = Pkg.formatRequire(*i)
+            self._unexpanded_macros(pkg, 'Enhances %s' % (value,), value)
+
+        for i in pkg.recommends():
+            value = Pkg.formatRequire(*i)
+            self._unexpanded_macros(pkg, 'Recommends %s' % (value,), value)
+
         obss = pkg.obsoletes()
         if obss:
+            for obs in obss:
+                value = Pkg.formatRequire(*obs)
+                self._unexpanded_macros(pkg, 'Obsoletes %s' % (value,), value)
             provs = pkg.provides()
             for prov in provs:
                 for obs in obss:
openSUSE Build Service is sponsored by