forked from pool/rpmlint
Accepting request 19018 from Base:System
Copy from Base:System/rpmlint based on submit request 19018 from user lnussel OBS-URL: https://build.opensuse.org/request/show/19018 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/rpmlint?expand=0&rev=44
This commit is contained in:
parent
7383a6345e
commit
773aa7d652
@ -80,7 +80,6 @@ _goodprefixes = (
|
|||||||
'/var/adm/',
|
'/var/adm/',
|
||||||
'/var/nis/',
|
'/var/nis/',
|
||||||
'/emul/',
|
'/emul/',
|
||||||
'/selinux/',
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# computed from goodprefixes.
|
# computed from goodprefixes.
|
||||||
|
@ -33,7 +33,7 @@ class PkgConfigCheck(AbstractCheck.AbstractFilesCheck):
|
|||||||
|
|
||||||
|
|
||||||
def check_file(self, pkg, filename):
|
def check_file(self, pkg, filename):
|
||||||
if pkg.isSource() or not stat.S_ISREG(pkg.files()[filename][0]):
|
if pkg.isSource() or not stat.S_ISREG(pkg.files()[filename].mode):
|
||||||
return
|
return
|
||||||
|
|
||||||
if pkg.grep(self.suspicious_dir, filename):
|
if pkg.grep(self.suspicious_dir, filename):
|
||||||
|
@ -11,7 +11,6 @@ import AbstractCheck
|
|||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
import string
|
import string
|
||||||
import pprint
|
|
||||||
|
|
||||||
_permissions_d_whitelist = (
|
_permissions_d_whitelist = (
|
||||||
"lprng",
|
"lprng",
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
--- Pkg.py
|
Index: Pkg.py
|
||||||
|
===================================================================
|
||||||
|
--- Pkg.py.orig
|
||||||
+++ Pkg.py
|
+++ Pkg.py
|
||||||
@@ -176,6 +176,10 @@ class Pkg:
|
@@ -170,6 +170,10 @@ class Pkg:
|
||||||
self._missing_ok_files=None
|
self._missingok_files = None
|
||||||
self._files=None
|
self._files = None
|
||||||
self._requires=None
|
self._requires = None
|
||||||
+ self._suggests=None
|
+ self._suggests = None
|
||||||
+ self._supplements=None
|
+ self._supplements = None
|
||||||
+ self._enhances=None
|
+ self._enhances = None
|
||||||
+ self._recommends=None
|
+ self._recommends = None
|
||||||
self._req_names=-1
|
self._req_names = -1
|
||||||
|
|
||||||
if header:
|
if header:
|
||||||
@@ -414,6 +418,22 @@ class Pkg:
|
@@ -376,6 +380,22 @@ class Pkg:
|
||||||
self._gatherDepInfo()
|
self._gatherDepInfo()
|
||||||
return self._requires
|
return self._requires
|
||||||
|
|
||||||
@ -34,23 +36,19 @@
|
|||||||
def prereq(self):
|
def prereq(self):
|
||||||
self._gatherDepInfo()
|
self._gatherDepInfo()
|
||||||
return self._prereq
|
return self._prereq
|
||||||
@@ -453,7 +473,8 @@ class Pkg:
|
@@ -406,7 +426,8 @@ class Pkg:
|
||||||
return self._provides
|
return self._provides
|
||||||
|
|
||||||
# internal function to gather dependency info used by the above ones
|
# 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):
|
||||||
+ def _gather_aux(self, header, list, nametag, versiontag, flagstag,
|
+ def _gather_aux(self, header, list, nametag, versiontag, flagstag,
|
||||||
+ prereq=None,strong_only=False,weak_only=False):
|
+ prereq = None, strong_only = False, weak_only = False):
|
||||||
names = header[nametag]
|
names = header[nametag]
|
||||||
versions = header[versiontag]
|
versions = header[versiontag]
|
||||||
flags = header[flagstag]
|
flags = header[flagstag]
|
||||||
@@ -462,10 +483,15 @@ class Pkg:
|
@@ -415,7 +436,11 @@ 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)):
|
for loop in range(len(versions)):
|
||||||
if prereq != None and flags[loop] & PREREQ_FLAG:
|
if prereq is not None and flags[loop] & PREREQ_FLAG:
|
||||||
prereq.append((names[loop], versions[loop], flags[loop] & (~PREREQ_FLAG)))
|
prereq.append((names[loop], versions[loop], flags[loop] & (~PREREQ_FLAG)))
|
||||||
- else:
|
- else:
|
||||||
+ elif strong_only and flags[loop] & rpm.RPMSENSE_STRONG:
|
+ elif strong_only and flags[loop] & rpm.RPMSENSE_STRONG:
|
||||||
@ -61,7 +59,7 @@
|
|||||||
list.append((names[loop], versions[loop], flags[loop]))
|
list.append((names[loop], versions[loop], flags[loop]))
|
||||||
|
|
||||||
def _gatherDepInfo(self):
|
def _gatherDepInfo(self):
|
||||||
@@ -475,6 +501,10 @@ class Pkg:
|
@@ -425,6 +450,10 @@ class Pkg:
|
||||||
self._provides = []
|
self._provides = []
|
||||||
self._conflicts = []
|
self._conflicts = []
|
||||||
self._obsoletes = []
|
self._obsoletes = []
|
||||||
@ -72,7 +70,7 @@
|
|||||||
|
|
||||||
self._gather_aux(self.header, self._requires,
|
self._gather_aux(self.header, self._requires,
|
||||||
rpm.RPMTAG_REQUIRENAME,
|
rpm.RPMTAG_REQUIRENAME,
|
||||||
@@ -493,6 +523,27 @@ class Pkg:
|
@@ -443,6 +472,27 @@ class Pkg:
|
||||||
rpm.RPMTAG_OBSOLETENAME,
|
rpm.RPMTAG_OBSOLETENAME,
|
||||||
rpm.RPMTAG_OBSOLETEVERSION,
|
rpm.RPMTAG_OBSOLETEVERSION,
|
||||||
rpm.RPMTAG_OBSOLETEFLAGS)
|
rpm.RPMTAG_OBSOLETEFLAGS)
|
||||||
|
@ -1,30 +1,21 @@
|
|||||||
--- SpecCheck.py
|
Index: SpecCheck.py
|
||||||
|
===================================================================
|
||||||
|
--- SpecCheck.py.orig
|
||||||
+++ SpecCheck.py
|
+++ SpecCheck.py
|
||||||
@@ -186,7 +186,7 @@
|
@@ -57,7 +57,10 @@ suse_version_regex = re.compile('%suse_v
|
||||||
lib = 0
|
section_regexs = dict(
|
||||||
if_depth = 0
|
([x, re.compile('^%' + x + '(?:\s|$)')]
|
||||||
ifarch_depth = -1
|
for x in ('build', 'changelog', 'check', 'clean', 'description', 'files',
|
||||||
- current_section = 'package'
|
- 'install', 'package', 'prep')))
|
||||||
+ current_section = 'package'
|
+ 'install', 'package', 'prep',
|
||||||
buildroot_clean={'clean':0 , 'install':0}
|
+ 'pre', 'post', 'postun', 'trigger', 'triggerin',
|
||||||
buildroot_created={'clean':False , 'install':True}
|
+ 'triggerprein', 'triggerun', 'triggerpostun',
|
||||||
depscript_override = 0
|
+ 'pretrans', 'posttrans')))
|
||||||
@@ -196,8 +196,11 @@
|
|
||||||
section = {}
|
# Only check for /lib, /usr/lib, /usr/X11R6/lib
|
||||||
buildrequires = set()
|
# TODO: better handling of X libraries and modules.
|
||||||
|
@@ -262,7 +265,9 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||||
|
|
||||||
- for sec in ['description', 'prep', 'build', 'install', 'clean',
|
|
||||||
- 'files', 'changelog', 'package', 'check']:
|
|
||||||
+ for sec in ('description', 'prep', 'build', 'install', 'clean',
|
|
||||||
+ 'files', 'changelog', 'package', 'check',
|
|
||||||
+ 'pre', 'post', 'postun', 'trigger', 'triggerin',
|
|
||||||
+ 'triggerprein', 'triggerun', 'triggerpostun',
|
|
||||||
+ 'pretrans', 'posttrans'):
|
|
||||||
section[sec] = {
|
|
||||||
'count': 0,
|
|
||||||
're': re.compile('^%' + sec + '(?:\s|$)'),
|
|
||||||
@@ -223,7 +226,9 @@
|
|
||||||
if section_marker:
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
- if current_section in ('prep', 'build'):
|
- if current_section in ('prep', 'build'):
|
||||||
|
@ -1,18 +1,20 @@
|
|||||||
--- SpecCheck.py
|
Index: SpecCheck.py
|
||||||
|
===================================================================
|
||||||
|
--- SpecCheck.py.orig
|
||||||
+++ SpecCheck.py
|
+++ SpecCheck.py
|
||||||
@@ -32,7 +32,7 @@
|
@@ -34,7 +34,7 @@ prefix_regex = re.compile('^Prefix\s*:\s
|
||||||
prefix_regex = re.compile('^Prefix\s*:\s*([^\s]+)', re.IGNORECASE)
|
|
||||||
packager_regex = re.compile('^Packager\s*:\s*([^\s]+)', re.IGNORECASE)
|
packager_regex = re.compile('^Packager\s*:\s*([^\s]+)', re.IGNORECASE)
|
||||||
make_check_regexp = re.compile('(^|\s|%{?__)make}?\s+(check|test)')
|
noarch_regex = re.compile('^BuildArch(?:itectures)?\s*:\s*\\bnoarch\\b', re.IGNORECASE)
|
||||||
|
make_check_regex = re.compile('(^|\s|%{?__)make}?\s+(check|test)')
|
||||||
-rm_regex = re.compile('(^|\s)((.*/)?rm|%{?__rm}?) ')
|
-rm_regex = re.compile('(^|\s)((.*/)?rm|%{?__rm}?) ')
|
||||||
+rm_rf_regex = re.compile('(^|\s)((.*/)?rm|%{?__rm}?) -[fF]?[rR][^/]*$')
|
+rm_rf_regex = re.compile('(^|\s)((.*/)?rm|%{?__rm}?) -[fF]?[rR][^/]*$')
|
||||||
rpm_buildroot_regex = re.compile('(\\\*)\${?RPM_BUILD_ROOT}?|(%+){?buildroot}?')
|
rpm_buildroot_regex = re.compile('(\\\*)\${?RPM_BUILD_ROOT}?|(%+){?buildroot}?')
|
||||||
configure_start_regex = re.compile('\./configure')
|
configure_start_regex = re.compile('\./configure')
|
||||||
configure_libdir_spec_regex = re.compile('ln |\./configure[^#]*--libdir=([^\s]+)[^#]*')
|
configure_libdir_spec_regex = re.compile('ln |\./configure[^#]*--libdir=([^\s]+)[^#]*')
|
||||||
@@ -119,6 +140,14 @@
|
@@ -145,6 +145,14 @@ def contains_buildroot(line):
|
||||||
return 1
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
+def contains_create_buildroot(line):
|
+def contains_create_buildroot(line):
|
||||||
+ '''Check if the line is of the form mkdir %{buildroot}.'''
|
+ '''Check if the line is of the form mkdir %{buildroot}.'''
|
||||||
+ line = line.strip()
|
+ line = line.strip()
|
||||||
@ -22,20 +24,20 @@
|
|||||||
+ return False
|
+ return False
|
||||||
+
|
+
|
||||||
class SpecCheck(AbstractCheck.AbstractCheck):
|
class SpecCheck(AbstractCheck.AbstractCheck):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -160,6 +167,7 @@
|
@@ -192,6 +200,7 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||||
ifarch_depth = -1
|
ifarch_depth = -1
|
||||||
current_section = 'package'
|
current_section = 'package'
|
||||||
buildroot_clean={'clean':0 , 'install':0}
|
buildroot_clean = {'clean': 0, 'install' : 0}
|
||||||
+ buildroot_created={'clean':False , 'install':True}
|
+ buildroot_created={'clean':False , 'install':True}
|
||||||
depscript_override = 0
|
depscript_override = 0
|
||||||
depgen_disabled = 0
|
depgen_disabled = 0
|
||||||
indent_spaces = 0
|
indent_spaces = 0
|
||||||
@@ -200,8 +208,13 @@
|
@@ -261,8 +270,13 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||||
printWarning(pkg, 'make-check-outside-check-section', line[:-1])
|
printWarning(pkg, 'make-check-outside-check-section', line[:-1])
|
||||||
|
|
||||||
if current_section in buildroot_clean.keys():
|
if current_section in buildroot_clean:
|
||||||
- if contains_buildroot(line) and rm_regex.search(line):
|
- if contains_buildroot(line) and rm_regex.search(line):
|
||||||
+ if buildroot_created[current_section] and \
|
+ if buildroot_created[current_section] and \
|
||||||
+ contains_buildroot(line) and rm_rf_regex.search(line):
|
+ contains_buildroot(line) and rm_rf_regex.search(line):
|
||||||
@ -47,7 +49,7 @@
|
|||||||
|
|
||||||
if ifarch_regex.search(line):
|
if ifarch_regex.search(line):
|
||||||
if_depth = if_depth + 1
|
if_depth = if_depth + 1
|
||||||
@@ -337,6 +350,9 @@
|
@@ -441,6 +455,9 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||||
if not buildroot_clean[sect]:
|
if not buildroot_clean[sect]:
|
||||||
printError(pkg, 'no-cleaning-of-buildroot', '%' + sect)
|
printError(pkg, 'no-cleaning-of-buildroot', '%' + sect)
|
||||||
|
|
||||||
@ -57,7 +59,7 @@
|
|||||||
if not buildroot:
|
if not buildroot:
|
||||||
printError(pkg, 'no-buildroot-tag')
|
printError(pkg, 'no-buildroot-tag')
|
||||||
|
|
||||||
@@ -483,6 +499,12 @@
|
@@ -598,6 +615,12 @@ unpacking the sources.''',
|
||||||
'''You should clean $RPM_BUILD_ROOT in the %clean section and just after the
|
'''You should clean $RPM_BUILD_ROOT in the %clean section and just after the
|
||||||
beginning of %install section. Use "rm -Rf $RPM_BUILD_ROOT".''',
|
beginning of %install section. Use "rm -Rf $RPM_BUILD_ROOT".''',
|
||||||
|
|
||||||
|
6
config
6
config
@ -220,6 +220,12 @@ addFilter("nfs-client\.\S+: \w: suse-filelist-forbidden-backup-file /var/lib/nfs
|
|||||||
addFilter("perl\.\S+: \w: suse-filelist-forbidden-perl-dir ")
|
addFilter("perl\.\S+: \w: suse-filelist-forbidden-perl-dir ")
|
||||||
addFilter("info\.\S+: \w: info-dir-file .*/usr/share/info/dir")
|
addFilter("info\.\S+: \w: info-dir-file .*/usr/share/info/dir")
|
||||||
|
|
||||||
|
# these packages are used for CD creation and are not supposed to be
|
||||||
|
# installed. It's still a dirty hack to make an exception. The
|
||||||
|
# packages should either be built in a separate project with
|
||||||
|
# different config or file be put somewhere below /opt/suse/*
|
||||||
|
addFilter("(?:dosutils|skelcd|installation-images|yast2-slide-show|instlux|skelcd-.*|patterns-.*)\.\S+: \w: suse-filelist-forbidden-fhs23 /CD1")
|
||||||
|
|
||||||
# suboptimal library packaging
|
# suboptimal library packaging
|
||||||
addFilter(" non-devel-buildrequires graphviz")
|
addFilter(" non-devel-buildrequires graphviz")
|
||||||
addFilter(" non-devel-buildrequires ImageMagick")
|
addFilter(" non-devel-buildrequires ImageMagick")
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
--- SpecCheck.py
|
Index: SpecCheck.py
|
||||||
|
===================================================================
|
||||||
|
--- SpecCheck.py.orig
|
||||||
+++ SpecCheck.py
|
+++ SpecCheck.py
|
||||||
@@ -28,7 +28,7 @@
|
@@ -29,7 +29,7 @@ applied_patch_regex = re.compile("^%patc
|
||||||
applied_patch_p_regex = re.compile("-P\s*([\d]*)")
|
applied_patch_p_regex = re.compile("\s-P\s+(\d+)\\b")
|
||||||
source_dir_regex = re.compile("^[^#]*(\$RPM_SOURCE_DIR|%{?_sourcedir}?)")
|
source_dir_regex = re.compile("^[^#]*(\$RPM_SOURCE_DIR|%{?_sourcedir}?)")
|
||||||
obsolete_tags_regex = re.compile("^(Copyright|Serial)\s*:\s*([^\s]+)")
|
obsolete_tags_regex = re.compile("^(Copyright|Serial)\s*:\s*([^\s]+)")
|
||||||
-buildroot_regex = re.compile('Buildroot\s*:\s*([^\s]+)', re.IGNORECASE)
|
-buildroot_regex = re.compile('Buildroot\s*:\s*([^\s]+)', re.IGNORECASE)
|
||||||
+buildroot_regex = re.compile('^\s*Buildroot\s*:\s*([^\s]+)', re.IGNORECASE)
|
+buildroot_regex = re.compile('^\s*Buildroot\s*:\s*([^\s]+)', re.IGNORECASE)
|
||||||
prefix_regex = re.compile('^Prefix\s*:\s*([^\s]+)', re.IGNORECASE)
|
prefix_regex = re.compile('^Prefix\s*:\s*([^\s]+)', re.IGNORECASE)
|
||||||
packager_regex = re.compile('^Packager\s*:\s*([^\s]+)', re.IGNORECASE)
|
packager_regex = re.compile('^Packager\s*:\s*([^\s]+)', re.IGNORECASE)
|
||||||
make_check_regexp = re.compile('(^|\s|%{?__)make}?\s+(check|test)')
|
noarch_regex = re.compile('^BuildArch(?:itectures)?\s*:\s*\\bnoarch\\b', re.IGNORECASE)
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
--- FilesCheck.py
|
Index: FilesCheck.py
|
||||||
|
===================================================================
|
||||||
|
--- FilesCheck.py.orig
|
||||||
+++ FilesCheck.py
|
+++ FilesCheck.py
|
||||||
@@ -948,7 +948,8 @@
|
@@ -980,7 +980,8 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||||
printWarning(pkg, 'non-executable-in-bin', f, oct(perm))
|
(includefile_regex.search(f) or \
|
||||||
if not devel_pkg and (includefile_regex.search(f) or buildconfigfile_regex.search(f)) and not is_doc:
|
develfile_regex.search(f) or is_buildconfig):
|
||||||
printWarning(pkg, 'devel-file-in-non-devel-package', f)
|
printWarning(pkg, 'devel-file-in-non-devel-package', f)
|
||||||
- if mode & 0444 != 0444 and perm & 07000 == 0 and f[0:len('/var/log')] != '/var/log':
|
- if mode & 0444 != 0444 and perm & 07000 == 0 and f[0:len('/var/log')] != '/var/log':
|
||||||
+ if mode & 0444 != 0444 and perm & 07000 == 0 and \
|
+ if mode & 0444 != 0444 and perm & 07000 == 0 and \
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
Index: Filter.py
|
Index: Filter.py
|
||||||
===================================================================
|
===================================================================
|
||||||
--- Filter.py (Revision 1434)
|
--- Filter.py.orig
|
||||||
+++ Filter.py (Arbeitskopie)
|
+++ Filter.py
|
||||||
@@ -96,10 +96,6 @@ def _diag_compare(x,y):
|
@@ -101,10 +101,6 @@ def _diag_compare(x, y):
|
||||||
|
|
||||||
|
|
||||||
def printAllReasons():
|
def printAllReasons():
|
||||||
@ -12,41 +12,40 @@ Index: Filter.py
|
|||||||
-
|
-
|
||||||
global _badness_score, _diagnostic
|
global _badness_score, _diagnostic
|
||||||
_diagnostic.sort(_diag_compare)
|
_diagnostic.sort(_diag_compare)
|
||||||
last_reason=''
|
last_reason = ''
|
||||||
@@ -114,8 +110,6 @@ def printAllReasons():
|
@@ -119,8 +115,6 @@ def printAllReasons():
|
||||||
if Config.info and len(last_reason):
|
if Config.info and len(last_reason):
|
||||||
printDescriptions(last_reason)
|
printDescriptions(last_reason)
|
||||||
_diagnostic = list()
|
_diagnostic = list()
|
||||||
- return _badness_score > threshold
|
- return _badness_score > threshold
|
||||||
-
|
-
|
||||||
|
|
||||||
_details={}
|
_details = {}
|
||||||
|
|
||||||
Index: rpmlint.py
|
Index: rpmlint.py
|
||||||
===================================================================
|
===================================================================
|
||||||
--- rpmlint.py (Revision 1434)
|
--- rpmlint.py.orig
|
||||||
+++ rpmlint.py (Arbeitskopie)
|
+++ rpmlint.py
|
||||||
@@ -155,9 +155,7 @@ def main():
|
@@ -170,15 +170,19 @@ def main():
|
||||||
sys.stderr.write('Interrupted, exiting while scanning all packages\n')
|
sys.stderr.write('(none): E: interrupted, exiting while scanning all packages\n')
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
||||||
- if printAllReasons():
|
- if printAllReasons():
|
||||||
- sys.stderr.write('rpmlint: E: badness %d exceeds threshold %d, aborting.\n' % (badnessScore(), badnessThreshold()))
|
- sys.stderr.write('(none): E: badness %d exceeds threshold %d, aborting.\n' % (badnessScore(), badnessThreshold()))
|
||||||
- sys.exit(66)
|
- sys.exit(66)
|
||||||
+ printAllReasons()
|
+ printAllReasons()
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
pkg and pkg.cleanup()
|
print "%d packages and %d specfiles checked; %d errors, %d warnings." \
|
||||||
@@ -165,6 +163,12 @@ def main():
|
|
||||||
% (packages_checked, specfiles_checked,
|
% (packages_checked, specfiles_checked,
|
||||||
printed_messages["E"], printed_messages["W"])
|
printed_messages["E"], printed_messages["W"])
|
||||||
|
|
||||||
+ if (badnessThreshold() >= 0):
|
+ if (badnessThreshold() >= 0):
|
||||||
+ if badnessScore() >= badnessThreshold():
|
+ if badnessScore() >= badnessThreshold():
|
||||||
+ sys.stderr.write('rpmlint: E: badness %d exceeds threshold %d, aborting.\n' % (badnessScore(), badnessThreshold()))
|
+ sys.stderr.write('(none): E: badness %d exceeds threshold %d, aborting.\n' % (badnessScore(), badnessThreshold()))
|
||||||
+ sys.exit(66)
|
+ sys.exit(66)
|
||||||
+ sys.exit(0)
|
+ sys.exit(0)
|
||||||
+
|
+
|
||||||
if printed_messages["E"] > 0:
|
if printed_messages["E"] > 0:
|
||||||
sys.exit(64)
|
sys.exit(64)
|
||||||
elif printed_messages["W"] > 0:
|
sys.exit(0)
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
--- FilesCheck.py
|
Index: FilesCheck.py
|
||||||
|
===================================================================
|
||||||
|
--- FilesCheck.py.orig
|
||||||
+++ FilesCheck.py
|
+++ FilesCheck.py
|
||||||
@@ -292,7 +292,7 @@
|
@@ -772,7 +772,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||||
log_file=0
|
log_file = 0
|
||||||
logrotate_file=0
|
logrotate_file = 0
|
||||||
|
|
||||||
- if not doc_files:
|
- if not doc_files:
|
||||||
+ if not lib_package and not doc_files:
|
+ if not lib_package and not doc_files:
|
||||||
printWarning(pkg, 'no-documentation')
|
printWarning(pkg, 'no-documentation')
|
||||||
|
|
||||||
if len(files.keys()) and meta_package_re.search(pkg.name):
|
if files:
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
--- TagsCheck.py
|
Index: TagsCheck.py
|
||||||
|
===================================================================
|
||||||
|
--- TagsCheck.py.orig
|
||||||
+++ TagsCheck.py
|
+++ TagsCheck.py
|
||||||
@@ -586,6 +586,8 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
@@ -601,6 +601,8 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||||
else:
|
else:
|
||||||
if VALID_GROUPS and group not in VALID_GROUPS:
|
if VALID_GROUPS and group not in VALID_GROUPS:
|
||||||
printWarning(pkg, 'non-standard-group', group)
|
printWarning(pkg, 'non-standard-group', group)
|
||||||
+ if pkg.name.find('-devel') != -1 and not group.startswith('Development/'):
|
+ if pkg.name.find('-devel') != -1 and not group.startswith('Development/'):
|
||||||
+ printWarning(pkg, 'devel-package-with-non-devel-group', group)
|
+ printWarning(pkg, 'devel-package-with-non-devel-group', group)
|
||||||
|
|
||||||
buildhost=pkg[rpm.RPMTAG_BUILDHOST]
|
buildhost = pkg[rpm.RPMTAG_BUILDHOST]
|
||||||
if not buildhost:
|
if not buildhost:
|
||||||
|
@ -1,3 +1,31 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Aug 26 09:28:14 UTC 2009 - lnussel@suse.de
|
||||||
|
|
||||||
|
- disable bogus patch to InitScriptCheck.py. Causes failures and
|
||||||
|
needs to be reworked
|
||||||
|
- fix and add weak dependencies patch again to make some suse checks
|
||||||
|
work
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Aug 26 09:08:13 UTC 2009 - lnussel@suse.de
|
||||||
|
|
||||||
|
- fix CheckPkgConfig.py to work with rpmlint 0.87
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Aug 26 07:08:03 UTC 2009 - lnussel@suse.de
|
||||||
|
|
||||||
|
- refresh some patches to remove fuzz
|
||||||
|
- BuildIgnore rpmlint-mini as it is currently broken
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Aug 24 11:56:55 UTC 2009 - lnussel@suse.de
|
||||||
|
|
||||||
|
- don't import pprint in CheckSUIDPermissions.py
|
||||||
|
- remove /selinux again. No package except 'filesystem' is supposed
|
||||||
|
to include that.
|
||||||
|
- add filter for FHS violation of skelcd type packages
|
||||||
|
- fix some more suse patches
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Aug 10 08:07:25 CEST 2009 - thomas@novell.com
|
Mon Aug 10 08:07:25 CEST 2009 - thomas@novell.com
|
||||||
|
|
||||||
|
65
rpmlint.spec
65
rpmlint.spec
@ -17,12 +17,13 @@
|
|||||||
|
|
||||||
# norootforbuild
|
# norootforbuild
|
||||||
|
|
||||||
|
#!BuildIgnore: rpmlint-mini
|
||||||
|
|
||||||
Name: rpmlint
|
Name: rpmlint
|
||||||
BuildRequires: rpm-python
|
BuildRequires: rpm-python
|
||||||
Summary: Rpm correctness checker
|
Summary: Rpm correctness checker
|
||||||
Version: 0.87
|
Version: 0.87
|
||||||
Release: 1
|
Release: 2
|
||||||
Source0: %{name}-%{version}.tar.bz2
|
Source0: %{name}-%{version}.tar.bz2
|
||||||
Source1: config
|
Source1: config
|
||||||
Source1001: config.in
|
Source1001: config.in
|
||||||
@ -72,11 +73,13 @@ Patch20: xdg-paths-update.diff
|
|||||||
Patch21: fix-buildroot-test.diff
|
Patch21: fix-buildroot-test.diff
|
||||||
Patch22: better-wrong-script.diff
|
Patch22: better-wrong-script.diff
|
||||||
Patch23: buildroot-doc.diff
|
Patch23: buildroot-doc.diff
|
||||||
|
# bogus, fails with aaa_base. disabled
|
||||||
Patch24: sysv5-init-checks.diff
|
Patch24: sysv5-init-checks.diff
|
||||||
Patch26: ignore-non-readable-in-etc.diff
|
Patch26: ignore-non-readable-in-etc.diff
|
||||||
Patch27: detailed-desktop-file-check.diff
|
Patch27: detailed-desktop-file-check.diff
|
||||||
Patch29: rpmgroup-checks.diff
|
Patch29: rpmgroup-checks.diff
|
||||||
Patch30: devel-provide-is-devel-package.diff
|
Patch30: devel-provide-is-devel-package.diff
|
||||||
|
# what's the reason behind that one?
|
||||||
Patch31: only-reg-files-are-scripts.diff
|
Patch31: only-reg-files-are-scripts.diff
|
||||||
Patch33: check-buildroot-during-install.diff
|
Patch33: check-buildroot-during-install.diff
|
||||||
Patch34: verify-buildrequires.diff
|
Patch34: verify-buildrequires.diff
|
||||||
@ -86,17 +89,18 @@ Patch39: libtool-wrapper-check.diff
|
|||||||
Patch41: perl-versioned-rpath-deps.diff
|
Patch41: perl-versioned-rpath-deps.diff
|
||||||
Patch42: check-cron-dependency.diff
|
Patch42: check-cron-dependency.diff
|
||||||
Patch46: locale-support.diff
|
Patch46: locale-support.diff
|
||||||
|
# not is also in CheckFilelist.py
|
||||||
Patch47: noarch-lib64.diff
|
Patch47: noarch-lib64.diff
|
||||||
Patch49: stricter-tags-check.diff
|
Patch49: stricter-tags-check.diff
|
||||||
Patch50: suse-no-run-ldconfig.diff
|
Patch50: suse-no-run-ldconfig.diff
|
||||||
Patch51: description-check.diff
|
Patch51: description-check.diff
|
||||||
|
# this is the wrong place here
|
||||||
Patch52: suppress-for-perl-python.diff
|
Patch52: suppress-for-perl-python.diff
|
||||||
Patch54: locale-update.diff
|
Patch54: locale-update.diff
|
||||||
Patch57: suse-mono-deps-checks.diff
|
Patch57: suse-mono-deps-checks.diff
|
||||||
Patch58: add-weak-dependencies.diff
|
Patch58: add-weak-dependencies.diff
|
||||||
Patch60: selfconflicts-provide.diff
|
Patch60: selfconflicts-provide.diff
|
||||||
Patch62: no-badness-return.diff
|
Patch62: no-badness-return.diff
|
||||||
Patch63: suse-factory-config.diff
|
|
||||||
Patch65: suse-shlib-devel-dependency.diff
|
Patch65: suse-shlib-devel-dependency.diff
|
||||||
Patch66: suse-no-python-base.diff
|
Patch66: suse-no-python-base.diff
|
||||||
Patch67: suse-required-lsb-tags.diff
|
Patch67: suse-required-lsb-tags.diff
|
||||||
@ -120,7 +124,7 @@ Authors:
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n rpmlint-%{version}
|
%setup -q -n rpmlint-%{version}
|
||||||
%patch
|
%patch0
|
||||||
%patch2
|
%patch2
|
||||||
%patch3
|
%patch3
|
||||||
%patch4
|
%patch4
|
||||||
@ -141,39 +145,40 @@ Authors:
|
|||||||
%patch21
|
%patch21
|
||||||
%patch22
|
%patch22
|
||||||
%patch23
|
%patch23
|
||||||
%patch24
|
# bogus, fails with aaa_base. disabled
|
||||||
|
#patch24
|
||||||
%patch26
|
%patch26
|
||||||
%patch27
|
%patch27
|
||||||
%patch29
|
%patch29
|
||||||
%patch30
|
%patch30
|
||||||
#%patch31
|
#patch31
|
||||||
#%patch33
|
%patch33
|
||||||
#%patch34
|
#patch34
|
||||||
#%patch35
|
#patch35
|
||||||
#%patch37
|
%patch37
|
||||||
#%patch39
|
#patch39
|
||||||
#%patch41
|
#patch41
|
||||||
#%patch42
|
#patch42
|
||||||
#%patch46
|
#patch46
|
||||||
#%patch47
|
#patch47
|
||||||
#%patch49
|
#patch49
|
||||||
%patch50
|
%patch50
|
||||||
#%patch51
|
#patch51
|
||||||
#%patch52
|
#patch52
|
||||||
%patch54
|
%patch54
|
||||||
#%patch57
|
#patch57
|
||||||
#%patch58
|
%patch58
|
||||||
#%patch60
|
#patch60
|
||||||
#%patch62
|
%patch62
|
||||||
#%patch63
|
#patch63
|
||||||
#%patch65
|
#patch65
|
||||||
#%patch66
|
#patch66
|
||||||
#%patch67
|
#patch67
|
||||||
#%patch68
|
#patch68
|
||||||
#%patch69
|
#patch69
|
||||||
#%patch70
|
#patch70
|
||||||
#%patch71
|
#patch71
|
||||||
#%patch72 -p1
|
%patch72
|
||||||
cp -p %{SOURCE1} .
|
cp -p %{SOURCE1} .
|
||||||
cp -p %{SOURCE2} .
|
cp -p %{SOURCE2} .
|
||||||
cp -p %{SOURCE3} .
|
cp -p %{SOURCE3} .
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
--- SourceCheck.py
|
Index: SourceCheck.py
|
||||||
|
===================================================================
|
||||||
|
--- SourceCheck.py.orig
|
||||||
+++ SourceCheck.py
|
+++ SourceCheck.py
|
||||||
@@ -17,7 +17,7 @@
|
@@ -17,7 +17,7 @@ import Config
|
||||||
|
|
||||||
DEFAULT_VALID_SRC_PERMS = (0644, 0755)
|
DEFAULT_VALID_SRC_PERMS = (0644, 0755)
|
||||||
|
|
||||||
@ -9,16 +11,16 @@
|
|||||||
use_bzip2 = Config.getOption('UseBzip2', 1)
|
use_bzip2 = Config.getOption('UseBzip2', 1)
|
||||||
valid_src_perms = Config.getOption("ValidSrcPerms", DEFAULT_VALID_SRC_PERMS)
|
valid_src_perms = Config.getOption("ValidSrcPerms", DEFAULT_VALID_SRC_PERMS)
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@
|
@@ -40,7 +40,7 @@ class SourceCheck(AbstractCheck.Abstract
|
||||||
printError(pkg, 'multiple-specfiles', spec_file, fname)
|
printError(pkg, 'multiple-specfiles', spec_file, fname)
|
||||||
else:
|
else:
|
||||||
spec_file = fname
|
spec_file = fname
|
||||||
- elif source_regex.search(fname):
|
- elif source_regex.search(fname):
|
||||||
+ elif source_regex.search(fname) and files[f][4] > 120*1024:
|
+ elif source_regex.search(fname) and pkgfile.size > 120*1024:
|
||||||
if use_bzip2:
|
if use_bzip2:
|
||||||
if not fname.endswith('.bz2'):
|
if not fname.endswith('.bz2'):
|
||||||
printWarning(pkg, 'source-or-patch-not-bzipped', fname)
|
printWarning(pkg, 'source-or-patch-not-bzipped', fname)
|
||||||
@@ -61,7 +61,9 @@
|
@@ -61,7 +61,9 @@ all your RPM information.''',
|
||||||
|
|
||||||
'source-or-patch-not-bzipped',
|
'source-or-patch-not-bzipped',
|
||||||
'''A source archive or file in your package is not bzipped (doesn't
|
'''A source archive or file in your package is not bzipped (doesn't
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
--- Config.py
|
Index: Config.py
|
||||||
|
===================================================================
|
||||||
|
--- Config.py.orig
|
||||||
+++ Config.py
|
+++ Config.py
|
||||||
@@ -20,7 +20,6 @@
|
@@ -20,7 +20,6 @@ DEFAULT_CHECKS = ("DistributionCheck",
|
||||||
"FilesCheck",
|
"FilesCheck",
|
||||||
"DocFilesCheck",
|
"DocFilesCheck",
|
||||||
"FHSCheck",
|
"FHSCheck",
|
||||||
- "SignatureCheck",
|
- "SignatureCheck",
|
||||||
"I18NCheck",
|
"I18NCheck",
|
||||||
"MenuCheck",
|
|
||||||
"PostCheck",
|
"PostCheck",
|
||||||
|
"InitScriptCheck",
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
--- BinariesCheck.py
|
Index: BinariesCheck.py
|
||||||
|
===================================================================
|
||||||
|
--- BinariesCheck.py.orig
|
||||||
+++ BinariesCheck.py
|
+++ BinariesCheck.py
|
||||||
@@ -36,6 +36,8 @@
|
@@ -39,6 +39,8 @@ class BinaryInfo:
|
||||||
debug_file_regex=re.compile('\.debug$')
|
debug_file_regex = re.compile('\.debug$')
|
||||||
exit_call_regex = re.compile('\s+FUNC\s+.*?\s+(_?exit(?:@\S+)?)(?:\s|$)')
|
exit_call_regex = re.compile('\s+FUNC\s+.*?\s+(_?exit(?:@\S+)?)(?:\s|$)')
|
||||||
fork_call_regex = re.compile('\s+FUNC\s+.*?\s+(fork(?:@\S+)?)(?:\s|$)')
|
fork_call_regex = re.compile('\s+FUNC\s+.*?\s+(fork(?:@\S+)?)(?:\s|$)')
|
||||||
+ debuginfo_regex=re.compile('^\s+\[\s*\d+\]\s+\.debug_.*\s+')
|
+ debuginfo_regex=re.compile('^\s+\[\s*\d+\]\s+\.debug_.*\s+')
|
||||||
@ -9,7 +11,7 @@
|
|||||||
|
|
||||||
def __init__(self, pkg, path, file, is_ar, is_shlib):
|
def __init__(self, pkg, path, file, is_ar, is_shlib):
|
||||||
self.readelf_error = 0
|
self.readelf_error = 0
|
||||||
@@ -50,6 +52,8 @@
|
@@ -53,6 +55,8 @@ class BinaryInfo:
|
||||||
self.exec_stack = 0
|
self.exec_stack = 0
|
||||||
self.exit_calls = []
|
self.exit_calls = []
|
||||||
fork_called = 0
|
fork_called = 0
|
||||||
@ -17,8 +19,8 @@
|
|||||||
+ self.symtab=0
|
+ self.symtab=0
|
||||||
self.tail = ''
|
self.tail = ''
|
||||||
|
|
||||||
is_debug=BinaryInfo.debug_file_regex.search(path)
|
is_debug = BinaryInfo.debug_file_regex.search(path)
|
||||||
@@ -102,6 +106,14 @@
|
@@ -105,6 +109,14 @@ class BinaryInfo:
|
||||||
fork_called = 1
|
fork_called = 1
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@ -31,11 +33,11 @@
|
|||||||
+ continue
|
+ continue
|
||||||
+
|
+
|
||||||
if self.non_pic:
|
if self.non_pic:
|
||||||
self.non_pic=BinaryInfo.non_pic_regex.search(res[1])
|
self.non_pic = BinaryInfo.non_pic_regex.search(res[1])
|
||||||
|
|
||||||
@@ -249,6 +261,17 @@
|
@@ -260,6 +272,17 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||||
# inspect binary file
|
bin_info = BinaryInfo(
|
||||||
bin_info=BinaryInfo(pkg, pkg.dirName()+i[0], i[0], is_ar, is_shlib)
|
pkg, pkgfile.path, fname, is_ar, is_shlib)
|
||||||
|
|
||||||
+ # stripped static library
|
+ # stripped static library
|
||||||
+ if is_ar:
|
+ if is_ar:
|
||||||
@ -50,8 +52,8 @@
|
|||||||
+
|
+
|
||||||
# so name in library
|
# so name in library
|
||||||
if is_shlib:
|
if is_shlib:
|
||||||
has_lib.append(i[0])
|
has_lib = True
|
||||||
@@ -475,6 +498,14 @@
|
@@ -488,6 +511,14 @@ with the intended shared libraries only.
|
||||||
'ldd-failed',
|
'ldd-failed',
|
||||||
'''Executing ldd on this file failed, all checks could not be run.''',
|
'''Executing ldd on this file failed, all checks could not be run.''',
|
||||||
|
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
--- rpmlint.py
|
|
||||||
+++ rpmlint.py
|
|
||||||
@@ -225,7 +225,7 @@ conf_file='~/.rpmlintrc'
|
|
||||||
info_error=0
|
|
||||||
|
|
||||||
# load global config files
|
|
||||||
-for f in ('/usr/share/rpmlint/config','/etc/rpmlint/config'):
|
|
||||||
+for f in ('/usr/share/rpmlint/config','/etc/rpmlint/config','/etc/rpmlint/factory.config'):
|
|
||||||
try:
|
|
||||||
execfile(f)
|
|
||||||
except IOError:
|
|
@ -1,6 +1,8 @@
|
|||||||
--- FilesCheck.py
|
Index: FilesCheck.py
|
||||||
|
===================================================================
|
||||||
|
--- FilesCheck.py.orig
|
||||||
+++ FilesCheck.py
|
+++ FilesCheck.py
|
||||||
@@ -26,65 +26,114 @@
|
@@ -27,65 +27,114 @@ STANDARD_DIRS = (
|
||||||
'/',
|
'/',
|
||||||
'/bin',
|
'/bin',
|
||||||
'/boot',
|
'/boot',
|
||||||
@ -142,7 +144,7 @@
|
|||||||
'/usr/local/lib',
|
'/usr/local/lib',
|
||||||
'/usr/local/lib64',
|
'/usr/local/lib64',
|
||||||
'/usr/local/man',
|
'/usr/local/man',
|
||||||
@@ -100,24 +149,415 @@
|
@@ -101,24 +150,415 @@ STANDARD_DIRS = (
|
||||||
'/usr/local/man/mann',
|
'/usr/local/man/mann',
|
||||||
'/usr/local/sbin',
|
'/usr/local/sbin',
|
||||||
'/usr/local/share',
|
'/usr/local/share',
|
||||||
@ -569,7 +571,7 @@
|
|||||||
'/usr/share/man',
|
'/usr/share/man',
|
||||||
'/usr/share/man/man1',
|
'/usr/share/man/man1',
|
||||||
'/usr/share/man/man2',
|
'/usr/share/man/man2',
|
||||||
@@ -129,28 +569,60 @@
|
@@ -130,28 +570,60 @@ STANDARD_DIRS = (
|
||||||
'/usr/share/man/man8',
|
'/usr/share/man/man8',
|
||||||
'/usr/share/man/man9',
|
'/usr/share/man/man9',
|
||||||
'/usr/share/man/mann',
|
'/usr/share/man/mann',
|
||||||
@ -635,4 +637,4 @@
|
|||||||
+ '/var/tmp/vi.recover',
|
+ '/var/tmp/vi.recover',
|
||||||
)
|
)
|
||||||
|
|
||||||
DEFAULT_GAMES_GROUPS='Games'
|
DEFAULT_GAMES_GROUPS = 'Games'
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
--- SpecCheck.py
|
Index: SpecCheck.py
|
||||||
|
===================================================================
|
||||||
|
--- SpecCheck.py.orig
|
||||||
+++ SpecCheck.py
|
+++ SpecCheck.py
|
||||||
@@ -359,6 +359,10 @@ class SpecCheck(AbstractCheck.AbstractCheck):
|
@@ -387,6 +387,10 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||||
if scriptlet_requires_regex.search(line) and current_section == 'package':
|
for obs in unversioned(deptokens(res.group(1))):
|
||||||
printError(pkg, 'broken-syntax-in-scriptlet-requires', string.strip(line))
|
printWarning(pkg, 'unversioned-explicit-obsoletes', obs)
|
||||||
|
|
||||||
+ if current_section in ('post', 'postun'):
|
+ if current_section in ('post', 'postun'):
|
||||||
+ if line.find('%run_ldconfig') != -1:
|
+ if line.find('%run_ldconfig') != -1:
|
||||||
@ -11,7 +13,7 @@
|
|||||||
if current_section == 'changelog':
|
if current_section == 'changelog':
|
||||||
res = macro_regex.search(line)
|
res = macro_regex.search(line)
|
||||||
if res and len(res.group(1)) % 2:
|
if res and len(res.group(1)) % 2:
|
||||||
@@ -572,6 +576,14 @@ will break short circuiting.''',
|
@@ -602,6 +606,14 @@ will break short circuiting.''',
|
||||||
'''Make check or other automated regression test should be run in %check, as
|
'''Make check or other automated regression test should be run in %check, as
|
||||||
they can be disabled with a rpm macro for short circuiting purposes.''',
|
they can be disabled with a rpm macro for short circuiting purposes.''',
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
also detect RCS files
|
also detect RCS files
|
||||||
Index: rpmlint-0.84/FilesCheck.py
|
Index: FilesCheck.py
|
||||||
===================================================================
|
===================================================================
|
||||||
--- rpmlint-0.84.orig/FilesCheck.py
|
--- FilesCheck.py.orig
|
||||||
+++ rpmlint-0.84/FilesCheck.py
|
+++ FilesCheck.py
|
||||||
@@ -655,7 +655,7 @@ ldconfig_regex=re.compile('^[^#]*ldconfi
|
@@ -662,7 +662,7 @@ ldconfig_regex = re.compile('^[^#]*ldcon
|
||||||
depmod_regex=re.compile('^[^#]*depmod', re.MULTILINE)
|
depmod_regex = re.compile('^[^#]*depmod', re.MULTILINE)
|
||||||
install_info_regex=re.compile('^[^#]*install-info', re.MULTILINE)
|
install_info_regex = re.compile('^[^#]*install-info', re.MULTILINE)
|
||||||
perl_temp_file=re.compile('.*perl.*/(\.packlist|perllocal\.pod)$')
|
perl_temp_file_regex = re.compile('.*perl.*/(\.packlist|perllocal\.pod)$')
|
||||||
-scm_regex=re.compile('/CVS/[^/]+$|/\.(cvs|git|hg)ignore$|/\.hgtags$|/\.(git|hg|svn)/|/(\.arch-ids|{arch})/')
|
-scm_regex = re.compile('/CVS/[^/]+$|/\.(bzr|cvs|git|hg)ignore$|/\.hgtags$|/\.(bzr|git|hg|svn)/|/(\.arch-ids|{arch})/')
|
||||||
+scm_regex=re.compile('/(CVS|RCS)(/[^/]+)?$|/\.(cvs|git|hg)ignore$|/\.hgtags$|/\.(git|hg|svn)/|/(\.arch-ids|{arch})/|,v$')
|
+scm_regex=re.compile('/(CVS|RCS)(/[^/]+)?$|/\.(bzr|cvs|git|hg)ignore$|/\.hgtags$|/\.(bzr|git|hg|svn)/|/(\.arch-ids|{arch})/|,v$')
|
||||||
htaccess_regex=re.compile('\.htaccess$')
|
games_path_regex = re.compile('^/usr(/lib(64)?)?/games/')
|
||||||
games_path_regex=re.compile('^/usr(/lib(64)?)?/games/')
|
games_group_regex = re.compile(Config.getOption('RpmGamesGroups', DEFAULT_GAMES_GROUPS))
|
||||||
games_group_regex=re.compile(Config.getOption('RpmGamesGroups', DEFAULT_GAMES_GROUPS))
|
dangling_exceptions = Config.getOption('DanglingSymlinkExceptions', DEFAULT_DANGLING_EXCEPTIONS)
|
||||||
|
Loading…
Reference in New Issue
Block a user