SHA256
1
0
forked from pool/rpmlint
rpmlint/add-weak-dependencies.diff
OBS User autobuild 698597df8c Accepting request 36612 from Base:System
Copy from Base:System/rpmlint based on submit request 36612 from user dirkmueller

OBS-URL: https://build.opensuse.org/request/show/36612
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/rpmlint?expand=0&rev=55
2010-04-01 14:20:38 +00:00

98 lines
3.7 KiB
Diff

--- Pkg.py
+++ Pkg.py
@@ -328,6 +328,10 @@
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:
@@ -553,6 +557,22 @@
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
@@ -586,7 +606,7 @@
# internal function to gather dependency info used by the above ones
def _gather_aux(self, header, list, nametag, versiontag, flagstag,
- prereq = None):
+ prereq = None, strong_only = False, weak_only = False):
names = header[nametag]
versions = header[versiontag]
flags = header[flagstag]
@@ -596,7 +616,11 @@
if prereq is not 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):
@@ -606,6 +630,10 @@
self._provides = []
self._conflicts = []
self._obsoletes = []
+ self._suggests = []
+ self._supplements = []
+ self._enhances = []
+ self._recommends = []
self._gather_aux(self.header, self._requires,
rpm.RPMTAG_REQUIRENAME,
@@ -624,6 +652,27 @@
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."""