From: Some One 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: