Move 'Dependecies' to Pkg atributes
This commit is contained in:
parent
cb916051ea
commit
af1ef113fb
|
@ -6,6 +6,6 @@ class CheckForXinetd(AbstractCheck):
|
|||
if pkg.is_source:
|
||||
return
|
||||
|
||||
for req in pkg.requires() + pkg.prereq():
|
||||
for req in pkg.requires + pkg.prereq:
|
||||
if req[0] == 'xinetd':
|
||||
self.output.add_info('E', pkg, 'obsolete-xinetd-requirement')
|
||||
|
|
|
@ -441,7 +441,7 @@ class FilesCheck(AbstractCheck):
|
|||
devel_pkg = devel_regex.search(pkg.name)
|
||||
|
||||
if not devel_pkg:
|
||||
for p in pkg.provides():
|
||||
for p in pkg.provides:
|
||||
if devel_regex.search(p[0]):
|
||||
devel_pkg = True
|
||||
break
|
||||
|
@ -559,7 +559,7 @@ class FilesCheck(AbstractCheck):
|
|||
if res.group(1) != pkg.name:
|
||||
self.output.add_info('E', pkg, 'incoherent-logrotate-file', f)
|
||||
|
||||
deps = [x[0] for x in pkg.requires() + pkg.recommends() + pkg.suggests()]
|
||||
deps = [x[0] for x in pkg.requires + pkg.recommends + pkg.suggests]
|
||||
if res and not ('logrotate' in deps) and pkg.name != 'logrotate':
|
||||
self.output.add_info('E', pkg, 'missing-dependency-to-logrotate', 'for logrotate script', f)
|
||||
if f.startswith('/etc/cron.') \
|
||||
|
|
|
@ -142,7 +142,7 @@ class I18NCheck(AbstractCheck):
|
|||
if res:
|
||||
locales = 'locales-' + res.group(1)
|
||||
if locales != name:
|
||||
if locales not in (x[0] for x in pkg.requires()):
|
||||
if locales not in (x[0] for x in pkg.requires):
|
||||
self.output.add_info('E', pkg, 'no-dependency-on', locales)
|
||||
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@ class PostCheck(AbstractCheck):
|
|||
self.output.error_details.update(post_details_dict)
|
||||
|
||||
def check_binary(self, pkg):
|
||||
prereq = [x[0] for x in pkg.prereq()]
|
||||
prereq = [x[0] for x in pkg.prereq]
|
||||
|
||||
for tag in Pkg.SCRIPT_TAGS:
|
||||
script = pkg[tag[0]]
|
||||
|
|
|
@ -16,7 +16,7 @@ class SysVInitOnSystemdCheck(AbstractCheck):
|
|||
|
||||
self._find_services_and_scripts(pkg)
|
||||
|
||||
for req in pkg.requires() + pkg.prereq():
|
||||
for req in pkg.requires + pkg.prereq:
|
||||
if req[0] == 'insserv':
|
||||
self.output.add_info('E', pkg, 'obsolete-insserv-requirement')
|
||||
|
||||
|
|
|
@ -138,7 +138,7 @@ class TagsCheck(AbstractCheck):
|
|||
Pkg.formatRequire(*x))
|
||||
|
||||
name = pkg.name
|
||||
deps = pkg.requires() + pkg.prereq()
|
||||
deps = pkg.requires + pkg.prereq
|
||||
devel_depend = False
|
||||
is_devel = FilesCheck.devel_regex.search(name)
|
||||
is_source = pkg.is_source
|
||||
|
@ -217,12 +217,12 @@ class TagsCheck(AbstractCheck):
|
|||
else:
|
||||
prov = res.group(1) + '-devel'
|
||||
|
||||
if prov not in (x[0] for x in pkg.provides()):
|
||||
if prov not in (x[0] for x in pkg.provides):
|
||||
self.output.add_info('W', pkg, 'no-provides', prov)
|
||||
|
||||
if has_pc:
|
||||
found_pkg_config_dep = False
|
||||
for p in (x[0] for x in pkg.provides()):
|
||||
for p in (x[0] for x in pkg.provides):
|
||||
if p.startswith('pkgconfig('):
|
||||
found_pkg_config_dep = True
|
||||
break
|
||||
|
@ -233,10 +233,10 @@ class TagsCheck(AbstractCheck):
|
|||
ignored_words = set()
|
||||
for pf in pkg.files:
|
||||
ignored_words.update(pf.split('/'))
|
||||
ignored_words.update((x[0] for x in pkg.provides()))
|
||||
ignored_words.update((x[0] for x in pkg.requires()))
|
||||
ignored_words.update((x[0] for x in pkg.conflicts()))
|
||||
ignored_words.update((x[0] for x in pkg.obsoletes()))
|
||||
ignored_words.update((x[0] for x in pkg.provides))
|
||||
ignored_words.update((x[0] for x in pkg.requires))
|
||||
ignored_words.update((x[0] for x in pkg.conflicts))
|
||||
ignored_words.update((x[0] for x in pkg.obsoletes))
|
||||
|
||||
langs = pkg[rpm.RPMTAG_HEADERI18NTABLE]
|
||||
|
||||
|
@ -379,12 +379,12 @@ class TagsCheck(AbstractCheck):
|
|||
elif tag == 'URL':
|
||||
self.output.add_info('W', pkg, 'no-url-tag')
|
||||
|
||||
obs_names = [x[0] for x in pkg.obsoletes()]
|
||||
prov_names = [x[0] for x in pkg.provides()]
|
||||
obs_names = [x[0] for x in pkg.obsoletes]
|
||||
prov_names = [x[0] for x in pkg.provides]
|
||||
|
||||
for o in (x for x in obs_names if x not in prov_names):
|
||||
self.output.add_info('W', pkg, 'obsolete-not-provided', o)
|
||||
for o in pkg.obsoletes():
|
||||
for o in pkg.obsoletes:
|
||||
value = Pkg.formatRequire(*o)
|
||||
self._unexpanded_macros(pkg, 'Obsoletes %s' % (value,), value)
|
||||
|
||||
|
@ -400,13 +400,13 @@ class TagsCheck(AbstractCheck):
|
|||
self.output.add_info('E', pkg, 'useless-provides', p)
|
||||
|
||||
for tagname, items in (
|
||||
('Provides', pkg.provides()),
|
||||
('Conflicts', pkg.conflicts()),
|
||||
('Obsoletes', pkg.obsoletes()),
|
||||
('Supplements', pkg.supplements()),
|
||||
('Suggests', pkg.suggests()),
|
||||
('Enhances', pkg.enhances()),
|
||||
('Recommends', pkg.recommends())):
|
||||
('Provides', pkg.provides),
|
||||
('Conflicts', pkg.conflicts),
|
||||
('Obsoletes', pkg.obsoletes),
|
||||
('Supplements', pkg.supplements),
|
||||
('Suggests', pkg.suggests),
|
||||
('Enhances', pkg.enhances),
|
||||
('Recommends', pkg.recommends)):
|
||||
for p in items:
|
||||
e = Pkg.has_forbidden_controlchars(p)
|
||||
if e:
|
||||
|
@ -417,7 +417,7 @@ class TagsCheck(AbstractCheck):
|
|||
value = Pkg.formatRequire(*p)
|
||||
self._unexpanded_macros(pkg, '%s %s' % (tagname, value), value)
|
||||
|
||||
for p in (pkg.requires()):
|
||||
for p in (pkg.requires):
|
||||
e = Pkg.has_forbidden_controlchars(p)
|
||||
if e:
|
||||
self.output.add_info('E',
|
||||
|
@ -425,9 +425,9 @@ class TagsCheck(AbstractCheck):
|
|||
'forbidden-controlchar-found',
|
||||
'Requires: %s' % e)
|
||||
|
||||
obss = pkg.obsoletes()
|
||||
obss = pkg.obsoletes
|
||||
if obss:
|
||||
provs = pkg.provides()
|
||||
provs = pkg.provides
|
||||
for prov in provs:
|
||||
for obs in obss:
|
||||
if Pkg.rangeCompare(obs, prov):
|
||||
|
|
177
rpmlint/pkg.py
177
rpmlint/pkg.py
|
@ -378,7 +378,7 @@ class Pkg(AbstractPkg):
|
|||
self.extracted = extracted
|
||||
self.dirname = self.dir_name(dirname)
|
||||
self.current_linenum = None
|
||||
self._requires = None
|
||||
|
||||
self._req_names = -1
|
||||
|
||||
if header:
|
||||
|
@ -397,6 +397,11 @@ class Pkg(AbstractPkg):
|
|||
self.is_source = not self.header[rpm.RPMTAG_SOURCERPM]
|
||||
|
||||
self.name = self[rpm.RPMTAG_NAME]
|
||||
|
||||
(self.requires, self.prereq, self.provides, self.conflicts,
|
||||
self.obsoletes, self.recommends, self.suggests, self.enhances,
|
||||
self.supplements) = self._gatherDepInfo()
|
||||
|
||||
self.files = self._gatherFilesInfo()
|
||||
self.config_files = [x.name for x in self.files.values() if x.is_config]
|
||||
self.doc_files = [x.name for x in self.files.values() if x.is_doc]
|
||||
|
@ -592,40 +597,15 @@ class Pkg(AbstractPkg):
|
|||
result = self.files.get(linkpath)
|
||||
return result
|
||||
|
||||
# API to access dependency information
|
||||
def obsoletes(self):
|
||||
"""
|
||||
Get package Obsoletes as list of
|
||||
(name, flags, (epoch, version, release)) tuples.
|
||||
"""
|
||||
self._gatherDepInfo()
|
||||
return self._obsoletes
|
||||
|
||||
def requires(self):
|
||||
"""
|
||||
Get package Requires as list of
|
||||
(name, flags, (epoch, version, release)) tuples.
|
||||
"""
|
||||
self._gatherDepInfo()
|
||||
return self._requires
|
||||
|
||||
def prereq(self):
|
||||
"""
|
||||
Get package PreReqs as list of
|
||||
(name, flags, (epoch, version, release)) tuples.
|
||||
"""
|
||||
self._gatherDepInfo()
|
||||
return self._prereq
|
||||
|
||||
def req_names(self):
|
||||
if self._req_names == -1:
|
||||
self._req_names = [x[0] for x in self.requires() + self.prereq()]
|
||||
self._req_names = [x[0] for x in self.requires + self.prereq]
|
||||
return self._req_names
|
||||
|
||||
def check_versioned_dep(self, name, version):
|
||||
# try to match name%_isa as well (e.g. 'foo(x86-64)', 'foo(x86-32)')
|
||||
name_re = re.compile(r'^%s(\(\w+-\d+\))?$' % re.escape(name))
|
||||
for d in self.requires() + self.prereq():
|
||||
for d in self.requires + self.prereq:
|
||||
if name_re.match(d[0]):
|
||||
if d[1] & rpm.RPMSENSE_EQUAL != rpm.RPMSENSE_EQUAL \
|
||||
or d[2][1] != version:
|
||||
|
@ -633,54 +613,6 @@ class Pkg(AbstractPkg):
|
|||
return True
|
||||
return False
|
||||
|
||||
def conflicts(self):
|
||||
"""
|
||||
Get package Conflicts as list of
|
||||
(name, flags, (epoch, version, release)) tuples.
|
||||
"""
|
||||
self._gatherDepInfo()
|
||||
return self._conflicts
|
||||
|
||||
def provides(self):
|
||||
"""
|
||||
Get package Provides as list of
|
||||
(name, flags, (epoch, version, release)) tuples.
|
||||
"""
|
||||
self._gatherDepInfo()
|
||||
return self._provides
|
||||
|
||||
def recommends(self):
|
||||
"""
|
||||
Get package Recommends as list of
|
||||
(name, flags, (epoch, version, release)) tuples.
|
||||
"""
|
||||
self._gatherDepInfo()
|
||||
return self._recommends
|
||||
|
||||
def suggests(self):
|
||||
"""
|
||||
Get package Suggests as list of
|
||||
(name, flags, (epoch, version, release)) tuples.
|
||||
"""
|
||||
self._gatherDepInfo()
|
||||
return self._suggests
|
||||
|
||||
def enhances(self):
|
||||
"""
|
||||
Get package Enhances as list of
|
||||
(name, flags, (epoch, version, release)) tuples.
|
||||
"""
|
||||
self._gatherDepInfo()
|
||||
return self._enhances
|
||||
|
||||
def supplements(self):
|
||||
"""
|
||||
Get package Supplements as list of
|
||||
(name, flags, (epoch, version, release)) tuples.
|
||||
"""
|
||||
self._gatherDepInfo()
|
||||
return self._supplements
|
||||
|
||||
# internal function to gather dependency info used by the above ones
|
||||
def _gather_aux(self, header, xs, nametag, flagstag, versiontag,
|
||||
prereq=None):
|
||||
|
@ -696,56 +628,55 @@ class Pkg(AbstractPkg):
|
|||
prereq.append((name, flags[loop] & (~PREREQ_FLAG), evr))
|
||||
else:
|
||||
xs.append((name, flags[loop], evr))
|
||||
return xs, prereq
|
||||
|
||||
def _gatherDepInfo(self):
|
||||
if self._requires is None:
|
||||
self._requires = []
|
||||
self._prereq = []
|
||||
self._provides = []
|
||||
self._conflicts = []
|
||||
self._obsoletes = []
|
||||
self._recommends = []
|
||||
self._suggests = []
|
||||
self._enhances = []
|
||||
self._supplements = []
|
||||
_requires = []
|
||||
_prereq = []
|
||||
_provides = []
|
||||
_conflicts = []
|
||||
_obsoletes = []
|
||||
_recommends = []
|
||||
_suggests = []
|
||||
_enhances = []
|
||||
_supplements = []
|
||||
|
||||
self._gather_aux(self.header, self._requires,
|
||||
rpm.RPMTAG_REQUIRENAME,
|
||||
rpm.RPMTAG_REQUIREFLAGS,
|
||||
rpm.RPMTAG_REQUIREVERSION,
|
||||
self._prereq)
|
||||
self._gather_aux(self.header, self._conflicts,
|
||||
rpm.RPMTAG_CONFLICTNAME,
|
||||
rpm.RPMTAG_CONFLICTFLAGS,
|
||||
rpm.RPMTAG_CONFLICTVERSION)
|
||||
self._gather_aux(self.header, self._provides,
|
||||
rpm.RPMTAG_PROVIDENAME,
|
||||
rpm.RPMTAG_PROVIDEFLAGS,
|
||||
rpm.RPMTAG_PROVIDEVERSION)
|
||||
self._gather_aux(self.header, self._obsoletes,
|
||||
rpm.RPMTAG_OBSOLETENAME,
|
||||
rpm.RPMTAG_OBSOLETEFLAGS,
|
||||
rpm.RPMTAG_OBSOLETEVERSION)
|
||||
if hasattr(rpm, 'RPMTAG_RECOMMENDNAME'): # rpm >= 4.12
|
||||
self._gather_aux(self.header, self._recommends,
|
||||
rpm.RPMTAG_RECOMMENDNAME,
|
||||
rpm.RPMTAG_RECOMMENDFLAGS,
|
||||
rpm.RPMTAG_RECOMMENDVERSION)
|
||||
if hasattr(rpm, 'RPMTAG_SUGGESTNAME'): # rpm >= 4.12
|
||||
self._gather_aux(self.header, self._suggests,
|
||||
rpm.RPMTAG_SUGGESTNAME,
|
||||
rpm.RPMTAG_SUGGESTFLAGS,
|
||||
rpm.RPMTAG_SUGGESTVERSION)
|
||||
if hasattr(rpm, 'RPMTAG_ENHANCENAME'): # rpm >= 4.12
|
||||
self._gather_aux(self.header, self._enhances,
|
||||
rpm.RPMTAG_ENHANCENAME,
|
||||
rpm.RPMTAG_ENHANCEFLAGS,
|
||||
rpm.RPMTAG_ENHANCEVERSION)
|
||||
if hasattr(rpm, 'RPMTAG_SUPPLEMENTNAME'): # rpm >= 4.12
|
||||
self._gather_aux(self.header, self._supplements,
|
||||
rpm.RPMTAG_SUPPLEMENTNAME,
|
||||
rpm.RPMTAG_SUPPLEMENTFLAGS,
|
||||
rpm.RPMTAG_SUPPLEMENTVERSION)
|
||||
_requires, _prereq = self._gather_aux(self.header, _requires,
|
||||
rpm.RPMTAG_REQUIRENAME,
|
||||
rpm.RPMTAG_REQUIREFLAGS,
|
||||
rpm.RPMTAG_REQUIREVERSION,
|
||||
_prereq)
|
||||
_conflits, _ = self._gather_aux(self.header, _conflicts,
|
||||
rpm.RPMTAG_CONFLICTNAME,
|
||||
rpm.RPMTAG_CONFLICTFLAGS,
|
||||
rpm.RPMTAG_CONFLICTVERSION)
|
||||
_provides, _ = self._gather_aux(self.header, _provides,
|
||||
rpm.RPMTAG_PROVIDENAME,
|
||||
rpm.RPMTAG_PROVIDEFLAGS,
|
||||
rpm.RPMTAG_PROVIDEVERSION)
|
||||
_obsoletes, _ = self._gather_aux(self.header, _obsoletes,
|
||||
rpm.RPMTAG_OBSOLETENAME,
|
||||
rpm.RPMTAG_OBSOLETEFLAGS,
|
||||
rpm.RPMTAG_OBSOLETEVERSION)
|
||||
_recommends, _ = self._gather_aux(self.header, _recommends,
|
||||
rpm.RPMTAG_RECOMMENDNAME,
|
||||
rpm.RPMTAG_RECOMMENDFLAGS,
|
||||
rpm.RPMTAG_RECOMMENDVERSION)
|
||||
_suggests, _ = self._gather_aux(self.header, _suggests,
|
||||
rpm.RPMTAG_SUGGESTNAME,
|
||||
rpm.RPMTAG_SUGGESTFLAGS,
|
||||
rpm.RPMTAG_SUGGESTVERSION)
|
||||
_enhances, _ = self._gather_aux(self.header, _enhances,
|
||||
rpm.RPMTAG_ENHANCENAME,
|
||||
rpm.RPMTAG_ENHANCEFLAGS,
|
||||
rpm.RPMTAG_ENHANCEVERSION)
|
||||
_supplements, _ = self._gather_aux(self.header, _supplements,
|
||||
rpm.RPMTAG_SUPPLEMENTNAME,
|
||||
rpm.RPMTAG_SUPPLEMENTFLAGS,
|
||||
rpm.RPMTAG_SUPPLEMENTVERSION)
|
||||
|
||||
return (_requires, _prereq, _provides, _conflicts, _obsoletes, _recommends,
|
||||
_suggests, _enhances, _supplements)
|
||||
|
||||
def scriptprog(self, which):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue