forked from pool/rpmlint
- new versioin 1.6
- add script update_git.sh based on qemu's to simplify importing a patch series from git after rebasing. * Patches dropped: 0001-Python-3-compatibility-tweaks.patch (upstream) 0001-Set-Python-3.4-magic-number-to-3310.patch (upstream) add-scoring-support.diff (different upstream solution) check-buildroot-during-install.diff (need to fix no-cleaning-of-buildroot check upstream) fix-versioned-prereq.diff (was disabled, not sure what it's useful for) ignore-non-readable-in-etc.diff (filtered anyways) locale-support.diff (drop) locale-update.diff (different upstream solution now) more-verbose-lsb-check.diff (drop) perl-versioned-rpath-deps.diff (upstream) rpmlint-1.5-disallow-var-run-and-var-lock.diff (upstream) rpmlint-1.5-Fix-setgroups-error-name.diff (upstream) rpmlint-decode-fix.diff (different upstream solution) rpmlint-fix-unexpanded-macros-for-array-values.patch (different upstream solution) stricter-tags-check.diff (merged in weak deps and check-for-self-provides.diff) suppress-for-perl-python.diff (use filter instead) suse-binary-info-compile-opts.diff (drop) suse-changelog.patch (change config instead) suse-mono-deps-checks.diff (useful?) suse-required-lsb-tags.diff (different upstream solution) verify-buildrequires.diff (very build system specific, drop) xdg-check-exception.diff (upstream) * renamed patches: script-interpreter-only-for-exec-scripts.diff -> script-interpreter-only-for-exec-sc.diff confusing-invalid-spec-name.patch OBS-URL: https://build.opensuse.org/package/show/devel:openSUSE:Factory:rpmlint/rpmlint?expand=0&rev=317
This commit is contained in:
parent
c9ee2d5aa1
commit
bda5d592a2
@ -1,40 +0,0 @@
|
||||
--- Filter.py
|
||||
+++ Filter.py
|
||||
@@ -80,23 +80,24 @@
|
||||
|
||||
def _diag_compare(x, y):
|
||||
|
||||
- where_a = x.split()[1]
|
||||
- level_a = x.split()[2]
|
||||
+ where_a = x.split()[2]
|
||||
+ level_a = x.split()[1]
|
||||
|
||||
- where_b = y.split()[1]
|
||||
- level_b = y.split()[2]
|
||||
+ where_b = y.split()[2]
|
||||
+ level_b = y.split()[1]
|
||||
|
||||
- if level_b > level_a:
|
||||
+ if (level_b > level_a):
|
||||
return 1
|
||||
- elif level_b == level_a:
|
||||
- if where_b > where_b:
|
||||
- return 1
|
||||
- elif where_b == where_a:
|
||||
- return 0
|
||||
- else:
|
||||
- return -1
|
||||
- else:
|
||||
+
|
||||
+ if (level_b < level_a):
|
||||
+ return -1
|
||||
+
|
||||
+ if (where_b < where_a):
|
||||
+ return 1
|
||||
+
|
||||
+ if (where_b > where_a):
|
||||
return -1
|
||||
+ return 0
|
||||
|
||||
|
||||
def printAllReasons():
|
@ -1,8 +1,19 @@
|
||||
Index: Pkg.py
|
||||
From 8cacb89fedba57086f1e02d326308142e6d70dbe Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] add-weak-dependencies.diff
|
||||
|
||||
===================================================================
|
||||
--- Pkg.py.orig 2014-02-21 15:11:27.194647274 +0000
|
||||
+++ Pkg.py 2014-02-21 15:13:26.205647064 +0000
|
||||
@@ -427,6 +427,10 @@ class Pkg:
|
||||
---
|
||||
Pkg.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++--
|
||||
TagsCheck.py | 19 +++++++++++++++++++
|
||||
2 files changed, 70 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Pkg.py b/Pkg.py
|
||||
index e97d7ef..cfaa5a9 100644
|
||||
--- a/Pkg.py
|
||||
+++ b/Pkg.py
|
||||
@@ -466,6 +466,10 @@ class Pkg:
|
||||
self._missingok_files = None
|
||||
self._files = None
|
||||
self._requires = None
|
||||
@ -13,7 +24,7 @@ Index: Pkg.py
|
||||
self._req_names = -1
|
||||
|
||||
if header:
|
||||
@@ -673,6 +677,22 @@ class Pkg:
|
||||
@@ -716,6 +720,22 @@ class Pkg:
|
||||
self._gatherDepInfo()
|
||||
return self._requires
|
||||
|
||||
@ -36,17 +47,17 @@ Index: Pkg.py
|
||||
def prereq(self):
|
||||
"""Get package PreReqs as list of
|
||||
(name, flags, (epoch, version, release)) tuples."""
|
||||
@@ -709,7 +729,7 @@ class Pkg:
|
||||
@@ -752,7 +772,7 @@ class Pkg:
|
||||
|
||||
# internal function to gather dependency info used by the above ones
|
||||
def _gather_aux(self, header, list, nametag, flagstag, versiontag,
|
||||
- prereq = None):
|
||||
- prereq=None):
|
||||
+ prereq = None, strong_only = False, weak_only = False):
|
||||
names = header[nametag]
|
||||
flags = header[flagstag]
|
||||
versions = header[versiontag]
|
||||
@@ -720,7 +740,11 @@ class Pkg:
|
||||
evr = stringToVersion(versions[loop].decode())
|
||||
@@ -763,7 +783,11 @@ class Pkg:
|
||||
evr = stringToVersion(b2s(versions[loop]))
|
||||
if prereq is not None and flags[loop] & PREREQ_FLAG:
|
||||
prereq.append((name, flags[loop] & (~PREREQ_FLAG), evr))
|
||||
- else:
|
||||
@ -58,7 +69,7 @@ Index: Pkg.py
|
||||
list.append((name, flags[loop], evr))
|
||||
|
||||
def _gatherDepInfo(self):
|
||||
@@ -730,6 +754,10 @@ class Pkg:
|
||||
@@ -773,6 +797,10 @@ class Pkg:
|
||||
self._provides = []
|
||||
self._conflicts = []
|
||||
self._obsoletes = []
|
||||
@ -69,7 +80,7 @@ Index: Pkg.py
|
||||
|
||||
self._gather_aux(self.header, self._requires,
|
||||
rpm.RPMTAG_REQUIRENAME,
|
||||
@@ -748,6 +776,26 @@ class Pkg:
|
||||
@@ -791,6 +819,26 @@ class Pkg:
|
||||
rpm.RPMTAG_OBSOLETENAME,
|
||||
rpm.RPMTAG_OBSOLETEFLAGS,
|
||||
rpm.RPMTAG_OBSOLETEVERSION)
|
||||
@ -96,11 +107,43 @@ Index: Pkg.py
|
||||
|
||||
def scriptprog(self, which):
|
||||
"""Get the specified script interpreter as a string.
|
||||
@@ -761,6 +809,7 @@ class Pkg:
|
||||
prog = " ".join(prog)
|
||||
return prog
|
||||
@@ -805,6 +853,7 @@ class Pkg:
|
||||
return b2s(prog)
|
||||
|
||||
|
||||
+
|
||||
def getInstalledPkgs(name):
|
||||
"""Get list of installed package objects by name."""
|
||||
|
||||
diff --git a/TagsCheck.py b/TagsCheck.py
|
||||
index bc79283..6528d5b 100644
|
||||
--- a/TagsCheck.py
|
||||
+++ b/TagsCheck.py
|
||||
@@ -853,8 +853,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:
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: FilesCheck.py
|
||||
From 386f6785bc98ee54066a85c302774c194df2510c Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] avoid-mismatched-libregex.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -607,7 +607,7 @@ buildconfig_rpath_regex = re.compile('(?
|
||||
---
|
||||
FilesCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index efda328..14cfca3 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -615,7 +615,7 @@ buildconfig_rpath_regex = re.compile('(?:-rpath|Wl,-R)\\b')
|
||||
sofile_regex = re.compile('/lib(64)?/(.+/)?lib[^/]+\.so$')
|
||||
devel_regex = re.compile('(.*)-(debug(info)?|devel|headers|source|static)$')
|
||||
debuginfo_package_regex = re.compile('-debug(info)?$')
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: FilesCheck.py
|
||||
From e89c19e2d11128280b9fc14289f69c1d785457ff Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] better-wrong-script.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -1670,7 +1670,10 @@ executed.''',
|
||||
---
|
||||
FilesCheck.py | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index 7504167..72bdf54 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -1657,7 +1657,10 @@ executed.''',
|
||||
executed.''',
|
||||
|
||||
'wrong-script-interpreter',
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: SpecCheck.py
|
||||
From b0926d6684098407592ef15e24dc83958afe4a38 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] buildroot-doc.diff
|
||||
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -647,7 +647,7 @@ versions you can ignore this warning.'''
|
||||
---
|
||||
SpecCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/SpecCheck.py b/SpecCheck.py
|
||||
index 9ea5c6e..dde66fc 100644
|
||||
--- a/SpecCheck.py
|
||||
+++ b/SpecCheck.py
|
||||
@@ -672,7 +672,7 @@ versions you can ignore this warning.''',
|
||||
|
||||
'hardcoded-path-in-buildroot-tag',
|
||||
'''A path is hardcoded in your Buildroot tag. It should be replaced
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: SpecCheck.py
|
||||
From ab1b397c298c733da39c611938be99c457a0fa9a Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] buildroot-in-scripts.diff
|
||||
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -234,7 +234,9 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||
---
|
||||
SpecCheck.py | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/SpecCheck.py b/SpecCheck.py
|
||||
index dde66fc..63897f2 100644
|
||||
--- a/SpecCheck.py
|
||||
+++ b/SpecCheck.py
|
||||
@@ -238,7 +238,9 @@ class SpecCheck(AbstractCheck.AbstractCheck):
|
||||
|
||||
continue
|
||||
|
||||
|
@ -1,74 +0,0 @@
|
||||
Index: SpecCheck.py
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -34,7 +34,7 @@ prefix_regex = re.compile('^Prefix\s*:\s
|
||||
packager_regex = re.compile('^Packager\s*:\s*([^\s]+)', re.IGNORECASE)
|
||||
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_rf_regex = re.compile('(^|\s)((.*/)?rm|%{?__rm}?) -[fF]?[rR][^/]*$')
|
||||
rpm_buildroot_regex = re.compile('(\\\*)\${?RPM_BUILD_ROOT}?|(%+){?buildroot}?')
|
||||
configure_start_regex = re.compile('\./configure')
|
||||
configure_libdir_spec_regex = re.compile('ln |\./configure[^#]*--libdir=([^\s]+)[^#]*')
|
||||
@@ -145,6 +145,14 @@ def contains_buildroot(line):
|
||||
return 0
|
||||
|
||||
|
||||
+def contains_create_buildroot(line):
|
||||
+ '''Check if the line is of the form mkdir %{buildroot}.'''
|
||||
+ line = line.strip()
|
||||
+ if contains_buildroot(line) and line.startswith("mkdir") and \
|
||||
+ not line.count("-p"):
|
||||
+ return True
|
||||
+ return False
|
||||
+
|
||||
class SpecCheck(AbstractCheck.AbstractCheck):
|
||||
|
||||
def __init__(self):
|
||||
@@ -192,6 +200,7 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||
ifarch_depth = -1
|
||||
current_section = 'package'
|
||||
buildroot_clean = {'clean': 0, 'install' : 0}
|
||||
+ buildroot_created={'clean':False , 'install':True}
|
||||
depscript_override = 0
|
||||
depgen_disabled = 0
|
||||
indent_spaces = 0
|
||||
@@ -261,8 +270,13 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||
printWarning(pkg, 'make-check-outside-check-section', line[:-1])
|
||||
|
||||
if current_section in buildroot_clean:
|
||||
- if contains_buildroot(line) and rm_regex.search(line):
|
||||
+ if buildroot_created[current_section] and \
|
||||
+ contains_buildroot(line) and rm_rf_regex.search(line):
|
||||
buildroot_clean[current_section] = 1
|
||||
+ buildroot_created[current_section] = False
|
||||
+
|
||||
+ if contains_create_buildroot(line):
|
||||
+ buildroot_created[current_section] = True
|
||||
|
||||
if ifarch_regex.search(line):
|
||||
if_depth = if_depth + 1
|
||||
@@ -441,6 +455,9 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||
if not buildroot_clean[sect]:
|
||||
printError(pkg, 'no-cleaning-of-buildroot', '%' + sect)
|
||||
|
||||
+ if buildroot_clean['install'] and not buildroot_created['install']:
|
||||
+ printError(pkg, '%install-no-mkdir-buildroot')
|
||||
+
|
||||
if not buildroot:
|
||||
printError(pkg, 'no-buildroot-tag')
|
||||
|
||||
@@ -598,6 +615,12 @@ unpacking the sources.''',
|
||||
'''You should clean $RPM_BUILD_ROOT in the %clean section and just after the
|
||||
beginning of %install section. Use "rm -Rf $RPM_BUILD_ROOT".''',
|
||||
|
||||
+'%install-no-mkdir-buildroot',
|
||||
+"""Your install section removes the buildroot but does not create them
|
||||
+afterwards in a secure way, which allows attackers to trivially play tricks
|
||||
+with symlinks on you. use mkdir %buildroot (no -p option!) or don't clean
|
||||
+the buildroot in %install, because that's anyway already done for you by rpm.""",
|
||||
+
|
||||
'rpm-buildroot-usage',
|
||||
'''$RPM_BUILD_ROOT should not be touched during %build or %prep stage, as it
|
||||
will break short circuiting.''',
|
33
check-for-self-provides.diff
Normal file
33
check-for-self-provides.diff
Normal file
@ -0,0 +1,33 @@
|
||||
From 37d58a8f4b2b3183354949ce39de151b5d449d9b Mon Sep 17 00:00:00 2001
|
||||
From: Ludwig Nussel <ludwig.nussel@suse.de>
|
||||
Date: Fri, 10 Apr 2015 14:54:18 +0200
|
||||
Subject: [PATCH] check for self provides
|
||||
|
||||
---
|
||||
TagsCheck.py | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/TagsCheck.py b/TagsCheck.py
|
||||
index 4141bbc..fa6154c 100644
|
||||
--- a/TagsCheck.py
|
||||
+++ b/TagsCheck.py
|
||||
@@ -846,6 +846,8 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
for p in pkg.provides():
|
||||
value = Pkg.formatRequire(*p)
|
||||
self._unexpanded_macros(pkg, 'Provides %s' % (value,), value)
|
||||
+ if p[0] == pkg.name and not p[1]:
|
||||
+ printError(pkg, 'unversioned-explicit-self-provides', p[0])
|
||||
|
||||
for c in pkg.conflicts():
|
||||
value = Pkg.formatRequire(*c)
|
||||
@@ -1180,6 +1182,10 @@ objects should thus not be depended on and they should not result in provides
|
||||
in the containing package. Get rid of the provides if appropriate, for example
|
||||
by filtering it out during build. Note that in some cases this may require
|
||||
disabling rpmbuild's internal dependency generator.''',
|
||||
+
|
||||
+'unversioned-explicit-self-provides',
|
||||
+'''This package provides it's own name explicitely, which might break
|
||||
+upgrade path. self-provides are autogenerated. Remove the provide.''',
|
||||
)
|
||||
|
||||
# TagsCheck.py ends here
|
@ -1,10 +1,20 @@
|
||||
Index: FilesCheck.py
|
||||
From 70e38f94218a96edac50b512807a2cd42f4de187 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:40 +0200
|
||||
Subject: [PATCH] compressed-backup-regex.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -591,7 +591,7 @@ DEFAULT_STANDARD_GROUPS = ('root', 'bin'
|
||||
---
|
||||
FilesCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index fc44b50..acb379f 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -599,7 +599,7 @@ DEFAULT_DISALLOWED_DIRS = (
|
||||
)
|
||||
|
||||
tmp_regex = re.compile('^(/var|/usr)?/tmp/')
|
||||
sub_bin_regex = re.compile('^(/usr)?/s?bin/\S+/')
|
||||
-backup_regex = re.compile('(~|\#[^/]+\#|\.orig|\.rej)$')
|
||||
+backup_regex = re.compile('(~|\#[^/]+\#|\.orig|\.orig\.gz|\.rej)$')
|
||||
|
3
config
3
config
@ -397,6 +397,9 @@ add the user to the "config" file and send a submitrequest.
|
||||
To register the group, please branch the devel:openSUSE:Factory:rpmlint rpmlint package,
|
||||
add the group to the "config" file and send a submitrequest.
|
||||
'''
|
||||
'no-changelogname-tag',
|
||||
'''There is no changelog. Please insert a '%changelog' section heading in your
|
||||
spec file and prepare your changes file using e.g. the 'osc vc' command.''',
|
||||
)
|
||||
|
||||
setOption('DanglingSymlinkExceptions',
|
||||
|
26
confusing-invalid-spec-name.diff
Normal file
26
confusing-invalid-spec-name.diff
Normal file
@ -0,0 +1,26 @@
|
||||
From f4d4e6259fe2cec6b7d111ff3fde6be3043eeda8 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] confusing-invalid-spec-name
|
||||
|
||||
# Confusing message. The problem is not that the file does not end
|
||||
# with ".spec", but that there is a mismatch of specname and pkg name.
|
||||
---
|
||||
SpecCheck.py | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/SpecCheck.py b/SpecCheck.py
|
||||
index 12b6f2b..d0d381a 100644
|
||||
--- a/SpecCheck.py
|
||||
+++ b/SpecCheck.py
|
||||
@@ -646,8 +646,8 @@ addDetails(
|
||||
SPEC file to build a valid RPM package.''',
|
||||
|
||||
'invalid-spec-name',
|
||||
-'''Your spec filename must end with '.spec'. If it's not the case, rename your
|
||||
-file and rebuild your package.''',
|
||||
+'''The spec file name (without the .spec suffix) must match the package name
|
||||
+("Name:" tag). Either rename your package or the specfile.''',
|
||||
|
||||
'non-utf8-spec-file',
|
||||
'''The character encoding of the spec file is not UTF-8. Convert it for
|
@ -1,8 +1,18 @@
|
||||
Index: TagsCheck.py
|
||||
From 7209e0c7b0d04b939753c654ca17261be41b448b Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] description-check.diff
|
||||
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -715,6 +715,9 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
---
|
||||
TagsCheck.py | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/TagsCheck.py b/TagsCheck.py
|
||||
index b1c4c7a..bc79283 100644
|
||||
--- a/TagsCheck.py
|
||||
+++ b/TagsCheck.py
|
||||
@@ -716,6 +716,9 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
else:
|
||||
for lang in langs:
|
||||
self.check_description(pkg, lang, ignored_words)
|
||||
@ -12,7 +22,7 @@ Index: TagsCheck.py
|
||||
else:
|
||||
printError(pkg, 'no-description-tag')
|
||||
|
||||
@@ -995,6 +998,10 @@ Name tag.''',
|
||||
@@ -997,6 +1000,10 @@ Name tag.''',
|
||||
'''The major number of the library isn't included in the package's name.
|
||||
''',
|
||||
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: FilesCheck.py
|
||||
From f22bf06e92c4e092b0dd71cae0bf72dcfae4de96 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] devel-provide-is-devel-package.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -807,6 +807,10 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
---
|
||||
FilesCheck.py | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index 72bdf54..ae9c364 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -829,6 +829,10 @@ class FilesCheck(AbstractCheck.AbstractCheck):
|
||||
# Check if the package is a development package
|
||||
devel_pkg = devel_regex.search(pkg.name)
|
||||
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: FilesCheck.py
|
||||
From 0375b024b39aabdb7d237d95c3163244f2f147ca Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] docdata-examples.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -601,6 +601,7 @@ bin_regex = re.compile('^/(?:usr/(?:s?bi
|
||||
---
|
||||
FilesCheck.py | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index c485125..7504167 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -609,6 +609,7 @@ bin_regex = re.compile('^/(?:usr/(?:s?bin|games)|s?bin)/(.*)')
|
||||
includefile_regex = re.compile('\.(c|h)(pp|xx)?$', re.IGNORECASE)
|
||||
develfile_regex = re.compile('\.(a|cmxa?|mli?)$')
|
||||
buildconfigfile_regex = re.compile('(\.pc|/bin/.+-config)$')
|
||||
@ -10,7 +20,7 @@ Index: FilesCheck.py
|
||||
# room for improvement with catching more -R, but also for false positives...
|
||||
buildconfig_rpath_regex = re.compile('(?:-rpath|Wl,-R)\\b')
|
||||
sofile_regex = re.compile('/lib(64)?/(.+/)?lib[^/]+\.so$')
|
||||
@@ -1158,7 +1159,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
@@ -1181,7 +1182,7 @@ class FilesCheck(AbstractCheck.AbstractCheck):
|
||||
includefile_regex.search(f) or \
|
||||
develfile_regex.search(f) or \
|
||||
logrotate_regex.search(f)
|
||||
@ -19,7 +29,7 @@ Index: FilesCheck.py
|
||||
printWarning(pkg, 'spurious-executable-perm', f)
|
||||
elif f.startswith('/etc/') and f not in config_files and \
|
||||
f not in ghost_files:
|
||||
@@ -1541,7 +1542,10 @@ included in your package.''',
|
||||
@@ -1534,7 +1535,10 @@ included in your package.''',
|
||||
'spurious-executable-perm',
|
||||
'''The file is installed with executable permissions, but was identified as one
|
||||
that probably should not be executable. Verify if the executable bits are
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: FilesCheck.py
|
||||
From 142dd63355795f86a26db29fc20917b19b57d62a Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:40 +0200
|
||||
Subject: [PATCH] extend-suse-conffiles-check.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -1179,7 +1179,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
---
|
||||
FilesCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index 0bb4b3d..fc44b50 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -1199,7 +1199,7 @@ class FilesCheck(AbstractCheck.AbstractCheck):
|
||||
if nonexec_file and not docdir_examples_regex.search(f):
|
||||
printWarning(pkg, 'spurious-executable-perm', f)
|
||||
elif f.startswith('/etc/') and f not in config_files and \
|
||||
|
@ -1,10 +1,20 @@
|
||||
Index: Filter.py
|
||||
From 650e2106a909706246d910463d52a59dfa75b2f4 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] filename-non-utf8-exception.diff
|
||||
|
||||
===================================================================
|
||||
--- Filter.py.orig
|
||||
+++ Filter.py
|
||||
---
|
||||
Filter.py | 10 ++--------
|
||||
1 file changed, 2 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/Filter.py b/Filter.py
|
||||
index 40fbf79..37ba038 100644
|
||||
--- a/Filter.py
|
||||
+++ b/Filter.py
|
||||
@@ -23,14 +23,8 @@ _diagnostic = list()
|
||||
_badness_score = 0
|
||||
printed_messages = { "I": 0, "W": 0, "E": 0 }
|
||||
printed_messages = {"I": 0, "W": 0, "E": 0}
|
||||
|
||||
-if sys.stdout.isatty():
|
||||
- def __print(s):
|
||||
@ -17,5 +27,5 @@ Index: Filter.py
|
||||
+def __print(s):
|
||||
+ print(s)
|
||||
|
||||
|
||||
def printInfo(pkg, reason, *details):
|
||||
_print("I", pkg, reason, details)
|
||||
|
@ -1,26 +0,0 @@
|
||||
--- Pkg.py
|
||||
+++ Pkg.py
|
||||
@@ -403,10 +403,19 @@
|
||||
current_version=d[1]
|
||||
if current_version.find(':') > 0:
|
||||
current_version=''.join(current_version.split(':')[1:])
|
||||
- if d[2] & rpm.RPMSENSE_EQUAL != rpm.RPMSENSE_EQUAL or current_version != version:
|
||||
- return 0
|
||||
- else:
|
||||
- return 1
|
||||
+
|
||||
+ if d[2] & rpm.RPMSENSE_EQUAL:
|
||||
+ if current_version == version:
|
||||
+ return 1
|
||||
+
|
||||
+ if d[2] & rpm.RPMSENSE_GREATER:
|
||||
+ if current_version.count('.') > version.count('.'):
|
||||
+ current_version = '.'.join(current_version.split('.')[0:version.count('.')])
|
||||
+
|
||||
+ if current_version == version:
|
||||
+ return 1
|
||||
+
|
||||
+ return 0
|
||||
return 0
|
||||
|
||||
def conflicts(self):
|
@ -1,14 +0,0 @@
|
||||
Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -980,7 +980,8 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
(includefile_regex.search(f) or \
|
||||
develfile_regex.search(f) or is_buildconfig):
|
||||
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 \
|
||||
+ not f.startswith('/var/log/') and not f.startswith('/etc/'):
|
||||
printError(pkg, 'non-readable', f, oct(perm))
|
||||
if size == 0 and not normal_zero_length_regex.search(f) and f not in ghost_files:
|
||||
printError(pkg, 'zero-length', f)
|
@ -1,8 +1,18 @@
|
||||
Index: TagsCheck.py
|
||||
From 7f031242ba0f3d31440bf5c0ecdcd6915c0ffab1 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:40 +0200
|
||||
Subject: [PATCH] invalid-filerequires.diff
|
||||
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -421,6 +421,7 @@ invalid_version_regex = re.compile('([0-
|
||||
---
|
||||
TagsCheck.py | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/TagsCheck.py b/TagsCheck.py
|
||||
index 3c68d28..4141bbc 100644
|
||||
--- a/TagsCheck.py
|
||||
+++ b/TagsCheck.py
|
||||
@@ -422,6 +422,7 @@ invalid_version_regex = re.compile('([0-9](?:rc|alpha|beta|pre).*)', re.IGNORECA
|
||||
# () are here for grouping purpose in the regexp
|
||||
forbidden_words_regex = re.compile('(' + Config.getOption('ForbiddenWords') + ')', re.IGNORECASE)
|
||||
valid_buildhost_regex = re.compile(Config.getOption('ValidBuildHost'))
|
||||
@ -10,7 +20,7 @@ Index: TagsCheck.py
|
||||
use_epoch = Config.getOption('UseEpoch', False)
|
||||
use_utf8 = Config.getOption('UseUTF8', Config.USEUTF8_DEFAULT)
|
||||
max_line_len = Config.getOption('MaxLineLength', 79)
|
||||
@@ -599,6 +600,9 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -602,6 +603,9 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
if d[0].startswith('/usr/local/'):
|
||||
printError(pkg, 'invalid-dependency', d[0])
|
||||
|
||||
@ -20,7 +30,7 @@ Index: TagsCheck.py
|
||||
if is_source:
|
||||
if lib_devel_number_regex.search(d[0]):
|
||||
printError(pkg, 'invalid-build-requires', d[0])
|
||||
@@ -1106,6 +1110,12 @@ explicit Requires: tags.''',
|
||||
@@ -1127,6 +1131,12 @@ unneeded explicit Requires: tags.''',
|
||||
'''This package provides 2 times the same capacity. It should only provide it
|
||||
once.''',
|
||||
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: BinariesCheck.py
|
||||
From aa956808bc3b035e80a77904d8c8d125de311fb8 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] libtool-wrapper-check.diff
|
||||
|
||||
===================================================================
|
||||
--- BinariesCheck.py.orig
|
||||
+++ BinariesCheck.py
|
||||
@@ -313,8 +313,19 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
---
|
||||
BinariesCheck.py | 20 ++++++++++++++++++++
|
||||
1 file changed, 20 insertions(+)
|
||||
|
||||
diff --git a/BinariesCheck.py b/BinariesCheck.py
|
||||
index c1c566d..b92c01e 100644
|
||||
--- a/BinariesCheck.py
|
||||
+++ b/BinariesCheck.py
|
||||
@@ -316,8 +316,19 @@ class BinariesCheck(AbstractCheck.AbstractCheck):
|
||||
is_ar = 'current ar archive' in pkgfile.magic
|
||||
is_ocaml_native = 'Objective caml native' in pkgfile.magic
|
||||
is_lua_bytecode = 'Lua bytecode' in pkgfile.magic
|
||||
@ -22,7 +32,7 @@ Index: BinariesCheck.py
|
||||
if not is_binary:
|
||||
if reference_regex.search(fname):
|
||||
lines = pkg.grep(invalid_dir_ref_regex, fname)
|
||||
@@ -572,6 +583,15 @@ recompiled separately from the static li
|
||||
@@ -579,6 +590,15 @@ recompiled separately from the static libraries with the -fPIC option.
|
||||
Another common mistake that causes this problem is linking with
|
||||
``gcc -Wl,-shared'' instead of ``gcc -shared''.''',
|
||||
|
||||
|
@ -1,19 +0,0 @@
|
||||
--- rpmlint.py
|
||||
+++ rpmlint.py
|
||||
@@ -16,6 +16,7 @@ import Pkg
|
||||
import Config
|
||||
import os
|
||||
import stat
|
||||
+import locale
|
||||
import rpm
|
||||
from Filter import *
|
||||
import SpecCheck
|
||||
@@ -42,6 +43,8 @@ def loadCheck(name):
|
||||
# main program
|
||||
#############################################################################
|
||||
def main():
|
||||
+
|
||||
+ locale.setlocale(locale.LC_ALL, '')
|
||||
# Load all the tests
|
||||
for c in Config.allChecks():
|
||||
loadCheck(c)
|
@ -1,34 +0,0 @@
|
||||
Index: I18NCheck.py
|
||||
===================================================================
|
||||
--- I18NCheck.py.orig
|
||||
+++ I18NCheck.py
|
||||
@@ -38,22 +38,22 @@ INCORRECT_LOCALES = {
|
||||
#
|
||||
# 'en_RN' and 'en@IPA' are not real language bu funny variations on english
|
||||
CORRECT_SUBDIRS = (
|
||||
-'af', 'am', 'ang', 'ar', 'as', 'az', 'az_IR', 'be', 'bg', 'bn', 'bn_IN', 'br',
|
||||
-'bs', 'ca', 'cs', 'cy', 'da', 'de', 'de_AT', 'dz', 'el',
|
||||
+'af', 'am', 'ang', 'ar', 'as', 'az', 'az_IR', 'be', 'be@latin', 'bg', 'bn', 'bn_IN', 'br',
|
||||
+'bs', 'ca', 'ca@valencia', 'cs', 'cy', 'da', 'de', 'de_AT', 'dz', 'el',
|
||||
'en_AU', 'en_CA', 'en_GB', 'en_IE', 'en_US', 'en_RN', 'en@IPA',
|
||||
'eo', 'es', 'es_AR', 'es_ES', 'es_DO', 'es_GT', 'es_HN', 'es_SV', 'es_PE',
|
||||
'es_PA', 'es_MX', 'et', 'eu',
|
||||
'fa', 'fi', 'fo', 'fr', 'fur', 'ga', 'gd', 'gl', 'gn', 'gu', 'gv',
|
||||
'he', 'hi', 'hr', 'hu', 'hy',
|
||||
-'ia', 'id', 'is', 'it', 'iu', 'ja', 'ka', 'kl', 'km', 'kn', 'ko', 'ku', 'kw',
|
||||
+'ia', 'id', 'io', 'is', 'it', 'iu', 'ja', 'ka', 'kl', 'km', 'kn', 'ko', 'ku', 'kw',
|
||||
# 'ltg' is not a standard ISO code; latgalian hasn't yet an ISO code
|
||||
-'ky', 'lg', 'li', 'lo', 'lt', 'ltg', 'lv',
|
||||
+'ky', 'lg', 'li', 'lo', 'lt', 'ltg', 'lv', 'mai', 'md',
|
||||
'mg', 'mi', 'mk', 'ml', 'mn', 'mr', 'ms', 'mt', 'my',
|
||||
'nb', 'nds', 'nds_DE', 'ne', 'nl', 'nn', 'no', 'nr', 'nso',
|
||||
-'oc', 'or', 'pa_IN', 'ph', 'pl', 'pp', 'pt', 'pt_BR', 'qu', 'ro', 'ru', 'rw',
|
||||
-'sc', 'se', 'si', 'sk', 'sl', 'sq', 'sr', 'sr@Latn', 'sr@ije', 'ss', 'st',
|
||||
+'oc', 'or', 'pa_IN', 'ph', 'pl', 'pp', 'ps', 'pt', 'pt_BR', 'qu', 'ro', 'ru', 'rw',
|
||||
+'sc', 'se', 'si', 'sk', 'sl', 'sq', 'sr', 'sr@latin', 'sr@ije', 'ss', 'st',
|
||||
'sv', 'ta', 'te', 'tg', 'th', 'tk', 'tl', 'tn', 'tr', 'ts', 'tt',
|
||||
-'ug', 'uk', 'ur', 'uz', 'uz@Latn',
|
||||
+'ug', 'uk', 'ur', 'uz', 'uz@cyrillic',
|
||||
've', 'vi', 'wa', 'wen', 'xh', 'yi', 'yo', 'zh_CN', 'zh_HK', 'zh_TW', 'zu',
|
||||
# KDE uses 'ven' for 've'
|
||||
'ven',
|
@ -1,30 +0,0 @@
|
||||
--- InitScriptCheck.py
|
||||
+++ InitScriptCheck.py
|
||||
@@ -101,7 +101,7 @@ class InitScriptCheck(AbstractCheck.AbstractCheck):
|
||||
in_lsb_tag = 0
|
||||
for i in lsb_tags.keys():
|
||||
if len(lsb_tags[i]) != 1:
|
||||
- printError(pkg, 'redundant-lsb-keyword', i)
|
||||
+ printError(pkg, 'redundant-lsb-keyword', "'%s' in %s" % (i, f))
|
||||
|
||||
# TODO: where is it specified that these (or some)
|
||||
# keywords are mandatory?
|
||||
@@ -118,7 +118,7 @@ class InitScriptCheck(AbstractCheck.AbstractCheck):
|
||||
cres = lsb_cont_regex.search(line)
|
||||
if not (in_lsb_description and cres):
|
||||
in_lsb_description = 0
|
||||
- printError(pkg, 'malformed-line-in-lsb-comment-block', line)
|
||||
+ printError(pkg, 'malformed-line-in-lsb-comment-block', "'%s' in %s" % (line,f))
|
||||
else:
|
||||
lsb_tags["Description"][-1] += " " + cres.group(1)
|
||||
else:
|
||||
@@ -127,7 +127,7 @@ class InitScriptCheck(AbstractCheck.AbstractCheck):
|
||||
tag not in ('Provides', 'Required-Start', 'Required-Stop',
|
||||
'Should-Stop', 'Should-Start', 'Default-Stop',
|
||||
'Default-Start', 'Description', 'Short-Description'):
|
||||
- printError(pkg, 'unknown-lsb-keyword', line)
|
||||
+ printError(pkg, 'unknown-lsb-keyword', "'%s' in %s" % (line, f))
|
||||
else:
|
||||
in_lsb_description = (tag == 'Description')
|
||||
if not tag in lsb_tags.keys():
|
||||
|
@ -1,8 +1,19 @@
|
||||
Index: Filter.py
|
||||
From a6b4dc66618b5284b1e705393111cb26092009d6 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] no-badness-return.diff
|
||||
|
||||
===================================================================
|
||||
--- Filter.py.orig
|
||||
+++ Filter.py
|
||||
@@ -113,7 +113,7 @@ def printAllReasons():
|
||||
---
|
||||
Filter.py | 2 +-
|
||||
rpmlint | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Filter.py b/Filter.py
|
||||
index eaa8384..40fbf79 100644
|
||||
--- a/Filter.py
|
||||
+++ b/Filter.py
|
||||
@@ -120,7 +120,7 @@ def printAllReasons():
|
||||
if len(last_reason):
|
||||
printDescriptions(last_reason)
|
||||
last_reason = reason
|
||||
@ -11,11 +22,11 @@ Index: Filter.py
|
||||
if Config.info and len(last_reason):
|
||||
printDescriptions(last_reason)
|
||||
_diagnostic = list()
|
||||
Index: rpmlint
|
||||
===================================================================
|
||||
--- rpmlint.orig
|
||||
+++ rpmlint
|
||||
@@ -214,7 +214,7 @@ def main():
|
||||
diff --git a/rpmlint b/rpmlint
|
||||
index aa37c3a..8853e79 100755
|
||||
--- a/rpmlint
|
||||
+++ b/rpmlint
|
||||
@@ -202,7 +202,7 @@ def main():
|
||||
% (packages_checked, specfiles_checked,
|
||||
printed_messages["E"], printed_messages["W"]))
|
||||
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: FilesCheck.py
|
||||
From 2c88f9b0eb575a7f528d12863f3af6077664f3c8 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] no-doc-for-lib.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -823,7 +823,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
---
|
||||
FilesCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index 9532011..5929146 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -846,7 +846,7 @@ class FilesCheck(AbstractCheck.AbstractCheck):
|
||||
debuginfo_srcs = False
|
||||
debuginfo_debugs = False
|
||||
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: BinariesCheck.py
|
||||
From 8a5d81397414727ae834415be81619f2fc92b525 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] noarch-lib64.diff
|
||||
|
||||
===================================================================
|
||||
--- BinariesCheck.py.orig
|
||||
+++ BinariesCheck.py
|
||||
@@ -291,6 +291,7 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
---
|
||||
BinariesCheck.py | 15 ++++++++++++++-
|
||||
1 file changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/BinariesCheck.py b/BinariesCheck.py
|
||||
index b92c01e..aff0f9f 100644
|
||||
--- a/BinariesCheck.py
|
||||
+++ b/BinariesCheck.py
|
||||
@@ -294,6 +294,7 @@ class BinariesCheck(AbstractCheck.AbstractCheck):
|
||||
binary = False
|
||||
binary_in_usr_lib = False
|
||||
has_usr_lib_file = False
|
||||
@ -10,7 +20,7 @@ Index: BinariesCheck.py
|
||||
|
||||
multi_pkg = False
|
||||
srpm = pkg[rpm.RPMTAG_SOURCERPM]
|
||||
@@ -309,6 +310,10 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
@@ -312,6 +313,10 @@ class BinariesCheck(AbstractCheck.AbstractCheck):
|
||||
# only-non-binary-in-usr-lib false positives
|
||||
binary_in_usr_lib = True
|
||||
|
||||
@ -21,7 +31,7 @@ Index: BinariesCheck.py
|
||||
is_elf = 'ELF' in pkgfile.magic
|
||||
is_ar = 'current ar archive' in pkgfile.magic
|
||||
is_ocaml_native = 'Objective caml native' in pkgfile.magic
|
||||
@@ -534,9 +539,12 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
@@ -541,9 +546,12 @@ class BinariesCheck(AbstractCheck.AbstractCheck):
|
||||
if version and version != -1 and version not in pkg.name:
|
||||
printError(pkg, 'incoherent-version-in-name', version)
|
||||
|
||||
@ -35,7 +45,7 @@ Index: BinariesCheck.py
|
||||
if has_usr_lib_file and not binary_in_usr_lib:
|
||||
printWarning(pkg, 'only-non-binary-in-usr-lib')
|
||||
|
||||
@@ -560,6 +568,11 @@ FHS and the FSSTND forbid this.''',
|
||||
@@ -567,6 +575,11 @@ FHS and the FSSTND forbid this.''',
|
||||
# 'non-sparc32-binary',
|
||||
# '',
|
||||
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: InitScriptCheck.py
|
||||
From b4792fd36155f64d0ce8b02c12d68535411d7770 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] only-reg-files-are-scripts.diff
|
||||
|
||||
===================================================================
|
||||
--- InitScriptCheck.py.orig
|
||||
+++ InitScriptCheck.py
|
||||
@@ -18,7 +18,7 @@ from Filter import addDetails, printErro
|
||||
---
|
||||
InitScriptCheck.py | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/InitScriptCheck.py b/InitScriptCheck.py
|
||||
index 5d851d4..fb53d93 100644
|
||||
--- a/InitScriptCheck.py
|
||||
+++ b/InitScriptCheck.py
|
||||
@@ -18,7 +18,7 @@ from Filter import addDetails, printError, printWarning
|
||||
import AbstractCheck
|
||||
import Config
|
||||
import Pkg
|
||||
@ -11,7 +21,7 @@ Index: InitScriptCheck.py
|
||||
|
||||
chkconfig_content_regex = re.compile('^\s*#\s*chkconfig:\s*([-0-9]+)\s+[-0-9]+\s+[-0-9]+')
|
||||
subsys_regex = re.compile('/var/lock/subsys/([^/"\'\n\s;&|]+)', re.MULTILINE)
|
||||
@@ -64,6 +64,9 @@ class InitScriptCheck(AbstractCheck.Abst
|
||||
@@ -50,6 +50,9 @@ class InitScriptCheck(AbstractCheck.AbstractCheck):
|
||||
not fname.startswith('/etc/rc.d/init.d/'):
|
||||
continue
|
||||
|
||||
|
@ -1,27 +0,0 @@
|
||||
--- BinariesCheck.py
|
||||
+++ BinariesCheck.py
|
||||
@@ -119,6 +119,8 @@
|
||||
sparc_regex=re.compile('SPARC32PLUS|SPARC V9|UltraSPARC')
|
||||
system_lib_paths=Config.getOption('SystemLibPaths', DEFAULT_SYSTEM_LIB_PATHS)
|
||||
usr_lib_regex=re.compile('^/usr/lib(64)?/')
|
||||
+lib_perl_regex=re.compile('^/usr/lib/perl5/(?:vendor_perl/)?([0-9]+\.[0-9]+)\.([0-9]+)/')
|
||||
+perl_version_trick=Config.getOption('PerlVersionTrick', 1)
|
||||
bin_regex=re.compile('^(/usr(/X11R6)?)?/s?bin/')
|
||||
soversion_regex=re.compile('.*?([0-9][.0-9]*)\\.so|.*\\.so\\.([0-9][.0-9]*).*')
|
||||
reference_regex=re.compile('\.la$|^/usr/lib(64)?/pkgconfig/')
|
||||
@@ -234,7 +236,14 @@
|
||||
if p in system_lib_paths or \
|
||||
not usr_lib_regex.search(p):
|
||||
printError(pkg, 'binary-or-shlib-defines-rpath', i[0], bin_info.rpath)
|
||||
- break
|
||||
+ res=lib_perl_regex.search(p)
|
||||
+ if res:
|
||||
+ if perl_version_trick:
|
||||
+ vers = res.group(1) + '.' + res.group(2)
|
||||
+ else:
|
||||
+ vers = res.group(1) + res.group(2)
|
||||
+ if not (pkg.check_versioned_dep('perl', vers)):
|
||||
+ printError(pkg, "no-dependency-on", "perl", vers)
|
||||
|
||||
# statically linked ?
|
||||
is_exec=executable_regex.search(i[1])
|
@ -1,14 +1,22 @@
|
||||
From 40b4e731258c4e03f298f27691e22ae4ca650ebb Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:40 +0200
|
||||
Subject: [PATCH] remove-expand-macros.diff
|
||||
|
||||
commit 29e43a3e1676aa452f730a741d00ef4ac7baec96
|
||||
Author: Ludwig Nussel <ludwig.nussel@suse.de>
|
||||
Date: Tue May 17 12:56:38 2011 +0200
|
||||
|
||||
remove-expand-macros.diff
|
||||
---
|
||||
TagsCheck.py | 27 ---------------------------
|
||||
1 file changed, 27 deletions(-)
|
||||
|
||||
Index: TagsCheck.py
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -431,15 +431,6 @@ so_dep_regex = re.compile(r'\.so(\.[0-9a
|
||||
diff --git a/TagsCheck.py b/TagsCheck.py
|
||||
index fc392e5..40ce77a 100644
|
||||
--- a/TagsCheck.py
|
||||
+++ b/TagsCheck.py
|
||||
@@ -432,15 +432,6 @@ so_dep_regex = re.compile(r'\.so(\.[0-9a-zA-z]+)*(\([^)]*\))*$')
|
||||
# we assume that no rpm packages existed before rpm itself existed...
|
||||
oldest_changelog_timestamp = calendar.timegm(time.strptime("1995-01-01", "%Y-%m-%d"))
|
||||
|
||||
@ -22,11 +30,11 @@ Index: TagsCheck.py
|
||||
- private_so_paths.add(re.sub(r'/lib(?=/|$)', '/lib64', epath))
|
||||
-
|
||||
_enchant_checkers = {}
|
||||
def spell_check(pkg, str, fmt, lang, ignored):
|
||||
|
||||
@@ -864,30 +855,12 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
(apply(Pkg.formatRequire, obs),
|
||||
apply(Pkg.formatRequire, prov)))
|
||||
|
||||
@@ -886,30 +877,12 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
(Pkg.formatRequire(*obs),
|
||||
Pkg.formatRequire(*prov)))
|
||||
|
||||
- expfmt = rpm.expandMacro("%{_build_name_fmt}")
|
||||
- if pkg.isSource():
|
||||
@ -41,8 +49,8 @@ Index: TagsCheck.py
|
||||
for tag in ('Distribution', 'DistTag', 'ExcludeArch', 'ExcludeOS',
|
||||
'Vendor'):
|
||||
if hasattr(rpm, 'RPMTAG_%s' % tag.upper()):
|
||||
self._unexpanded_macros(
|
||||
pkg, tag, pkg[getattr(rpm, 'RPMTAG_%s' % tag.upper())])
|
||||
self._unexpanded_macros(pkg, tag,
|
||||
Pkg.b2s(pkg[getattr(rpm, 'RPMTAG_%s' % tag.upper())]))
|
||||
|
||||
- for path in private_so_paths:
|
||||
- for fname, pkgfile in pkg.files().items():
|
||||
@ -50,8 +58,8 @@ Index: TagsCheck.py
|
||||
- for prov in pkgfile.provides:
|
||||
- if so_dep_regex.search(prov[0]):
|
||||
- printWarning(pkg, "private-shared-object-provides",
|
||||
- fname, apply(Pkg.formatRequire, prov))
|
||||
- fname, Pkg.formatRequire(*prov))
|
||||
-
|
||||
|
||||
def check_description(self, pkg, lang, ignored_words):
|
||||
description = pkg.langtag(rpm.RPMTAG_DESCRIPTION, lang)
|
||||
self._unexpanded_macros(pkg, '%%description -l %s' % lang, description)
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: TagsCheck.py
|
||||
From e64c8d7222e0e6418f3dff1cdd2229a5c47286dd Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] rpmgroup-checks.diff
|
||||
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -722,6 +722,8 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
---
|
||||
TagsCheck.py | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/TagsCheck.py b/TagsCheck.py
|
||||
index 9e00892..b1c4c7a 100644
|
||||
--- a/TagsCheck.py
|
||||
+++ b/TagsCheck.py
|
||||
@@ -723,6 +723,8 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
self._unexpanded_macros(pkg, 'Group', group)
|
||||
if not group:
|
||||
printError(pkg, 'no-group-tag')
|
||||
@ -11,7 +21,7 @@ Index: TagsCheck.py
|
||||
elif VALID_GROUPS and group not in VALID_GROUPS:
|
||||
printWarning(pkg, 'non-standard-group', group)
|
||||
|
||||
@@ -1034,6 +1036,10 @@ won't fool the specfile parser, and rebu
|
||||
@@ -1036,6 +1038,10 @@ won't fool the specfile parser, and rebuild the package.''',
|
||||
'''There is no Group tag in your package. You have to specify a valid group
|
||||
in your spec file using the Group tag.''',
|
||||
|
||||
|
@ -1,22 +0,0 @@
|
||||
From e6c176c7d03f377e55d405ebe5d0368f688426c7 Mon Sep 17 00:00:00 2001
|
||||
From: Orion Poplawski <orion@nwra.com>
|
||||
Date: Thu, 11 Jul 2013 12:29:34 -0600
|
||||
Subject: [PATCH] Fix setgroups error name
|
||||
|
||||
---
|
||||
BinariesCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: rpmlint-1.5/BinariesCheck.py
|
||||
===================================================================
|
||||
--- rpmlint-1.5.orig/BinariesCheck.py
|
||||
+++ rpmlint-1.5/BinariesCheck.py
|
||||
@@ -518,7 +518,7 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
printError(pkg, 'missing-PT_GNU_STACK-section', fname)
|
||||
|
||||
if bin_info.setgid and bin_info.setuid and not bin_info.setgroups:
|
||||
- printError(pkg, 'missing-call-to-setgroups', fname)
|
||||
+ printError(pkg, 'missing-call-to-setgroups-before-setuid', fname)
|
||||
|
||||
if bin_info.chroot:
|
||||
if not bin_info.chdir or not bin_info.chroot_near_chdir:
|
@ -1,165 +0,0 @@
|
||||
From c45057466e8e40bbb36fa90faa10a2b678c25ba2 Mon Sep 17 00:00:00 2001
|
||||
From: Ludwig Nussel <ludwig.nussel@suse.de>
|
||||
Date: Wed, 30 Apr 2014 16:35:20 +0200
|
||||
Subject: [PATCH rpmlint] disallow /var/run and /var/lock
|
||||
|
||||
Distros moved to having /var/run and /var/lock as symlinks to /run resp
|
||||
/run/lock. Therefore packages must no longer put files there at all.
|
||||
|
||||
Also, refactor the code for dir-or-file-in-* and make it configurable.
|
||||
---
|
||||
FilesCheck.py | 77 +++++++++++++++++++++++------------------------------------
|
||||
config | 4 ++++
|
||||
2 files changed, 34 insertions(+), 47 deletions(-)
|
||||
|
||||
Index: rpmlint-1.5/FilesCheck.py
|
||||
===================================================================
|
||||
--- rpmlint-1.5.orig/FilesCheck.py
|
||||
+++ rpmlint-1.5/FilesCheck.py
|
||||
@@ -559,12 +559,9 @@ STANDARD_DIRS = (
|
||||
'/var/lib/nobody',
|
||||
'/var/lib/pam_devperm',
|
||||
'/var/lib/wwwrun',
|
||||
- '/var/lock',
|
||||
- '/var/lock/subsys',
|
||||
'/var/log',
|
||||
'/var/mail',
|
||||
'/var/opt',
|
||||
- '/var/run',
|
||||
'/var/spool',
|
||||
'/var/spool/clientmqueue',
|
||||
'/var/spool/locks',
|
||||
@@ -589,7 +586,19 @@ DEFAULT_STANDARD_GROUPS = ('root', 'bin'
|
||||
'shutdown', 'halt', 'mail', 'news', 'uucp',
|
||||
'man', 'nobody',)
|
||||
|
||||
-tmp_regex = re.compile('^(/var|/usr)?/tmp/')
|
||||
+DEFAULT_DISALLOWED_DIRS = (
|
||||
+ '/home',
|
||||
+ '/mnt',
|
||||
+ '/opt',
|
||||
+ '/tmp',
|
||||
+ '/usr/local',
|
||||
+ '/usr/tmp',
|
||||
+ '/var/local',
|
||||
+ '/var/lock',
|
||||
+ '/var/run',
|
||||
+ '/var/tmp',
|
||||
+)
|
||||
+
|
||||
sub_bin_regex = re.compile('^(/usr)?/s?bin/\S+/')
|
||||
backup_regex = re.compile('(~|\#[^/]+\#|\.orig|\.orig\.gz|\.rej)$')
|
||||
compr_regex = re.compile('\.(gz|z|Z|zip|bz2|lzma|xz)$')
|
||||
@@ -653,6 +662,8 @@ use_relative_symlinks = Config.getOption
|
||||
standard_groups = Config.getOption('StandardGroups', DEFAULT_STANDARD_GROUPS)
|
||||
standard_users = Config.getOption('StandardUsers', DEFAULT_STANDARD_USERS)
|
||||
|
||||
+disallowed_dirs = Config.getOption('DisallowedDirs', DEFAULT_DISALLOWED_DIRS)
|
||||
+
|
||||
non_readable_regexs = (re.compile('^/var/log/'),
|
||||
re.compile('^/etc/(g?shadow-?|securetty)$'))
|
||||
|
||||
@@ -871,19 +882,13 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
is_kernel_package:
|
||||
printError(pkg, "kernel-modules-not-in-kernel-packages", f)
|
||||
|
||||
- for i in ['mnt','opt','usr-local','var-local','home']:
|
||||
- if f.startswith('/%s/' % i.replace('-','/')):
|
||||
- printError(pkg, 'dir-or-file-in-%s' % i, f)
|
||||
-
|
||||
- if tmp_regex.search(f):
|
||||
- printError(pkg, 'dir-or-file-in-tmp', f)
|
||||
+ for i in disallowed_dirs:
|
||||
+ if f.startswith(i):
|
||||
+ printError(pkg, 'dir-or-file-in-%s' % '-'.join(i.split('/')[1:]), f)
|
||||
|
||||
- elif f.startswith('/var/run/'):
|
||||
+ if f.startswith('/run/'):
|
||||
if f not in ghost_files:
|
||||
- printWarning(pkg, 'non-ghost-in-var-run', f)
|
||||
- elif f.startswith('/var/lock/'):
|
||||
- if f not in ghost_files:
|
||||
- printWarning(pkg, 'non-ghost-in-var-lock', f)
|
||||
+ printWarning(pkg, 'non-ghost-in-run', f)
|
||||
elif sub_bin_regex.search(f):
|
||||
printError(pkg, 'subdir-in-bin', f)
|
||||
elif '/site_perl/' in f:
|
||||
@@ -1466,35 +1471,10 @@ install-info.''',
|
||||
'''You have a perl temporary file in your package. Usually, this
|
||||
file is beginning with a dot (.) and contain "perl" in its name.''',
|
||||
|
||||
-'dir-or-file-in-tmp',
|
||||
-'''A file in the package is located in /tmp. It's not permitted
|
||||
-for packages to install files in this directory.''',
|
||||
-
|
||||
-'dir-or-file-in-mnt',
|
||||
-'''A file in the package is located in /mnt. It's not permitted
|
||||
-for packages to install files in this directory.''',
|
||||
-
|
||||
-'dir-or-file-in-opt',
|
||||
-'''A file in the package is located in /opt. It's not permitted
|
||||
-for packages to install files in this directory.''',
|
||||
-
|
||||
-'dir-or-file-in-usr-local',
|
||||
-'''A file in the package is located in /usr/local. It's not permitted
|
||||
-for packages to install files in this directory.''',
|
||||
-
|
||||
-'dir-or-file-in-var-local',
|
||||
-'''A file in the package is located in /var/local. It's not permitted
|
||||
-for packages to install files in this directory.''',
|
||||
-
|
||||
-'non-ghost-in-var-run',
|
||||
-'''A file or directory in the package is located in /var/run. Files installed
|
||||
-in this directory should be marked as %ghost and created at runtime to work
|
||||
-properly in tmpfs /var/run setups.''',
|
||||
-
|
||||
-'non-ghost-in-var-lock',
|
||||
-'''A file or directory in the package is located in /var/lock. Files installed
|
||||
+'non-ghost-in-run',
|
||||
+'''A file or directory in the package is located in /run. Files installed
|
||||
in this directory should be marked as %ghost and created at runtime to work
|
||||
-properly in tmpfs /var/lock setups.''',
|
||||
+properly in tmpfs /run setups.''',
|
||||
|
||||
'subdir-in-bin',
|
||||
'''The package contains a subdirectory in /usr/bin. It's not permitted to
|
||||
@@ -1505,10 +1485,6 @@ create a subdir there. Create it in /usr
|
||||
by an editor or resulting from applying unclean (fuzzy, or ones with line
|
||||
offsets) patches.''',
|
||||
|
||||
-'dir-or-file-in-home',
|
||||
-'''A file in the package is located in /home. It's not permitted
|
||||
-for packages to install files in this directory.''',
|
||||
-
|
||||
'version-control-internal-file',
|
||||
'''You have included file(s) internally used by a version control system
|
||||
in the package. Move these files out of the package and rebuild it.''',
|
||||
@@ -1832,6 +1808,13 @@ as part of the example documentation mea
|
||||
use it and setup a insecure configuration.'''
|
||||
)
|
||||
|
||||
+for i in disallowed_dirs:
|
||||
+ addDetails('dir-or-file-in-%s' % '-'.join(i.split('/')[1:]),
|
||||
+ '''A file in the package is located in %s. It's not permitted
|
||||
+for packages to install files in this directory.''' % i)
|
||||
+
|
||||
+
|
||||
+
|
||||
# FilesCheck.py ends here
|
||||
|
||||
# Local variables:
|
||||
Index: rpmlint-1.5/config
|
||||
===================================================================
|
||||
--- rpmlint-1.5.orig/config
|
||||
+++ rpmlint-1.5/config
|
||||
@@ -126,6 +126,10 @@ from Config import *
|
||||
# Type: tuple of strings, see DEFAULT_STANDARD_USERS in FilesCheck
|
||||
#setOption("StandardUsers", ())
|
||||
|
||||
+# List of directory prefixes that are not allowed in packages
|
||||
+# Type: tuple of strings, see DEFAULT_DISALLOWED_DIRS in FilesCheck
|
||||
+#setOption("DisallowedDirs", ('/home', '/mnt'))
|
||||
+
|
||||
# List of directories considered to be system default library search paths.
|
||||
# Type: tuple of strings, default: see DEFAULT_SYSTEM_LIB_PATHS in BinariesCheck
|
||||
#setOption("SystemLibPaths", ('/lib', '/lib64', '/usr/lib', '/usr/lib64'))
|
3
rpmlint-1.6.tar.xz
Normal file
3
rpmlint-1.6.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a0dae71a3fed413ee5c47bd04f393cd6598c68c0dcf1504fa020d62814ff674b
|
||||
size 13563040
|
@ -1,207 +0,0 @@
|
||||
Index: rpmlint-1.5/Pkg.py
|
||||
===================================================================
|
||||
--- rpmlint-1.5.orig/Pkg.py
|
||||
+++ rpmlint-1.5/Pkg.py
|
||||
@@ -85,7 +85,7 @@ def getstatusoutput(cmd, stdoutonly = Fa
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT, close_fds=True)
|
||||
proc.stdin.close()
|
||||
- text = proc.stdout.read().decode()
|
||||
+ text = proc.stdout.read()
|
||||
sts = proc.wait()
|
||||
if sts is None:
|
||||
sts = 0
|
||||
diff -ruN rpmlint-1.5/BinariesCheck.py rpmlint-1.5.new/BinariesCheck.py
|
||||
--- rpmlint-1.5/BinariesCheck.py 2014-02-27 12:06:25.018163441 +0100
|
||||
+++ rpmlint-1.5.new/BinariesCheck.py 2014-02-27 12:04:14.210110261 +0100
|
||||
@@ -198,7 +198,7 @@
|
||||
try:
|
||||
fobj = open(path, 'rb')
|
||||
fobj.seek(-12, 2) # 2 == os.SEEK_END, for python 2.4 compat (#172)
|
||||
- self.tail = fobj.read().decode()
|
||||
+ self.tail = fobj.read()
|
||||
except Exception:
|
||||
e = sys.exc_info()[1]
|
||||
printWarning(pkg, 'binaryinfo-tail-failed %s: %s' % (file, e))
|
||||
@@ -296,7 +296,7 @@
|
||||
multi_pkg = False
|
||||
srpm = pkg[rpm.RPMTAG_SOURCERPM]
|
||||
if srpm:
|
||||
- res = srcname_regex.search(srpm.decode())
|
||||
+ res = srcname_regex.search(srpm)
|
||||
if res:
|
||||
multi_pkg = (pkg.name != res.group(1))
|
||||
|
||||
diff -ruN rpmlint-1.5/DocFilesCheck.py rpmlint-1.5.new/DocFilesCheck.py
|
||||
--- rpmlint-1.5/DocFilesCheck.py 2014-02-27 12:06:24.826161897 +0100
|
||||
+++ rpmlint-1.5.new/DocFilesCheck.py 2014-02-27 12:04:29.681234928 +0100
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
# register things which are provided by the package
|
||||
for i in pkg.header[rpm.RPMTAG_PROVIDES]:
|
||||
- core_reqs[i.decode()] = []
|
||||
+ core_reqs[i] = []
|
||||
for i in files:
|
||||
core_reqs[i] = []
|
||||
|
||||
diff -ruN rpmlint-1.5/FilesCheck.py rpmlint-1.5.new/FilesCheck.py
|
||||
--- rpmlint-1.5/FilesCheck.py 2014-02-27 12:06:25.012163393 +0100
|
||||
+++ rpmlint-1.5.new/FilesCheck.py 2014-02-27 12:04:41.277328352 +0100
|
||||
@@ -957,11 +957,11 @@
|
||||
|
||||
# Prefetch scriptlets, strip quotes from them (#169)
|
||||
postin = (pkg[rpm.RPMTAG_POSTIN] or \
|
||||
- pkg.scriptprog(rpm.RPMTAG_POSTINPROG)).decode()
|
||||
+ pkg.scriptprog(rpm.RPMTAG_POSTINPROG))
|
||||
if postin:
|
||||
postin = quotes_regex.sub('', postin)
|
||||
postun = (pkg[rpm.RPMTAG_POSTUN] or \
|
||||
- pkg.scriptprog(rpm.RPMTAG_POSTUNPROG)).decode()
|
||||
+ pkg.scriptprog(rpm.RPMTAG_POSTUNPROG))
|
||||
if postun:
|
||||
postun = quotes_regex.sub('', postun)
|
||||
|
||||
diff -ruN rpmlint-1.5/LSBCheck.py rpmlint-1.5.new/LSBCheck.py
|
||||
--- rpmlint-1.5/LSBCheck.py 2014-02-27 12:06:24.827161905 +0100
|
||||
+++ rpmlint-1.5.new/LSBCheck.py 2014-02-27 12:04:52.612419655 +0100
|
||||
@@ -32,13 +32,11 @@
|
||||
|
||||
version = pkg[rpm.RPMTAG_VERSION]
|
||||
if version:
|
||||
- version = version.decode()
|
||||
if not version_regex.search(version):
|
||||
printError(pkg, 'non-lsb-compliant-version', version)
|
||||
|
||||
release = pkg[rpm.RPMTAG_RELEASE]
|
||||
if release:
|
||||
- release = release.decode()
|
||||
if not version_regex.search(release):
|
||||
printError(pkg, 'non-lsb-compliant-release', release)
|
||||
|
||||
diff -ruN rpmlint-1.5/Pkg.py rpmlint-1.5.new/Pkg.py
|
||||
--- rpmlint-1.5/Pkg.py 2014-02-27 12:06:25.041163626 +0100
|
||||
+++ rpmlint-1.5.new/Pkg.py 2014-02-27 12:03:33.599782891 +0100
|
||||
@@ -448,7 +448,7 @@
|
||||
os.close(fd)
|
||||
self.is_source = not self.header[rpm.RPMTAG_SOURCERPM]
|
||||
|
||||
- self.name = self.header[rpm.RPMTAG_NAME].decode()
|
||||
+ self.name = self.header[rpm.RPMTAG_NAME]
|
||||
if self.isNoSource():
|
||||
self.arch = 'nosrc'
|
||||
elif self.isSource():
|
||||
@@ -534,7 +534,7 @@
|
||||
# LANGUAGE trumps other env vars per GNU gettext docs, see also #166
|
||||
orig = os.environ.get('LANGUAGE')
|
||||
os.environ['LANGUAGE'] = lang
|
||||
- ret = self[tag].decode()
|
||||
+ ret = self[tag]
|
||||
if orig is not None:
|
||||
os.environ['LANGUAGE'] = orig
|
||||
return ret
|
||||
@@ -599,17 +599,17 @@
|
||||
modes = self.header[rpm.RPMTAG_FILEMODES]
|
||||
users = self.header[rpm.RPMTAG_FILEUSERNAME]
|
||||
groups = self.header[rpm.RPMTAG_FILEGROUPNAME]
|
||||
- links = [x.decode() for x in self.header[rpm.RPMTAG_FILELINKTOS]]
|
||||
+ links = self.header[rpm.RPMTAG_FILELINKTOS]
|
||||
sizes = self.header[rpm.RPMTAG_FILESIZES]
|
||||
md5s = self.header[rpm.RPMTAG_FILEMD5S]
|
||||
mtimes = self.header[rpm.RPMTAG_FILEMTIMES]
|
||||
rdevs = self.header[rpm.RPMTAG_FILERDEVS]
|
||||
langs = self.header[rpm.RPMTAG_FILELANGS]
|
||||
inodes = self.header[rpm.RPMTAG_FILEINODES]
|
||||
- requires = [x.decode() for x in self.header[rpm.RPMTAG_FILEREQUIRE]]
|
||||
- provides = [x.decode() for x in self.header[rpm.RPMTAG_FILEPROVIDE]]
|
||||
- files = [x.decode() for x in self.header[rpm.RPMTAG_FILENAMES]]
|
||||
- magics = [x.decode() for x in self.header[rpm.RPMTAG_FILECLASS]]
|
||||
+ requires = self.header[rpm.RPMTAG_FILEREQUIRE]
|
||||
+ provides = self.header[rpm.RPMTAG_FILEPROVIDE]
|
||||
+ files = self.header[rpm.RPMTAG_FILENAMES]
|
||||
+ magics = self.header[rpm.RPMTAG_FILECLASS]
|
||||
try: # rpm >= 4.7.0
|
||||
filecaps = self.header[rpm.RPMTAG_FILECAPS]
|
||||
except:
|
||||
@@ -736,8 +736,8 @@
|
||||
|
||||
if versions:
|
||||
for loop in range(len(versions)):
|
||||
- name = names[loop].decode()
|
||||
- evr = stringToVersion(versions[loop].decode())
|
||||
+ name = names[loop]
|
||||
+ evr = stringToVersion(versions[loop])
|
||||
if prereq is not None and flags[loop] & PREREQ_FLAG:
|
||||
prereq.append((name, flags[loop] & (~PREREQ_FLAG), evr))
|
||||
elif strong_only and flags[loop] & rpm.RPMSENSE_STRONG:
|
||||
diff -ruN rpmlint-1.5/rpmdiff rpmlint-1.5.new/rpmdiff
|
||||
--- rpmlint-1.5/rpmdiff 2014-02-27 12:06:24.826161897 +0100
|
||||
+++ rpmlint-1.5.new/rpmdiff 2014-02-27 12:03:50.387918248 +0100
|
||||
@@ -228,16 +228,16 @@
|
||||
if namestr == 'REQUIRES':
|
||||
namestr = self.req2str(oldentry[1])
|
||||
self.__add(self.DEPFORMAT,
|
||||
- (self.REMOVED, namestr, oldentry[0].decode(),
|
||||
- self.sense2str(oldentry[1]), oldentry[2].decode()))
|
||||
+ (self.REMOVED, namestr, oldentry[0],
|
||||
+ self.sense2str(oldentry[1]), oldentry[2]))
|
||||
for newentry in n:
|
||||
if not newentry in o:
|
||||
namestr = name
|
||||
if namestr == 'REQUIRES':
|
||||
namestr = self.req2str(newentry[1])
|
||||
self.__add(self.DEPFORMAT,
|
||||
- (self.ADDED, namestr, newentry[0].decode(),
|
||||
- self.sense2str(newentry[1]), newentry[2].decode()))
|
||||
+ (self.ADDED, namestr, newentry[0],
|
||||
+ self.sense2str(newentry[1]), newentry[2]))
|
||||
|
||||
def __fileIteratorToDict(self, fi):
|
||||
result = {}
|
||||
diff -ruN rpmlint-1.5/TagsCheck.py rpmlint-1.5.new/TagsCheck.py
|
||||
--- rpmlint-1.5/TagsCheck.py 2014-02-27 12:06:25.036163586 +0100
|
||||
+++ rpmlint-1.5.new/TagsCheck.py 2014-02-27 12:05:51.742895726 +0100
|
||||
@@ -536,7 +536,6 @@
|
||||
|
||||
packager = pkg[rpm.RPMTAG_PACKAGER]
|
||||
if packager:
|
||||
- packager = packager.decode()
|
||||
self._unexpanded_macros(pkg, 'Packager', packager)
|
||||
if Config.getOption('Packager') and \
|
||||
not packager_regex.search(packager):
|
||||
@@ -546,7 +545,6 @@
|
||||
|
||||
version = pkg[rpm.RPMTAG_VERSION]
|
||||
if version:
|
||||
- version = version.decode()
|
||||
self._unexpanded_macros(pkg, 'Version', version)
|
||||
res = invalid_version_regex.search(version)
|
||||
if res:
|
||||
@@ -556,7 +554,6 @@
|
||||
|
||||
release = pkg[rpm.RPMTAG_RELEASE]
|
||||
if release:
|
||||
- release = release.decode()
|
||||
self._unexpanded_macros(pkg, 'Release', release)
|
||||
if release_ext and not extension_regex.search(release):
|
||||
printWarning(pkg, 'not-standard-release-extension', release)
|
||||
@@ -688,12 +685,9 @@
|
||||
ignored_words.update((x[0] for x in pkg.obsoletes()))
|
||||
|
||||
langs = pkg[rpm.RPMTAG_HEADERI18NTABLE]
|
||||
- if langs:
|
||||
- langs = [x.decode() for x in langs]
|
||||
|
||||
summary = pkg[rpm.RPMTAG_SUMMARY]
|
||||
if summary:
|
||||
- summary = summary.decode()
|
||||
if not langs:
|
||||
self._unexpanded_macros(pkg, 'Summary', summary)
|
||||
else:
|
||||
@@ -704,7 +698,6 @@
|
||||
|
||||
description = pkg[rpm.RPMTAG_DESCRIPTION]
|
||||
if description:
|
||||
- description = description.decode()
|
||||
if not langs:
|
||||
self._unexpanded_macros(pkg, '%description', description)
|
||||
else:
|
@ -1,9 +1,19 @@
|
||||
Index: Pkg.py
|
||||
From 2fba34a1d8087aacb178556d0e40923b749e9035 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:40 +0200
|
||||
Subject: [PATCH] rpmlint-pkg-quoting.diff
|
||||
|
||||
===================================================================
|
||||
--- Pkg.py.orig
|
||||
+++ Pkg.py
|
||||
@@ -493,7 +493,7 @@ class Pkg:
|
||||
dir = self.dirname)
|
||||
---
|
||||
Pkg.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Pkg.py b/Pkg.py
|
||||
index cfaa5a9..f7dc31d 100644
|
||||
--- a/Pkg.py
|
||||
+++ b/Pkg.py
|
||||
@@ -536,7 +536,7 @@ class Pkg:
|
||||
dir=self.dirname)
|
||||
# TODO: better shell escaping or sequence based command invocation
|
||||
command_str = \
|
||||
- 'rpm2cpio "%s" | (cd "%s"; cpio -id); chmod -R +rX "%s"' % \
|
||||
|
@ -1,8 +1,19 @@
|
||||
Index: FilesCheck.py
|
||||
From cb3e5a520e82ca2dd8a952e116067ada26d2497a Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:37 +0200
|
||||
Subject: [PATCH] rpmlint-suse.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -176,7 +176,7 @@ compr_regex = re.compile('\.(gz|z|Z|zip|
|
||||
---
|
||||
FilesCheck.py | 2 +-
|
||||
I18NCheck.py | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index 1ad548b..1a70779 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -184,7 +184,7 @@ compr_regex = re.compile('\.(gz|z|Z|zip|bz2|lzma|xz)$')
|
||||
absolute_regex = re.compile('^/([^/]+)')
|
||||
absolute2_regex = re.compile('^/?([^/]+)')
|
||||
points_regex = re.compile('^\.\./(.*)')
|
||||
@ -11,10 +22,10 @@ Index: FilesCheck.py
|
||||
bin_regex = re.compile('^/(?:usr/(?:s?bin|games)|s?bin)/(.*)')
|
||||
includefile_regex = re.compile('\.(c|h)(pp|xx)?$', re.IGNORECASE)
|
||||
develfile_regex = re.compile('\.(a|cmxa?|mli?)$')
|
||||
Index: I18NCheck.py
|
||||
===================================================================
|
||||
--- I18NCheck.py.orig
|
||||
+++ I18NCheck.py
|
||||
diff --git a/I18NCheck.py b/I18NCheck.py
|
||||
index 54b42cd..3bcf9d0 100644
|
||||
--- a/I18NCheck.py
|
||||
+++ b/I18NCheck.py
|
||||
@@ -30,7 +30,7 @@ INCORRECT_LOCALES = {
|
||||
'en_UK': 'en_GB'}
|
||||
|
||||
|
@ -1,3 +1,45 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 10 11:16:01 UTC 2015 - lnussel@suse.de
|
||||
|
||||
- new versioin 1.6
|
||||
- add script update_git.sh based on qemu's to simplify importing
|
||||
a patch series from git after rebasing.
|
||||
* Patches dropped:
|
||||
0001-Python-3-compatibility-tweaks.patch (upstream)
|
||||
0001-Set-Python-3.4-magic-number-to-3310.patch (upstream)
|
||||
add-scoring-support.diff (different upstream solution)
|
||||
check-buildroot-during-install.diff (need to fix no-cleaning-of-buildroot check upstream)
|
||||
fix-versioned-prereq.diff (was disabled, not sure what it's useful for)
|
||||
ignore-non-readable-in-etc.diff (filtered anyways)
|
||||
locale-support.diff (drop)
|
||||
locale-update.diff (different upstream solution now)
|
||||
more-verbose-lsb-check.diff (drop)
|
||||
perl-versioned-rpath-deps.diff (upstream)
|
||||
rpmlint-1.5-disallow-var-run-and-var-lock.diff (upstream)
|
||||
rpmlint-1.5-Fix-setgroups-error-name.diff (upstream)
|
||||
rpmlint-decode-fix.diff (different upstream solution)
|
||||
rpmlint-fix-unexpanded-macros-for-array-values.patch (different upstream solution)
|
||||
stricter-tags-check.diff (merged in weak deps and check-for-self-provides.diff)
|
||||
suppress-for-perl-python.diff (use filter instead)
|
||||
suse-binary-info-compile-opts.diff (drop)
|
||||
suse-changelog.patch (change config instead)
|
||||
suse-mono-deps-checks.diff (useful?)
|
||||
suse-required-lsb-tags.diff (different upstream solution)
|
||||
verify-buildrequires.diff (very build system specific, drop)
|
||||
xdg-check-exception.diff (upstream)
|
||||
* renamed patches:
|
||||
script-interpreter-only-for-exec-scripts.diff
|
||||
-> script-interpreter-only-for-exec-sc.diff
|
||||
confusing-invalid-spec-name.patch
|
||||
-> confusing-invalid-spec-name.diff
|
||||
suse-manpages-for-rc-scripts.patch
|
||||
-> suse-manpages-for-rc-scripts.diff
|
||||
sysv5-init-checks.diff
|
||||
-> suse-sysv-init-checks.diff
|
||||
* added patches:
|
||||
check-for-self-provides.diff
|
||||
save-content-to-an-array.diff
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 9 08:13:46 UTC 2015 - meissner@suse.com
|
||||
|
||||
|
211
rpmlint.spec
211
rpmlint.spec
@ -25,7 +25,7 @@ BuildRequires: xz
|
||||
Summary: Rpm correctness checker
|
||||
License: GPL-2.0+
|
||||
Group: System/Packages
|
||||
Version: 1.5
|
||||
Version: 1.6
|
||||
Release: 0
|
||||
Source0: https://downloads.sourceforge.net/project/rpmlint/rpmlint-%{version}.tar.xz
|
||||
Source1: rpmlint-checks-master.tar.gz
|
||||
@ -49,88 +49,65 @@ Requires: python-magic
|
||||
Requires: rpm-python
|
||||
# Requirement for ErlangCheck.py (pull-request #2).
|
||||
Requires: python-pybeam
|
||||
BuildArch: noarch
|
||||
#
|
||||
# Read README.packaging.txt before making any changes to this
|
||||
# package
|
||||
#
|
||||
Patch0: rpmlint-suse.diff
|
||||
Patch1: suse-checks.diff
|
||||
Patch2: suse-version.diff
|
||||
Patch3: suse-url-check.diff
|
||||
Patch5: suse-python3-naming-policy.diff
|
||||
Patch6: suse-filesystem.diff
|
||||
Patch7: suse-pkg-config-check.diff
|
||||
Patch8: suse-binarieschecks.diff
|
||||
Patch9: no-doc-for-lib.diff
|
||||
Patch10: add-scoring-support.diff
|
||||
Patch11: suse-filter-exception.diff
|
||||
Patch12: usr-arch.diff
|
||||
Patch13: script-interpreter-only-for-exec-scripts.diff
|
||||
Patch14: sourced-dirs.diff
|
||||
Patch15: suse-filter-more-verbose.diff
|
||||
Patch17: docdata-examples.diff
|
||||
Patch18: 0001-Python-3-compatibility-tweaks.patch
|
||||
Patch19: yast-provides.diff
|
||||
Patch20: xdg-paths-update.diff
|
||||
Patch22: better-wrong-script.diff
|
||||
Patch23: buildroot-doc.diff
|
||||
Patch24: sysv5-init-checks.diff
|
||||
Patch26: ignore-non-readable-in-etc.diff
|
||||
Patch29: rpmgroup-checks.diff
|
||||
Patch30: devel-provide-is-devel-package.diff
|
||||
Patch31: only-reg-files-are-scripts.diff
|
||||
Patch33: check-buildroot-during-install.diff
|
||||
Patch34: verify-buildrequires.diff
|
||||
Patch35: fix-versioned-prereq.diff
|
||||
Patch37: buildroot-in-scripts.diff
|
||||
Patch39: libtool-wrapper-check.diff
|
||||
Patch41: perl-versioned-rpath-deps.diff
|
||||
Patch42: suse-check-optional-dependencies.diff
|
||||
Patch46: locale-support.diff
|
||||
# not is also in CheckFilelist.py
|
||||
Patch47: noarch-lib64.diff
|
||||
Patch49: stricter-tags-check.diff
|
||||
Patch50: suse-no-run-ldconfig.diff
|
||||
Patch51: description-check.diff
|
||||
# this is the wrong place here
|
||||
Patch52: suppress-for-perl-python.diff
|
||||
Patch54: locale-update.diff
|
||||
Patch57: suse-mono-deps-checks.diff
|
||||
Patch58: add-weak-dependencies.diff
|
||||
Patch60: selfconflicts-provide.diff
|
||||
Patch62: no-badness-return.diff
|
||||
Patch65: suse-shlib-devel-dependency.diff
|
||||
Patch67: suse-required-lsb-tags.diff
|
||||
Patch68: more-verbose-lsb-check.diff
|
||||
Patch71: suse-binary-info-compile-opts.diff
|
||||
Patch72: version-control-internal-file.diff
|
||||
Patch73: avoid-mismatched-libregex.diff
|
||||
Patch74: filename-non-utf8-exception.diff
|
||||
Patch75: stricter-interpreter-check.diff
|
||||
Patch76: confusing-invalid-spec-name.patch
|
||||
Patch77: rpmlint-pkg-quoting.diff
|
||||
Patch78: suse-g-ir-chech.diff
|
||||
Patch80: remove-expand-macros.diff
|
||||
Patch81: suse-whitelist-opensuse.diff
|
||||
Patch84: extend-suse-conffiles-check.diff
|
||||
Patch85: suse-changelog.patch
|
||||
Patch87: compressed-backup-regex.diff
|
||||
# accepted upstream
|
||||
Patch88: suse-speccheck-utf8.diff
|
||||
Patch89: suse-python-abi-check.diff
|
||||
# PATCH-FIX-OPENSUSE: saschpe@suse.de - Don't complain about missing man-pages for rc-scripts
|
||||
Patch91: suse-manpages-for-rc-scripts.patch
|
||||
# PATCH-FIX-UPSTREAM: lnussel@suse.de - Fix setgroups error name
|
||||
Patch92: rpmlint-1.5-Fix-setgroups-error-name.diff
|
||||
Patch93: xdg-check-exception.diff
|
||||
Patch94: suse-ignore-specfile-errors.diff
|
||||
Patch95: invalid-filerequires.diff
|
||||
Patch96: rpmlint-decode-fix.diff
|
||||
Patch97: rpmlint-fix-unexpanded-macros-for-array-values.patch
|
||||
# PATCH-FIX-UPSTREAM: lnussel@suse.de - disallow /var/run and /var/lock
|
||||
Patch98: rpmlint-1.5-disallow-var-run-and-var-lock.diff
|
||||
Patch99: 0001-Set-Python-3.4-magic-number-to-3310.patch
|
||||
# PATCHLIST BEGIN
|
||||
Patch00: rpmlint-suse.diff
|
||||
Patch01: suse-checks.diff
|
||||
Patch02: suse-version.diff
|
||||
Patch03: suse-url-check.diff
|
||||
Patch04: suse-python3-naming-policy.diff
|
||||
Patch05: suse-filesystem.diff
|
||||
Patch06: suse-pkg-config-check.diff
|
||||
Patch07: suse-binarieschecks.diff
|
||||
Patch08: no-doc-for-lib.diff
|
||||
Patch09: suse-filter-exception.diff
|
||||
Patch10: usr-arch.diff
|
||||
Patch11: script-interpreter-only-for-exec-sc.diff
|
||||
Patch12: sourced-dirs.diff
|
||||
Patch13: suse-filter-more-verbose.diff
|
||||
Patch14: docdata-examples.diff
|
||||
Patch15: yast-provides.diff
|
||||
Patch16: xdg-paths-update.diff
|
||||
Patch17: better-wrong-script.diff
|
||||
Patch18: buildroot-doc.diff
|
||||
Patch19: rpmgroup-checks.diff
|
||||
Patch20: devel-provide-is-devel-package.diff
|
||||
Patch21: only-reg-files-are-scripts.diff
|
||||
Patch22: buildroot-in-scripts.diff
|
||||
Patch23: libtool-wrapper-check.diff
|
||||
Patch24: suse-check-optional-dependencies.diff
|
||||
Patch25: noarch-lib64.diff
|
||||
Patch26: suse-no-run-ldconfig.diff
|
||||
Patch27: description-check.diff
|
||||
Patch28: add-weak-dependencies.diff
|
||||
Patch29: selfconflicts-provide.diff
|
||||
Patch30: no-badness-return.diff
|
||||
Patch31: suse-shlib-devel-dependency.diff
|
||||
Patch32: version-control-internal-file.diff
|
||||
Patch33: avoid-mismatched-libregex.diff
|
||||
Patch34: filename-non-utf8-exception.diff
|
||||
Patch35: stricter-interpreter-check.diff
|
||||
Patch36: confusing-invalid-spec-name.diff
|
||||
Patch37: rpmlint-pkg-quoting.diff
|
||||
Patch38: suse-g-ir-chech.diff
|
||||
Patch39: remove-expand-macros.diff
|
||||
Patch40: suse-whitelist-opensuse.diff
|
||||
Patch41: extend-suse-conffiles-check.diff
|
||||
Patch42: compressed-backup-regex.diff
|
||||
Patch43: suse-speccheck-utf8.diff
|
||||
Patch44: suse-python-abi-check.diff
|
||||
Patch45: suse-manpages-for-rc-scripts.diff
|
||||
Patch46: suse-ignore-specfile-errors.diff
|
||||
Patch47: invalid-filerequires.diff
|
||||
Patch48: suse-sysv-init-checks.diff
|
||||
Patch49: check-for-self-provides.diff
|
||||
Patch50: save-content-to-an-array.diff
|
||||
# PATCHLIST END
|
||||
# BuildArch must at the and. is a bug: https://bugzilla.suse.com/show_bug.cgi?id=926766
|
||||
BuildArch: noarch
|
||||
|
||||
%py_requires
|
||||
|
||||
@ -139,80 +116,7 @@ Rpmlint is a tool to check common errors on rpm packages. Binary and
|
||||
source packages can be checked.
|
||||
|
||||
%prep
|
||||
%setup -q -n rpmlint-%{version} -a1
|
||||
%patch0
|
||||
%patch1
|
||||
%patch2
|
||||
%patch3
|
||||
%patch5
|
||||
%patch6
|
||||
%patch7
|
||||
%patch8
|
||||
%patch9
|
||||
#%patch10
|
||||
%patch11
|
||||
%patch12
|
||||
%patch13
|
||||
%patch14
|
||||
%patch15
|
||||
%patch17
|
||||
%patch18 -p1
|
||||
%patch19
|
||||
%patch20
|
||||
%patch22
|
||||
%patch23
|
||||
%patch24
|
||||
#%patch26
|
||||
%patch29
|
||||
%patch30
|
||||
%patch31
|
||||
# needs rediff
|
||||
#%patch33
|
||||
#%patch34
|
||||
#%patch35
|
||||
%patch37
|
||||
%patch39
|
||||
#%patch41
|
||||
%patch42
|
||||
#%patch46
|
||||
%patch47
|
||||
#%patch49
|
||||
%patch50
|
||||
%patch51
|
||||
#%patch52
|
||||
### rediff!
|
||||
#%patch54
|
||||
#%patch57
|
||||
%patch58
|
||||
%patch60
|
||||
%patch62
|
||||
%patch65
|
||||
#%patch67
|
||||
#%patch68
|
||||
#%patch71
|
||||
%patch72
|
||||
%patch73
|
||||
%patch74
|
||||
%patch75
|
||||
%patch76 -p1
|
||||
%patch77
|
||||
%patch78
|
||||
%patch80
|
||||
%patch81
|
||||
%patch84
|
||||
%patch85
|
||||
%patch87
|
||||
%patch88
|
||||
%patch89
|
||||
%patch91 -p1
|
||||
%patch92 -p1
|
||||
%patch93 -p1
|
||||
%patch94
|
||||
%patch95
|
||||
%patch96 -p1
|
||||
%patch97 -p1
|
||||
%patch98 -p1
|
||||
%patch99 -p1
|
||||
%autosetup -n rpmlint-%{version} -a1 -p1
|
||||
cp -p %{SOURCE2} .
|
||||
# Only move top-level python files
|
||||
chmod 0755 rpmlint-checks-master/*.py
|
||||
@ -251,5 +155,6 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%config %{_sysconfdir}/rpmlint/licenses.config
|
||||
%dir /etc/rpmlint
|
||||
/usr/share/man/man1/rpmlint.1.gz
|
||||
/usr/share/man/man1/rpmdiff.1.gz
|
||||
|
||||
%changelog
|
||||
|
31
save-content-to-an-array.diff
Normal file
31
save-content-to-an-array.diff
Normal file
@ -0,0 +1,31 @@
|
||||
From 6e26550f7b5583ab15ed5573bf8093d0adbf4cb0 Mon Sep 17 00:00:00 2001
|
||||
From: Ludwig Nussel <ludwig.nussel@suse.de>
|
||||
Date: Fri, 10 Apr 2015 16:22:26 +0200
|
||||
Subject: [PATCH rpmlint] save content to an array
|
||||
|
||||
due to the following join the generator would be at the end so iterating
|
||||
through lines wouldn't work
|
||||
|
||||
Upstream ticket:
|
||||
https://sourceforge.net/p/rpmlint/tickets/44/
|
||||
|
||||
---
|
||||
InitScriptCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/InitScriptCheck.py b/InitScriptCheck.py
|
||||
index 1a58562..9d197e5 100644
|
||||
--- a/InitScriptCheck.py
|
||||
+++ b/InitScriptCheck.py
|
||||
@@ -103,7 +103,7 @@ class InitScriptCheck(AbstractCheck.AbstractCheck):
|
||||
# check common error in file content
|
||||
content = None
|
||||
try:
|
||||
- content = Pkg.readlines(pkgfile.path)
|
||||
+ content = [ x for x in Pkg.readlines(pkgfile.path) ]
|
||||
except Exception:
|
||||
e = sys.exc_info()[1]
|
||||
printWarning(pkg, 'read-error', e)
|
||||
--
|
||||
2.3.4
|
||||
|
23
script-interpreter-only-for-exec-sc.diff
Normal file
23
script-interpreter-only-for-exec-sc.diff
Normal file
@ -0,0 +1,23 @@
|
||||
From 02de6fffb97981397beb75738c2a2afe4e47fd02 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] script-interpreter-only-for-exec-scripts.diff
|
||||
|
||||
===================================================================
|
||||
---
|
||||
FilesCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index 5929146..80148c4 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -1242,7 +1242,7 @@ class FilesCheck(AbstractCheck.AbstractCheck):
|
||||
# ...but executed ones should
|
||||
elif interpreter or mode_is_exec or script_regex.search(f):
|
||||
if interpreter:
|
||||
- if not interpreter_regex.search(interpreter):
|
||||
+ if mode & 0111 != 0 and not interpreter_regex.search(interpreter):
|
||||
printError(pkg, 'wrong-script-interpreter',
|
||||
f, interpreter)
|
||||
elif not nonexec_file and not \
|
@ -1,13 +0,0 @@
|
||||
Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -1219,7 +1219,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
elif interpreter or mode & 0111 != 0 or \
|
||||
script_regex.search(f):
|
||||
if interpreter:
|
||||
- if not interpreter_regex.search(interpreter):
|
||||
+ if mode & 0111 != 0 and not interpreter_regex.search(interpreter):
|
||||
printError(pkg, 'wrong-script-interpreter',
|
||||
f, interpreter)
|
||||
elif not nonexec_file and not \
|
@ -1,8 +1,18 @@
|
||||
Index: TagsCheck.py
|
||||
From aecc6b2cfb248014dd769a31a0aeb8f1bcec180b Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] selfconflicts-provide.diff
|
||||
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -827,6 +827,7 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
---
|
||||
TagsCheck.py | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/TagsCheck.py b/TagsCheck.py
|
||||
index 6528d5b..18cbb6e 100644
|
||||
--- a/TagsCheck.py
|
||||
+++ b/TagsCheck.py
|
||||
@@ -829,6 +829,7 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
|
||||
obs_names = [x[0] for x in pkg.obsoletes()]
|
||||
prov_names = [x[0].split(':/')[0] for x in pkg.provides()]
|
||||
@ -10,7 +20,7 @@ Index: TagsCheck.py
|
||||
|
||||
for o in (x for x in obs_names if x not in prov_names):
|
||||
printWarning(pkg, 'obsolete-not-provided', o)
|
||||
@@ -838,6 +839,8 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -840,6 +841,8 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
# https://bugzilla.redhat.com/460872
|
||||
useless_provides = []
|
||||
for p in prov_names:
|
||||
@ -19,7 +29,7 @@ Index: TagsCheck.py
|
||||
if prov_names.count(p) != 1 and p not in useless_provides:
|
||||
useless_provides.append(p)
|
||||
for p in useless_provides:
|
||||
@@ -978,6 +981,10 @@ the Release tag.''',
|
||||
@@ -999,6 +1002,10 @@ the Release tag.''',
|
||||
'''There is no Name tag in your package. You have to specify a name using the
|
||||
Name tag.''',
|
||||
|
||||
|
@ -1,9 +1,19 @@
|
||||
Index: FilesCheck.py
|
||||
From 77dda1bf07bd9468e5b0efe15b1b93aca4f460d9 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] sourced-dirs.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -634,7 +634,7 @@ manifest_perl_regex = re.compile('^/usr/
|
||||
shebang_regex = re.compile('^#!\s*(\S+)')
|
||||
---
|
||||
FilesCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index 80148c4..c485125 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -642,7 +642,7 @@ manifest_perl_regex = re.compile('^/usr/share/doc/perl-.*/MANIFEST(\.SKIP)?$')
|
||||
shebang_regex = re.compile(b'^#!\s*(\S+)')
|
||||
interpreter_regex = re.compile('^/(usr/)?(s?bin|games|libexec(/.+)?|(lib(64)?|share)/.+)/[^/]+$')
|
||||
script_regex = re.compile('^/((usr/)?s?bin|etc/(rc\.d/init\.d|X11/xinit\.d|cron\.(hourly|daily|monthly|weekly)))/')
|
||||
-sourced_script_regex = re.compile('^/etc/(bash_completion\.d|profile\.d)/')
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: FilesCheck.py
|
||||
From e8167b76e48fdbd98062fa05e72e40fdb98eee96 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] stricter-interpreter-check.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -1245,7 +1245,8 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
---
|
||||
FilesCheck.py | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index 14cfca3..1b68dd5 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -1265,7 +1265,8 @@ class FilesCheck(AbstractCheck.AbstractCheck):
|
||||
f.endswith('.la')):
|
||||
printError(pkg, 'script-without-shebang', f)
|
||||
|
||||
@ -11,4 +21,4 @@ Index: FilesCheck.py
|
||||
+ interpreter and interpreter.startswith("/"):
|
||||
printError(pkg, 'non-executable-script', f,
|
||||
oct(perm), interpreter)
|
||||
if '\r' in chunk:
|
||||
if b'\r' in chunk:
|
||||
|
@ -1,84 +0,0 @@
|
||||
--- TagsCheck.py
|
||||
+++ TagsCheck.py
|
||||
@@ -509,7 +509,7 @@
|
||||
printError(pkg, 'explicit-lib-dependency', d[0])
|
||||
if d[2] == rpm.RPMSENSE_EQUAL and string.find(d[1], '-') != -1:
|
||||
printWarning(pkg, 'requires-on-release', d[0], d[1])
|
||||
- if string.find(d[1], '%') != -1:
|
||||
+ if string.find(d[1], '%') != -1 or string.find(d[0], '%') != -1:
|
||||
printError(pkg, 'percent-in-dependency', d[0], d[1])
|
||||
|
||||
if not name:
|
||||
@@ -680,6 +680,7 @@
|
||||
|
||||
obs_names = map(lambda x: x[0], pkg.obsoletes())
|
||||
prov_names = map(lambda x: x[0].split(':/')[0], pkg.provides())
|
||||
+ req_names = map(lambda x: x[0], pkg.requires() + pkg.prereq())
|
||||
|
||||
if pkg.name in obs_names:
|
||||
printError(pkg, 'obsolete-on-name')
|
||||
@@ -687,7 +688,7 @@
|
||||
if not o in prov_names:
|
||||
printWarning(pkg, 'obsolete-not-provided', o)
|
||||
for o in pkg.obsoletes():
|
||||
- if string.find(o[1], '%') != -1:
|
||||
+ if string.find(o[1], '%') != -1 or string.find(o[0], '%') != -1:
|
||||
printError(pkg, 'percent-in-obsoletes', o[0], o[1])
|
||||
|
||||
# TODO: should take versions, <, <=, =, >=, > into account here
|
||||
@@ -700,14 +701,41 @@
|
||||
for p in useless_provides:
|
||||
printError(pkg, 'useless-provides', p)
|
||||
|
||||
+ useless_reqs=set()
|
||||
+ for r in req_names:
|
||||
+ if not r in useless_reqs:
|
||||
+ useless_reqs.add(r)
|
||||
+ else:
|
||||
+ if r[0] != '/':
|
||||
+ printWarning(pkg, 'useless-explicit-requires', r)
|
||||
+
|
||||
for p in pkg.provides():
|
||||
- if string.find(p[1], '%') != -1:
|
||||
+ if string.find(p[1], '%') != -1 or string.find(p[0], '%') != -1:
|
||||
printError(pkg, 'percent-in-provides', p[0], p[1])
|
||||
|
||||
+ if p[0] == pkg.name and not p[1]:
|
||||
+ printError(pkg, 'unversioned-explicit-self-provides', p[0])
|
||||
+
|
||||
for c in pkg.conflicts():
|
||||
- if string.find(c[1], '%') != -1:
|
||||
+ if string.find(c[1], '%') != -1 or string.find(c[0], '%') != -1:
|
||||
printError(pkg, 'percent-in-conflicts', c[0], c[1])
|
||||
|
||||
+ for c in pkg.supplements():
|
||||
+ if string.find(c[1], '%') != -1 or string.find(c[0], '%') != -1:
|
||||
+ printError(pkg, 'percent-in-supplements', c[0], c[1])
|
||||
+
|
||||
+ for c in pkg.suggests():
|
||||
+ if string.find(c[1], '%') != -1 or string.find(c[0], '%') != -1:
|
||||
+ printError(pkg, 'percent-in-suggests', c[0], c[1])
|
||||
+
|
||||
+ for c in pkg.enhances():
|
||||
+ if string.find(c[1], '%') != -1 or string.find(c[0], '%') != -1:
|
||||
+ printError(pkg, 'percent-in-enhances', c[0], c[1])
|
||||
+
|
||||
+ for c in pkg.recommends():
|
||||
+ if string.find(c[1], '%') != -1 or string.find(c[0], '%') != -1:
|
||||
+ printError(pkg, 'percent-in-recommends', c[0], c[1])
|
||||
+
|
||||
expected='%s-%s-%s.%s.rpm' % (name, version, release, pkg.arch)
|
||||
basename=string.split(pkg.filename, '/')[-1]
|
||||
if basename != expected:
|
||||
@@ -897,6 +925,10 @@
|
||||
'''This package provides 2 times the same capacity. It should only provide it
|
||||
once.''',
|
||||
|
||||
+'unversioned-explicit-self-provides',
|
||||
+'''This package provides it's own name explicitely, which might break
|
||||
+upgrade path. self-provides are autogenerated. Remove the provide.''',
|
||||
+
|
||||
'obsolete-on-name',
|
||||
'''A package should not obsolete itself, as it can cause weird errors in tools.''',
|
||||
|
||||
Nur in b/rpmlint-0.85: TagsCheck.py.rej.
|
@ -1,20 +0,0 @@
|
||||
--- FilesCheck.py
|
||||
+++ FilesCheck.py
|
||||
@@ -971,7 +971,7 @@ class FilesCheck(AbstractCheck.AbstractCheck):
|
||||
|
||||
if not perl_dep_error:
|
||||
res=perl_regex.search(f)
|
||||
- if res:
|
||||
+ if res and not pkg.name in ('perl', 'perl-base'):
|
||||
if perl_version_trick:
|
||||
vers = res.group(1) + '.' + res.group(2)
|
||||
else:
|
||||
@@ -981,7 +981,7 @@ class FilesCheck(AbstractCheck.AbstractCheck):
|
||||
printError(pkg, 'no-dependency-on', 'perl-base', vers)
|
||||
perl_dep_error=1
|
||||
|
||||
- if not python_dep_error:
|
||||
+ if not python_dep_error and not pkg.name in ('python', 'python-base'):
|
||||
res=python_regex.search(f)
|
||||
if res:
|
||||
if not (pkg.check_versioned_dep('python-base', res.group(1)) or
|
@ -1,12 +1,18 @@
|
||||
Index: BinariesCheck.py
|
||||
From 44ff92a4575956ffdcef5b3aad6ffa284b9f2282 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] suse-binarieschecks.diff
|
||||
|
||||
===================================================================
|
||||
--- BinariesCheck.py.orig
|
||||
+++ BinariesCheck.py
|
||||
@@ -9,13 +9,15 @@
|
||||
|
||||
import re
|
||||
import stat
|
||||
+import os
|
||||
---
|
||||
BinariesCheck.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 56 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/BinariesCheck.py b/BinariesCheck.py
|
||||
index 4634eed..a74d3e3 100644
|
||||
--- a/BinariesCheck.py
|
||||
+++ b/BinariesCheck.py
|
||||
@@ -14,7 +14,7 @@ import sys
|
||||
|
||||
import rpm
|
||||
|
||||
@ -15,11 +21,7 @@ Index: BinariesCheck.py
|
||||
import AbstractCheck
|
||||
import Config
|
||||
import Pkg
|
||||
+import os
|
||||
|
||||
|
||||
DEFAULT_SYSTEM_LIB_PATHS = (
|
||||
@@ -42,6 +44,9 @@ class BinaryInfo:
|
||||
@@ -46,6 +46,9 @@ class BinaryInfo:
|
||||
unused_regex = re.compile('^\s+(\S+)')
|
||||
exit_call_regex = create_regexp_call('_?exit')
|
||||
fork_call_regex = create_regexp_call('fork')
|
||||
@ -27,9 +29,9 @@ Index: BinariesCheck.py
|
||||
+ symtab_regex=re.compile('^\s+\[\s*\d+\]\s+\.symtab\s+')
|
||||
+ gethostbyname_call_regex = re.compile('\s+FUNC\s+.*?\s+(gethostbyname(?:@\S+)?)(?:\s|$)')
|
||||
# regexp for setgid setegid setresgid set(?:res|e)?gid
|
||||
setgid_call_regex = create_regexp_call(['setresgid','setegid','setgid'])
|
||||
setuid_call_regex = create_regexp_call(['setresuid','seteuid','setuid'])
|
||||
@@ -62,7 +67,10 @@ class BinaryInfo:
|
||||
setgid_call_regex = create_regexp_call(['setresgid', 'setegid', 'setgid'])
|
||||
setuid_call_regex = create_regexp_call(['setresuid', 'seteuid', 'setuid'])
|
||||
@@ -66,7 +69,10 @@ class BinaryInfo:
|
||||
self.stack = False
|
||||
self.exec_stack = False
|
||||
self.exit_calls = []
|
||||
@ -40,7 +42,7 @@ Index: BinariesCheck.py
|
||||
self.tail = ''
|
||||
|
||||
self.setgid = False
|
||||
@@ -131,6 +139,11 @@ class BinaryInfo:
|
||||
@@ -135,6 +141,11 @@ class BinaryInfo:
|
||||
self.exec_stack = True
|
||||
continue
|
||||
|
||||
@ -52,7 +54,7 @@ Index: BinariesCheck.py
|
||||
if is_shlib:
|
||||
r = BinaryInfo.exit_call_regex.search(l)
|
||||
if r:
|
||||
@@ -141,6 +154,14 @@ class BinaryInfo:
|
||||
@@ -145,6 +156,14 @@ class BinaryInfo:
|
||||
fork_called = True
|
||||
continue
|
||||
|
||||
@ -67,7 +69,7 @@ Index: BinariesCheck.py
|
||||
if self.non_pic:
|
||||
self.non_pic = 'TEXTREL' in res[1]
|
||||
|
||||
@@ -330,13 +351,26 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
@@ -339,13 +358,26 @@ class BinariesCheck(AbstractCheck.AbstractCheck):
|
||||
continue
|
||||
|
||||
# stripped ?
|
||||
@ -95,7 +97,7 @@ Index: BinariesCheck.py
|
||||
if is_shlib:
|
||||
has_lib = True
|
||||
|
||||
@@ -386,6 +420,10 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
@@ -396,6 +428,10 @@ class BinariesCheck(AbstractCheck.AbstractCheck):
|
||||
for ec in bin_info.exit_calls:
|
||||
printWarning(pkg, 'shared-lib-calls-exit', fname, ec)
|
||||
|
||||
@ -106,7 +108,7 @@ Index: BinariesCheck.py
|
||||
# rpath ?
|
||||
if bin_info.rpath:
|
||||
for p in bin_info.rpath:
|
||||
@@ -590,6 +628,14 @@ with the intended shared libraries only.
|
||||
@@ -603,6 +639,14 @@ with the intended shared libraries only.''',
|
||||
'ldd-failed',
|
||||
'''Executing ldd on this file failed, all checks could not be run.''',
|
||||
|
||||
@ -121,7 +123,7 @@ Index: BinariesCheck.py
|
||||
'executable-stack',
|
||||
'''The binary declares the stack as executable. Executable stack is usually an
|
||||
error as it is only needed if the code contains GCC trampolines or similar
|
||||
@@ -602,6 +648,10 @@ don\'t define a proper .note.GNU-stack s
|
||||
@@ -615,6 +659,10 @@ don\'t define a proper .note.GNU-stack section.''',
|
||||
make the stack executable. Usual suspects include use of a non-GNU linker or
|
||||
an old GNU linker version.''',
|
||||
|
||||
@ -132,7 +134,7 @@ Index: BinariesCheck.py
|
||||
'shared-lib-calls-exit',
|
||||
'''This library package calls exit() or _exit(), probably in a non-fork()
|
||||
context. Doing so from a library is strongly discouraged - when a library
|
||||
@@ -620,6 +670,12 @@ that use prelink, make sure that prelink
|
||||
@@ -633,6 +681,12 @@ that use prelink, make sure that prelink does not strip it either, usually by
|
||||
placing a blacklist file in /etc/prelink.conf.d. For more information, see
|
||||
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=256900#49''',
|
||||
|
||||
|
@ -1,25 +0,0 @@
|
||||
--- BinariesCheck.py
|
||||
+++ BinariesCheck.py
|
||||
@@ -56,10 +56,11 @@
|
||||
self.debuginfo=0
|
||||
self.symtab=0
|
||||
self.tail = ''
|
||||
+ self.compileOpts = set()
|
||||
|
||||
is_debug=BinaryInfo.debug_file_regex.search(path)
|
||||
|
||||
- cmd = ['env', 'LC_ALL=C', 'readelf', '-W', '-S', '-l', '-d', '-s']
|
||||
+ cmd = ['env', 'LC_ALL=C', 'readelf', '-W', '-S', '-l', '-d', '-s', '-p', '.comment.SUSE.OPTs']
|
||||
cmd.append(path)
|
||||
res = Pkg.getstatusoutput(cmd)
|
||||
if not res[0]:
|
||||
@@ -115,6 +116,9 @@
|
||||
self.symtab=1
|
||||
continue
|
||||
|
||||
+ if l.lower().find(" ospwg") != -1:
|
||||
+ self.compileOpts.add(l.rpartition(' ')[2])
|
||||
+
|
||||
if self.non_pic:
|
||||
self.non_pic=BinaryInfo.non_pic_regex.search(res[1])
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: FilesCheck.py
|
||||
From e9849cceb327c1a6ebf6d0a4ba0cf15d3256776c Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] suse-check-optional-dependencies.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -908,6 +908,16 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
---
|
||||
FilesCheck.py | 28 ++++++++++++++++++++++++++++
|
||||
1 file changed, 28 insertions(+)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index ae9c364..7d2b92f 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -926,6 +926,16 @@ class FilesCheck(AbstractCheck.AbstractCheck):
|
||||
if res.group(1) != pkg.name:
|
||||
printError(pkg, 'incoherent-logrotate-file', f)
|
||||
|
||||
@ -19,7 +29,7 @@ Index: FilesCheck.py
|
||||
if link != '':
|
||||
ext = compr_regex.search(link)
|
||||
if ext:
|
||||
@@ -1730,6 +1740,24 @@ consequences), or other compiler flags w
|
||||
@@ -1717,6 +1727,24 @@ consequences), or other compiler flags which result in rpmbuild's debuginfo
|
||||
extraction not working as expected. Verify that the binaries are not
|
||||
unexpectedly stripped and that the intended compiler flags are used.''',
|
||||
|
||||
|
@ -1,7 +1,17 @@
|
||||
Index: Config.py
|
||||
From 80b89c397099061098a00df263ad3c451f2beaf0 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:37 +0200
|
||||
Subject: [PATCH] suse-checks.diff
|
||||
|
||||
===================================================================
|
||||
--- Config.py.orig
|
||||
+++ Config.py
|
||||
---
|
||||
Config.py | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Config.py b/Config.py
|
||||
index ac3c5ea..f27607c 100644
|
||||
--- a/Config.py
|
||||
+++ b/Config.py
|
||||
@@ -16,14 +16,13 @@ try:
|
||||
except ImportError:
|
||||
__version__ = 'devel'
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: FilesCheck.py
|
||||
From 183222dd3232a4f6d8cde5b4b66aa4c49986bdc4 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] suse-filesystem.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -103,24 +103,415 @@ STANDARD_DIRS = (
|
||||
---
|
||||
FilesCheck.py | 454 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
|
||||
1 file changed, 437 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index 1a70779..9532011 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -102,24 +102,415 @@ STANDARD_DIRS = (
|
||||
'/usr/local/man/mann',
|
||||
'/usr/local/sbin',
|
||||
'/usr/local/share',
|
||||
@ -429,7 +439,7 @@ Index: FilesCheck.py
|
||||
'/usr/share/man',
|
||||
'/usr/share/man/man1',
|
||||
'/usr/share/man/man2',
|
||||
@@ -132,28 +523,57 @@ STANDARD_DIRS = (
|
||||
@@ -131,25 +522,54 @@ STANDARD_DIRS = (
|
||||
'/usr/share/man/man8',
|
||||
'/usr/share/man/man9',
|
||||
'/usr/share/man/mann',
|
||||
@ -473,14 +483,11 @@ Index: FilesCheck.py
|
||||
+ '/var/lib/nobody',
|
||||
+ '/var/lib/pam_devperm',
|
||||
+ '/var/lib/wwwrun',
|
||||
'/var/lock',
|
||||
'/var/lock/subsys',
|
||||
'/var/log',
|
||||
'/var/mail',
|
||||
- '/var/nis',
|
||||
'/var/opt',
|
||||
- '/var/preserve',
|
||||
'/var/run',
|
||||
'/var/spool',
|
||||
+ '/var/spool/clientmqueue',
|
||||
+ '/var/spool/locks',
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: Config.py
|
||||
From 33fa1e8f8c1917d82d26c419321efb7ba9eddc48 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] suse-filter-exception.diff
|
||||
|
||||
===================================================================
|
||||
--- Config.py.orig
|
||||
+++ Config.py
|
||||
@@ -102,11 +102,23 @@ def getOption(name, default = ""):
|
||||
---
|
||||
Config.py | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
|
||||
1 file changed, 54 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/Config.py b/Config.py
|
||||
index f27607c..b4e19cc 100644
|
||||
--- a/Config.py
|
||||
+++ b/Config.py
|
||||
@@ -111,12 +111,23 @@ def getOption(name, default=""):
|
||||
_filters = []
|
||||
_filters_re = None
|
||||
|
||||
@ -11,7 +21,7 @@ Index: Config.py
|
||||
+
|
||||
+_filters_except = []
|
||||
+_filters_except_re = None
|
||||
+
|
||||
|
||||
def addFilter(s):
|
||||
global _filters_re
|
||||
+ global _filters_except
|
||||
@ -26,10 +36,10 @@ Index: Config.py
|
||||
- _filters.append(s)
|
||||
- _filters_re = None
|
||||
|
||||
|
||||
def removeFilter(s):
|
||||
global _filters_re
|
||||
@@ -121,19 +133,38 @@ def removeFilter(s):
|
||||
_scoring = {}
|
||||
@@ -133,8 +144,13 @@ _scoring = {}
|
||||
|
||||
|
||||
def setBadness(s, score):
|
||||
+ global _scoring
|
||||
@ -39,11 +49,11 @@ Index: Config.py
|
||||
+ global _filters_except
|
||||
+
|
||||
+ _filters_except.append(s)
|
||||
+
|
||||
|
||||
def badness(s):
|
||||
return _scoring.get(s, 0)
|
||||
@@ -144,11 +160,24 @@ _non_named_group_re = re.compile('[^\\](\()[^:]')
|
||||
|
||||
_non_named_group_re = re.compile('[^\\](\()[^:]')
|
||||
def isFiltered(s):
|
||||
global _filters_re
|
||||
+ global _filters_except
|
||||
@ -51,7 +61,7 @@ Index: Config.py
|
||||
+ global _filters_non_except
|
||||
+ global _filters_non_except_re
|
||||
|
||||
- if _filters_re == None:
|
||||
- if _filters_re is None:
|
||||
- # no filter
|
||||
- if len(_filters) == 0:
|
||||
- return False
|
||||
@ -71,8 +81,8 @@ Index: Config.py
|
||||
_filters_re = '(?:' + _filters[0] + ')'
|
||||
|
||||
for idx in range(1, len(_filters)):
|
||||
@@ -145,9 +176,27 @@ def isFiltered(s):
|
||||
_filters_re = _filters_re + '|(?:' + _filters[idx] +')'
|
||||
@@ -160,9 +189,27 @@ def isFiltered(s):
|
||||
_filters_re = _filters_re + '|(?:' + _filters[idx] + ')'
|
||||
_filters_re = re.compile(_filters_re)
|
||||
|
||||
+ if _filters_except_re == None and len(_filters_except):
|
||||
|
@ -1,7 +1,17 @@
|
||||
Index: Config.py
|
||||
From 901114eb2ec05cbf2ad16557f0d24cfbc6e8717f Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] suse-filter-more-verbose.diff
|
||||
|
||||
===================================================================
|
||||
--- Config.py.orig
|
||||
+++ Config.py
|
||||
---
|
||||
Config.py | 25 +++++++++++++++++++++++--
|
||||
1 file changed, 23 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Config.py b/Config.py
|
||||
index b4e19cc..c29db24 100644
|
||||
--- a/Config.py
|
||||
+++ b/Config.py
|
||||
@@ -10,6 +10,7 @@
|
||||
import locale
|
||||
import os.path
|
||||
@ -10,7 +20,7 @@ Index: Config.py
|
||||
|
||||
try:
|
||||
from __version__ import __version__
|
||||
@@ -162,7 +163,17 @@ def isFiltered(s):
|
||||
@@ -175,7 +176,17 @@ def isFiltered(s):
|
||||
if '(' in _filters_non_except[idx]:
|
||||
_non_named_group_re.subn('(:?', _filters_non_except[idx])
|
||||
_filters_non_except_re = _filters_non_except_re + '|(?:' + _filters_non_except[idx] +')'
|
||||
@ -29,10 +39,10 @@ Index: Config.py
|
||||
|
||||
if _filters_re == None and len(_filters):
|
||||
_filters_re = '(?:' + _filters[0] + ')'
|
||||
@@ -174,7 +185,17 @@ def isFiltered(s):
|
||||
@@ -187,7 +198,17 @@ def isFiltered(s):
|
||||
if '(' in _filters[idx]:
|
||||
_non_named_group_re.subn('(:?', _filters[idx])
|
||||
_filters_re = _filters_re + '|(?:' + _filters[idx] +')'
|
||||
_filters_re = _filters_re + '|(?:' + _filters[idx] + ')'
|
||||
- _filters_re = re.compile(_filters_re)
|
||||
+ try:
|
||||
+ _filters_re = re.compile(_filters_re)
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: FilesCheck.py
|
||||
From 63be0917d8528f33739c7360631a3a69fa22186c Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:40 +0200
|
||||
Subject: [PATCH] suse-g-ir-chech.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -599,7 +599,7 @@ points_regex = re.compile('^\.\./(.*)')
|
||||
---
|
||||
FilesCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index 1b68dd5..0bb4b3d 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -607,7 +607,7 @@ points_regex = re.compile('^\.\./(.*)')
|
||||
doc_regex = re.compile('^/usr(/share|/X11R6)?/(doc|man|info)/|^/opt/kde3/share/doc|^/usr/share/gnome/help')
|
||||
bin_regex = re.compile('^/(?:usr/(?:s?bin|games)|s?bin)/(.*)')
|
||||
includefile_regex = re.compile('\.(c|h)(pp|xx)?$', re.IGNORECASE)
|
||||
|
@ -1,10 +1,20 @@
|
||||
Index: SpecCheck.py
|
||||
From 70405312535d40c4d3489834af7a1676b10a63ae Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:40 +0200
|
||||
Subject: [PATCH] suse-ignore-specfile-errors.diff
|
||||
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -537,9 +537,8 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||
printWarning(pkg, "patch-not-applied", "Patch%d:" % pnum,
|
||||
pfile)
|
||||
---
|
||||
SpecCheck.py | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/SpecCheck.py b/SpecCheck.py
|
||||
index 60e946b..ace044c 100644
|
||||
--- a/SpecCheck.py
|
||||
+++ b/SpecCheck.py
|
||||
@@ -562,9 +562,8 @@ class SpecCheck(AbstractCheck.AbstractCheck):
|
||||
printWarning(pkg, "patch-not-applied",
|
||||
"Patch%d:" % pnum, pfile)
|
||||
|
||||
- # Rest of the checks require a real spec file
|
||||
- if not self._spec_file:
|
||||
|
23
suse-manpages-for-rc-scripts.diff
Normal file
23
suse-manpages-for-rc-scripts.diff
Normal file
@ -0,0 +1,23 @@
|
||||
From 9d8086e75306f2e90ba402514a6c53da507c0467 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:40 +0200
|
||||
Subject: [PATCH] suse-manpages-for-rc-scripts
|
||||
|
||||
===================================================================
|
||||
---
|
||||
FilesCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index 214ac76..5342871 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -1426,7 +1426,7 @@ class FilesCheck(AbstractCheck.AbstractCheck):
|
||||
for exe, paths in bindir_exes.items():
|
||||
if len(paths) > 1:
|
||||
printWarning(pkg, "duplicate-executable", exe, paths)
|
||||
- if exe not in man_basenames:
|
||||
+ if exe not in man_basenames and not exe.startswith("rc") and len(paths) is not 0:
|
||||
printWarning(pkg, "no-manual-page-for-binary", exe)
|
||||
|
||||
# Create an object to enable the auto registration of the test
|
@ -1,32 +0,0 @@
|
||||
--- TagsCheck.py
|
||||
+++ TagsCheck.py
|
||||
@@ -686,6 +686,17 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
for p in useless_provides:
|
||||
printError(pkg, 'useless-explicit-provides',p)
|
||||
|
||||
+ have_mono_reqs=False
|
||||
+ for r in req_names + prov_names:
|
||||
+ if r.startswith('mono('):
|
||||
+ have_mono_reqs=True
|
||||
+ break
|
||||
+
|
||||
+ if not have_mono_reqs:
|
||||
+ for fname in pkg.files():
|
||||
+ if fname.endswith('.dll'):
|
||||
+ printError(pkg, 'mono-versioned-deps-missing', fname)
|
||||
+
|
||||
useless_reqs=set()
|
||||
for r in reqs:
|
||||
if not r in useless_reqs:
|
||||
@@ -901,6 +912,11 @@ upgrade path. self-provides are autogenerated. Remove the provide.''',
|
||||
'obsolete-on-name',
|
||||
'''A package should not obsolete itself, as it can cause weird errors in tools.''',
|
||||
|
||||
+'mono-versioned-deps-missing',
|
||||
+'''This package appears to be related to mono, but doesn't have versioned
|
||||
+mono provides being generated. Add mono-devel to the buildrequires to
|
||||
+build the package with the correct provides.''',
|
||||
+
|
||||
'invalid-filepath-dependency',
|
||||
'''A package has a file or path based dependency that is not resolveable for
|
||||
package solvers because it is not in the whitelist for path based dependencies
|
@ -1,9 +1,19 @@
|
||||
Index: SpecCheck.py
|
||||
From cc1c035a8d572cd0005d999e4e1f3dc76a31efd4 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] suse-no-run-ldconfig.diff
|
||||
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -424,6 +424,10 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||
printWarning(pkg, 'comparison-operator-in-deptoken',
|
||||
---
|
||||
SpecCheck.py | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
diff --git a/SpecCheck.py b/SpecCheck.py
|
||||
index 63897f2..12b6f2b 100644
|
||||
--- a/SpecCheck.py
|
||||
+++ b/SpecCheck.py
|
||||
@@ -448,6 +448,10 @@ class SpecCheck(AbstractCheck.AbstractCheck):
|
||||
'comparison-operator-in-deptoken',
|
||||
conf)
|
||||
|
||||
+ if current_section in ('post', 'postun'):
|
||||
@ -13,7 +23,7 @@ Index: SpecCheck.py
|
||||
if current_section == 'changelog':
|
||||
for match in AbstractCheck.macro_regex.findall(line):
|
||||
res = re.match('%+', match)
|
||||
@@ -748,6 +752,14 @@ may break short circuit builds.''',
|
||||
@@ -773,6 +777,14 @@ may break short circuit builds.''',
|
||||
'''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.''',
|
||||
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: TagsCheck.py
|
||||
From ef47fdf1ddf38ef1ff48b31242a75955042f468f Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] suse-pkg-config-check.diff
|
||||
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -415,6 +415,7 @@ lib_devel_number_regex = re.compile('^li
|
||||
---
|
||||
TagsCheck.py | 19 ++++++++++++++++++-
|
||||
1 file changed, 18 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/TagsCheck.py b/TagsCheck.py
|
||||
index d49239f..0a56b7d 100644
|
||||
--- a/TagsCheck.py
|
||||
+++ b/TagsCheck.py
|
||||
@@ -416,6 +416,7 @@ lib_devel_number_regex = re.compile('^lib(.*?)([0-9.]+)(_[0-9.]+)?-devel')
|
||||
invalid_url_regex = re.compile(Config.getOption('InvalidURL'), re.IGNORECASE)
|
||||
lib_package_regex = re.compile('(?:^(?:compat-)?lib.*?(\.so.*)?|libs?[\d-]*)$', re.IGNORECASE)
|
||||
leading_space_regex = re.compile('^\s+')
|
||||
@ -10,7 +20,7 @@ Index: TagsCheck.py
|
||||
license_regex = re.compile('\(([^)]+)\)|\s(?:and|or)\s')
|
||||
invalid_version_regex = re.compile('([0-9](?:rc|alpha|beta|pre).*)', re.IGNORECASE)
|
||||
# () are here for grouping purpose in the regexp
|
||||
@@ -626,10 +627,12 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -634,10 +635,12 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
base = is_devel.group(1)
|
||||
dep = None
|
||||
has_so = False
|
||||
@ -24,7 +34,7 @@ Index: TagsCheck.py
|
||||
if has_so:
|
||||
base_or_libs = base + '/' + base + '-libs/lib' + base
|
||||
# try to match *%_isa as well (e.g. "(x86-64)", "(x86-32)")
|
||||
@@ -666,6 +669,15 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -674,6 +677,15 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
if prov not in (x[0] for x in pkg.provides()):
|
||||
printWarning(pkg, 'no-provides', prov)
|
||||
|
||||
@ -40,7 +50,7 @@ Index: TagsCheck.py
|
||||
# List of words to ignore in spell check
|
||||
ignored_words = set()
|
||||
for pf in pkg.files():
|
||||
@@ -1099,6 +1111,11 @@ once.''',
|
||||
@@ -1112,6 +1124,11 @@ once.''',
|
||||
'no-url-tag',
|
||||
'''The URL tag is missing. Please add a http or ftp link to the project location.''',
|
||||
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: FilesCheck.py
|
||||
From ebde573491954aa965530c0147d00d4f3400a647 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:40 +0200
|
||||
Subject: [PATCH] suse-python-abi-check.diff
|
||||
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -1110,8 +1110,11 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
---
|
||||
FilesCheck.py | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index acb379f..214ac76 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -1129,8 +1129,11 @@ class FilesCheck(AbstractCheck.AbstractCheck):
|
||||
if res and not (pkg.check_versioned_dep('python-base',
|
||||
res.group(1)) or
|
||||
pkg.check_versioned_dep('python',
|
||||
|
@ -1,7 +1,17 @@
|
||||
Index: NamingPolicyCheck.py
|
||||
From 04dd83f02896ad46f4db5b6115e18eb80a5e8bdf Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:37 +0200
|
||||
Subject: [PATCH] suse-python3-naming-policy.diff
|
||||
|
||||
===================================================================
|
||||
--- NamingPolicyCheck.py.orig
|
||||
+++ NamingPolicyCheck.py
|
||||
---
|
||||
NamingPolicyCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/NamingPolicyCheck.py b/NamingPolicyCheck.py
|
||||
index 231b936..96fb91d 100644
|
||||
--- a/NamingPolicyCheck.py
|
||||
+++ b/NamingPolicyCheck.py
|
||||
@@ -90,7 +90,7 @@ check = NamingPolicyCheck()
|
||||
|
||||
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- InitScriptCheck.py
|
||||
+++ InitScriptCheck.py
|
||||
@@ -105,7 +105,7 @@ class InitScriptCheck(AbstractCheck.AbstractCheck):
|
||||
|
||||
# TODO: where is it specified that these (or some)
|
||||
# keywords are mandatory?
|
||||
- for i in ('Provides', 'Description', 'Short-Description'):
|
||||
+ for i in ('Provides', 'Required-Start', 'Required-Stop', 'Default-Start'):
|
||||
if i not in lsb_tags.keys():
|
||||
printError(pkg, 'missing-mandatory-lsb-keyword', "%s in %s" % (i, f))
|
||||
if in_lsb_tag:
|
@ -1,8 +1,18 @@
|
||||
Index: TagsCheck.py
|
||||
From f32933089f8ee5df3c918bc031d41a143624f7b9 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] suse-shlib-devel-dependency.diff
|
||||
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -639,10 +639,10 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
---
|
||||
TagsCheck.py | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/TagsCheck.py b/TagsCheck.py
|
||||
index 18cbb6e..fc392e5 100644
|
||||
--- a/TagsCheck.py
|
||||
+++ b/TagsCheck.py
|
||||
@@ -642,10 +642,10 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
if pkg_config_regex.match(fname) and fname.endswith('.pc'):
|
||||
has_pc = True
|
||||
if has_so:
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: SpecCheck.py
|
||||
From bfd4f480818bccedf8c5a7c45eeaa35f0968c27a Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:40 +0200
|
||||
Subject: [PATCH] suse-speccheck-utf8.diff
|
||||
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -625,8 +625,8 @@ SPEC file to build a valid RPM package.'
|
||||
---
|
||||
SpecCheck.py | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/SpecCheck.py b/SpecCheck.py
|
||||
index d0d381a..60e946b 100644
|
||||
--- a/SpecCheck.py
|
||||
+++ b/SpecCheck.py
|
||||
@@ -650,8 +650,8 @@ SPEC file to build a valid RPM package.''',
|
||||
("Name:" tag). Either rename your package or the specfile.''',
|
||||
|
||||
'non-utf8-spec-file',
|
||||
|
79
suse-sysv-init-checks.diff
Normal file
79
suse-sysv-init-checks.diff
Normal file
@ -0,0 +1,79 @@
|
||||
From 738e37c34c66a665012bcf6b123b81717c16d3f3 Mon Sep 17 00:00:00 2001
|
||||
From: Ludwig Nussel <ludwig.nussel@suse.de>
|
||||
Date: Fri, 10 Apr 2015 14:38:22 +0200
|
||||
Subject: [PATCH] suse sysv init checks
|
||||
|
||||
we don't use chkconfig but have different macros
|
||||
---
|
||||
InitScriptCheck.py | 44 ++++++++++++++++++++++++++++++--------------
|
||||
1 file changed, 30 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/InitScriptCheck.py b/InitScriptCheck.py
|
||||
index fb53d93..1a58562 100644
|
||||
--- a/InitScriptCheck.py
|
||||
+++ b/InitScriptCheck.py
|
||||
@@ -36,6 +36,10 @@ LSB_KEYWORDS = ('Provides', 'Required-Start', 'Required-Stop', 'Should-Start',
|
||||
RECOMMENDED_LSB_KEYWORDS = ('Provides', 'Required-Start', 'Required-Stop',
|
||||
'Default-Stop', 'Short-Description')
|
||||
|
||||
+suse = True
|
||||
+stop_on_removal_regex=re.compile('bin/systemctl stop \$service >/dev/null')
|
||||
+restart_on_update_regex=re.compile('bin/systemctl try-restart \$service >/dev/null')
|
||||
+insserv_cleanup_regex=re.compile('^\s*/sbin/insserv /etc/init.d$', re.MULTILINE)
|
||||
|
||||
class InitScriptCheck(AbstractCheck.AbstractCheck):
|
||||
|
||||
@@ -44,6 +48,12 @@ class InitScriptCheck(AbstractCheck.AbstractCheck):
|
||||
|
||||
def check_binary(self, pkg):
|
||||
initscript_list = []
|
||||
+
|
||||
+ # check chkconfig call in %post and %preun
|
||||
+ postin = Pkg.b2s(pkg[rpm.RPMTAG_POSTIN]) or pkg.scriptprog(rpm.RPMTAG_POSTINPROG)
|
||||
+ preun = Pkg.b2s(pkg[rpm.RPMTAG_PREUN]) or pkg.scriptprog(rpm.RPMTAG_PREUNPROG)
|
||||
+ postun = Pkg.b2s(pkg[rpm.RPMTAG_POSTUN]) or pkg.scriptprog(rpm.RPMTAG_POSTUNPROG)
|
||||
+
|
||||
for fname, pkgfile in pkg.files().items():
|
||||
|
||||
if not fname.startswith('/etc/init.d/') and \
|
||||
@@ -61,20 +71,26 @@ class InitScriptCheck(AbstractCheck.AbstractCheck):
|
||||
if "." in basename:
|
||||
printError(pkg, 'init-script-name-with-dot', fname)
|
||||
|
||||
- # check chkconfig call in %post and %preun
|
||||
- postin = Pkg.b2s(pkg[rpm.RPMTAG_POSTIN]) or \
|
||||
- pkg.scriptprog(rpm.RPMTAG_POSTINPROG)
|
||||
- if not postin:
|
||||
- printError(pkg, 'init-script-without-chkconfig-postin', fname)
|
||||
- elif not chkconfig_regex.search(postin):
|
||||
- printError(pkg, 'postin-without-chkconfig', fname)
|
||||
-
|
||||
- preun = Pkg.b2s(pkg[rpm.RPMTAG_PREUN]) or \
|
||||
- pkg.scriptprog(rpm.RPMTAG_PREUNPROG)
|
||||
- if not preun:
|
||||
- printError(pkg, 'init-script-without-chkconfig-preun', fname)
|
||||
- elif not chkconfig_regex.search(preun):
|
||||
- printError(pkg, 'preun-without-chkconfig', fname)
|
||||
+ if not suse:
|
||||
+ if not postin:
|
||||
+ printError(pkg, 'init-script-without-chkconfig-postin', fname)
|
||||
+ elif not chkconfig_regex.search(postin):
|
||||
+ printError(pkg, 'postin-without-chkconfig', fname)
|
||||
+
|
||||
+ if not preun:
|
||||
+ printError(pkg, 'init-script-without-chkconfig-preun', fname)
|
||||
+ elif not chkconfig_regex.search(preun):
|
||||
+ printError(pkg, 'preun-without-chkconfig', fname)
|
||||
+
|
||||
+ else:
|
||||
+ if not preun or not stop_on_removal_regex.search(preun):
|
||||
+ printError(pkg, 'init-script-without-%stop_on_removal-preun', fname)
|
||||
+
|
||||
+ if not postun or not restart_on_update_regex.search(postun):
|
||||
+ printError(pkg, 'init-script-without-%restart_on_update-postun', fname)
|
||||
+
|
||||
+ if not postun or not insserv_cleanup_regex.search(postun):
|
||||
+ printError(pkg, 'init-script-without-%insserv_cleanup-postun', fname)
|
||||
|
||||
status_found = False
|
||||
reload_found = False
|
@ -1,17 +1,27 @@
|
||||
Index: TagsCheck.py
|
||||
From 3c022dc151d18c32c2d3a7f3efdaed0d8ed39245 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:37 +0200
|
||||
Subject: [PATCH] suse-url-check.diff
|
||||
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -781,7 +781,7 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
---
|
||||
TagsCheck.py | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/TagsCheck.py b/TagsCheck.py
|
||||
index fa38a07..d49239f 100644
|
||||
--- a/TagsCheck.py
|
||||
+++ b/TagsCheck.py
|
||||
@@ -794,7 +794,7 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
if not valid_license:
|
||||
self._unexpanded_macros(pkg, 'License', rpm_license)
|
||||
|
||||
- for tag in ('URL', 'DistURL', 'BugURL'):
|
||||
+ for tag in ('URL', 'BugURL'):
|
||||
if hasattr(rpm, 'RPMTAG_%s' % tag.upper()):
|
||||
url = pkg[getattr(rpm, 'RPMTAG_%s' % tag.upper())]
|
||||
self._unexpanded_macros(pkg, tag, url, is_url = True)
|
||||
@@ -1097,7 +1097,7 @@ once.''',
|
||||
url = Pkg.b2s(pkg[getattr(rpm, 'RPMTAG_%s' % tag.upper())])
|
||||
self._unexpanded_macros(pkg, tag, url, is_url=True)
|
||||
@@ -1110,7 +1110,7 @@ once.''',
|
||||
'''This rpm requires a specific release of another package.''',
|
||||
|
||||
'no-url-tag',
|
||||
|
@ -1,16 +1,26 @@
|
||||
Index: SpecCheck.py
|
||||
From 79b3a5168fc9e2be4f74624a63721e6b77c40020 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:37 +0200
|
||||
Subject: [PATCH] suse-version.diff
|
||||
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -66,6 +66,7 @@ libdir_regex = re.compile('%{?_lib(?:dir
|
||||
---
|
||||
SpecCheck.py | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/SpecCheck.py b/SpecCheck.py
|
||||
index 2b24b43..9ea5c6e 100644
|
||||
--- a/SpecCheck.py
|
||||
+++ b/SpecCheck.py
|
||||
@@ -66,6 +66,7 @@ libdir_regex = re.compile('%{?_lib(?:dir)?\}?\\b')
|
||||
comment_or_empty_regex = re.compile('^\s*(#|$)')
|
||||
defattr_regex = re.compile('^\s*%defattr\\b')
|
||||
attr_regex = re.compile('^\s*%attr\\b')
|
||||
+suse_version_regex = re.compile('%suse_version\s*[<>=]+\s*(\d+)')
|
||||
section_regexs = dict(
|
||||
([x, re.compile('^%' + x + '(?:\s|$)')]
|
||||
for x in ['build', 'changelog', 'check', 'clean', 'description', 'files',
|
||||
@@ -369,6 +370,12 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||
for x in ('build', 'changelog', 'check', 'clean', 'description', 'files',
|
||||
@@ -387,6 +388,12 @@ class SpecCheck(AbstractCheck.AbstractCheck):
|
||||
if not res.group(1).startswith('%'):
|
||||
printWarning(pkg, 'hardcoded-prefix-tag', res.group(1))
|
||||
|
||||
@ -23,7 +33,7 @@ Index: SpecCheck.py
|
||||
res = prereq_regex.search(line)
|
||||
if res:
|
||||
printError(pkg, 'prereq-use', res.group(2))
|
||||
@@ -790,6 +797,15 @@ in the resulting binary package dependin
|
||||
@@ -815,6 +822,15 @@ in the resulting binary package depending on the build environment and rpmbuild
|
||||
version (typically < 4.4). Add default attributes using %defattr before it in
|
||||
the %files section, or use per entry %attr's.''',
|
||||
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: TagsCheck.py
|
||||
From 7157c6617f37aae4fd6a0cc3da3f9620b52a1b59 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:40 +0200
|
||||
Subject: [PATCH] suse-whitelist-opensuse.diff
|
||||
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -891,7 +891,7 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
---
|
||||
TagsCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/TagsCheck.py b/TagsCheck.py
|
||||
index 40ce77a..3c68d28 100644
|
||||
--- a/TagsCheck.py
|
||||
+++ b/TagsCheck.py
|
||||
@@ -912,7 +912,7 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
spell_check(pkg, utf8summary, 'Summary(%s)', lang, ignored_words)
|
||||
if '\n' in summary:
|
||||
printError(pkg, 'summary-on-multiple-lines', lang)
|
||||
|
@ -1,76 +0,0 @@
|
||||
Index: InitScriptCheck.py
|
||||
===================================================================
|
||||
--- InitScriptCheck.py.orig
|
||||
+++ InitScriptCheck.py
|
||||
@@ -30,6 +30,10 @@ lsb_tags_regex = re.compile('^# ([\w-]+)
|
||||
lsb_cont_regex = re.compile('^#(?:\t| )(.*?)\s*$')
|
||||
use_subsys = Config.getOption('UseVarLockSubsys', True)
|
||||
|
||||
+stop_on_removal_regex=re.compile('bin/systemctl stop \$service >/dev/null')
|
||||
+restart_on_update_regex=re.compile('bin/systemctl try-restart \$service >/dev/null')
|
||||
+insserv_cleanup_regex=re.compile('^\s*/sbin/insserv /etc/init.d$', re.MULTILINE)
|
||||
+
|
||||
LSB_KEYWORDS = ('Provides', 'Required-Start', 'Required-Stop', 'Should-Start',
|
||||
'Should-Stop', 'Default-Start', 'Default-Stop',
|
||||
'Short-Description', 'Description')
|
||||
@@ -47,6 +51,13 @@ class InitScriptCheck(AbstractCheck.Abst
|
||||
return
|
||||
|
||||
initscript_list = []
|
||||
+
|
||||
+
|
||||
+ # check chkconfig call in %post and %preun
|
||||
+ postin = pkg[rpm.RPMTAG_POSTIN] or pkg.scriptprog(pkg[rpm.RPMTAG_POSTINPROG])
|
||||
+ preun = pkg[rpm.RPMTAG_PREUN] or pkg.scriptprog(pkg[rpm.RPMTAG_PREUNPROG])
|
||||
+ postun = pkg[rpm.RPMTAG_POSTUN] or pkg.scriptprog(pkg[rpm.RPMTAG_POSTUNPROG])
|
||||
+
|
||||
for fname, pkgfile in pkg.files().items():
|
||||
|
||||
if not fname.startswith('/etc/init.d/') and \
|
||||
@@ -61,20 +72,16 @@ class InitScriptCheck(AbstractCheck.Abst
|
||||
if "." in basename:
|
||||
printError(pkg, 'init-script-name-with-dot', fname)
|
||||
|
||||
- # check chkconfig call in %post and %preun
|
||||
- postin = pkg[rpm.RPMTAG_POSTIN] or \
|
||||
- pkg.scriptprog(rpm.RPMTAG_POSTINPROG)
|
||||
- if not postin:
|
||||
- printError(pkg, 'init-script-without-chkconfig-postin', fname)
|
||||
- elif not chkconfig_regex.search(postin):
|
||||
- printError(pkg, 'postin-without-chkconfig', fname)
|
||||
-
|
||||
preun = pkg[rpm.RPMTAG_PREUN] or \
|
||||
pkg.scriptprog(rpm.RPMTAG_PREUNPROG)
|
||||
- if not preun:
|
||||
- printError(pkg, 'init-script-without-chkconfig-preun', fname)
|
||||
- elif not chkconfig_regex.search(preun):
|
||||
- printError(pkg, 'preun-without-chkconfig', fname)
|
||||
+ if not preun or not stop_on_removal_regex.search(preun):
|
||||
+ printError(pkg, 'init-script-without-%stop_on_removal-preun', fname)
|
||||
+
|
||||
+ if not postun or not restart_on_update_regex.search(postun):
|
||||
+ printError(pkg, 'init-script-without-%restart_on_update-postun', fname)
|
||||
+
|
||||
+ if not postun or not insserv_cleanup_regex.search(postun):
|
||||
+ printError(pkg, 'init-script-without-%insserv_cleanup-postun', fname)
|
||||
|
||||
status_found = False
|
||||
reload_found = False
|
||||
@@ -276,6 +283,17 @@ of chkconfig don't work as expected with
|
||||
'init-script-non-executable',
|
||||
'''The init script should have at least the execution bit set for root
|
||||
in order for it to run at boot time.''',
|
||||
+
|
||||
+'init-script-without-%stop_on_removal-preun',
|
||||
+'''The init script should have a %preun script that calls %stop_on_removal.''',
|
||||
+
|
||||
+'init-script-without-%insserv_cleanup-postun',
|
||||
+'''The package doesn't have a %insserv_cleanup call in %postun''',
|
||||
+
|
||||
+'init-script-without-%restart_on_update-postun',
|
||||
+''' The package has an init script but is missing the %restart_on_update
|
||||
+call in %postun to automatically restart the daemon. This is optional,
|
||||
+but in most cases it is wanted. Please check.'''
|
||||
)
|
||||
|
||||
# InitScriptCheck.py ends here
|
@ -1,16 +1,26 @@
|
||||
Index: BinariesCheck.py
|
||||
From 20d0203074b713a337cad87d8db5713bcc0bbf63 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] usr-arch.diff
|
||||
|
||||
===================================================================
|
||||
--- BinariesCheck.py.orig
|
||||
+++ BinariesCheck.py
|
||||
@@ -263,6 +263,7 @@ usr_lib_exception_regex = re.compile(Con
|
||||
---
|
||||
BinariesCheck.py | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/BinariesCheck.py b/BinariesCheck.py
|
||||
index a74d3e3..c1c566d 100644
|
||||
--- a/BinariesCheck.py
|
||||
+++ b/BinariesCheck.py
|
||||
@@ -270,6 +270,7 @@ usr_lib_exception_regex = re.compile(Config.getOption('UsrLibBinaryException', '
|
||||
srcname_regex = re.compile('(.*?)-[0-9]')
|
||||
invalid_dir_ref_regex = re.compile('/(home|tmp)(\W|$)')
|
||||
ocaml_mixed_regex = re.compile('^Caml1999X0\d\d$')
|
||||
+usr_arch_share_regex = re.compile('/share/.*/(?:x86|i.86|x86_64|ppc|ppc64|s390|s390x|ia64|m68k|arm|aarch64)')
|
||||
|
||||
|
||||
def dir_base(path):
|
||||
res = path_regex.search(path)
|
||||
@@ -336,7 +337,7 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
@@ -343,7 +344,7 @@ class BinariesCheck(AbstractCheck.AbstractCheck):
|
||||
# arch dependent packages only from here on
|
||||
|
||||
# in /usr/share ?
|
||||
|
@ -1,105 +0,0 @@
|
||||
--- SpecCheck.py
|
||||
+++ SpecCheck.py
|
||||
@@ -45,7 +45,8 @@
|
||||
biarch_package_regex = re.compile(DEFAULT_BIARCH_PACKAGES)
|
||||
hardcoded_lib_path_exceptions_regex = re.compile(Config.getOption('HardcodedLibPathExceptions', DEFAULT_HARDCODED_LIB_PATH_EXCEPTIONS))
|
||||
prereq_regex = re.compile('^PreReq(\(.*\))?:\s*(.+?)\s*$', re.IGNORECASE)
|
||||
-buildprereq_regex = re.compile('^BuildPreReq:\s*(.+?)\s*$', re.IGNORECASE)
|
||||
+buildprereq_regex = re.compile('^BuildPreReq\s*:\s*(.+)\s*$', re.IGNORECASE)
|
||||
+buildrequires_regex = re.compile('^\s*BuildRequires\s*:\s*(.+)\s*$', re.IGNORECASE)
|
||||
use_utf8 = Config.getOption('UseUTF8', Config.USEUTF8_DEFAULT)
|
||||
macro_regex = re.compile('(%+)[{(]?(\w+)')
|
||||
libdir_regex = re.compile('%{?_lib(?:dir)?\}?\\b')
|
||||
@@ -126,6 +127,25 @@
|
||||
res.append(tok)
|
||||
return res
|
||||
|
||||
+def find_reverse_requires():
|
||||
+ reverse_requires = dict()
|
||||
+ try:
|
||||
+ f = file("/.builtinfo/rpmdeps", "r")
|
||||
+ except:
|
||||
+ return reverse_requires
|
||||
+
|
||||
+ for line in f:
|
||||
+ if line.startswith('R:'):
|
||||
+ package = "-".join(line.split(':')[1].split('-')[:-3])
|
||||
+ deps = deptokens(line.split(':')[2])
|
||||
+ for dep in deps:
|
||||
+ name = dep.split(' ')[0]
|
||||
+ if name.startswith('/') or name.find('(') != -1 or name == dep:
|
||||
+ continue
|
||||
+ reverse_requires.setdefault(name, set()).add(package)
|
||||
+
|
||||
+ return reverse_requires
|
||||
+
|
||||
def contains_buildroot(line):
|
||||
'''Check if the given line contains use of rpm buildroot.'''
|
||||
res = rpm_buildroot_regex.search(line)
|
||||
@@ -188,6 +208,8 @@
|
||||
indent_tabs = 0
|
||||
files_has_defattr = 0
|
||||
section = {}
|
||||
+ buildrequires = set()
|
||||
+
|
||||
for sec in ['description', 'prep', 'build', 'install', 'clean',
|
||||
'files', 'changelog', 'package', 'check']:
|
||||
section[sec] = {
|
||||
@@ -348,6 +370,14 @@
|
||||
if res:
|
||||
printError(pkg, 'buildprereq-use', res.group(1))
|
||||
|
||||
+ res = buildrequires_regex.search(line)
|
||||
+ if not if_depth and res:
|
||||
+ for r in deptokens(res.group(1)):
|
||||
+ name = r.split(' ')[0]
|
||||
+ if name in buildrequires:
|
||||
+ printWarning(pkg, 'duplicate-buildrequires', name)
|
||||
+ buildrequires.add(name)
|
||||
+
|
||||
if scriptlet_requires_regex.search(line):
|
||||
printError(pkg, 'broken-syntax-in-scriptlet-requires', string.strip(line))
|
||||
|
||||
@@ -420,6 +450,24 @@
|
||||
'(spaces: line %d, tab: line %d)' %
|
||||
(indent_spaces, indent_tabs))
|
||||
|
||||
+ reverse_requires = find_reverse_requires()
|
||||
+ for r in buildrequires:
|
||||
+ if r in reverse_requires:
|
||||
+ for rev in reverse_requires[r]:
|
||||
+ if rev in buildrequires:
|
||||
+ printWarning(pkg, 'unnecessary-buildrequires', r, 'already included by', rev)
|
||||
+
|
||||
+ if not r.endswith("-devel"):
|
||||
+ develr = [ r + "-devel" ]
|
||||
+ # libfoo-4_2 -> libfoo-devel
|
||||
+ dr2 = re.sub(r'-?[0-9_]+$', '', r) + "-devel"
|
||||
+ if dr2 != develr[0]:
|
||||
+ develr.append(dr2);
|
||||
+ for dr in develr:
|
||||
+ if r in reverse_requires and dr in reverse_requires[r] \
|
||||
+ and not dr in buildrequires:
|
||||
+ printWarning(pkg, "non-devel-buildrequires", r, "- did you mean", dr, "?")
|
||||
+
|
||||
# process gathered info
|
||||
for p in patches.keys():
|
||||
if p in applied_patches_ifarch:
|
||||
@@ -557,6 +605,17 @@
|
||||
odd entries eg. in source rpms, which is rarely wanted. Avoid use of macros
|
||||
in %changelog altogether, or use two '%'s to escape them, like '%%foo'.''',
|
||||
|
||||
+'unnecessary-buildrequires',
|
||||
+''' The specfile contains a buildrequires entry that seems to be already
|
||||
+requires by one of the other buildrequires. Please consider reducing your
|
||||
+buildrequires definitions in case this is a real implicit dependency.''',
|
||||
+
|
||||
+'non-devel-buildrequires',
|
||||
+'''The specfile contains a buildrequires entry that has a -devel package.
|
||||
+Please carefully check if you want to buildrequire the -devel subpackage or if
|
||||
+this is an unnecessary dependency that is already required by one of the other
|
||||
+buildrequires.''',
|
||||
+
|
||||
'depscript-without-disabling-depgen',
|
||||
'''In some common rpm configurations/versions, defining __find_provides and/or
|
||||
__find_requires has no effect if rpm's internal dependency generator has not
|
@ -1,9 +1,18 @@
|
||||
From b7555312b3496b9e15bae3d292fa038227c072e0 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:39 +0200
|
||||
Subject: [PATCH] version-control-internal-file.diff
|
||||
|
||||
also detect RCS files
|
||||
Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -612,7 +612,7 @@ ldconfig_regex = re.compile('^[^#]*ldcon
|
||||
---
|
||||
FilesCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/FilesCheck.py b/FilesCheck.py
|
||||
index 7d2b92f..efda328 100644
|
||||
--- a/FilesCheck.py
|
||||
+++ b/FilesCheck.py
|
||||
@@ -620,7 +620,7 @@ ldconfig_regex = re.compile('^[^#]*ldconfig', re.MULTILINE)
|
||||
depmod_regex = re.compile('^[^#]*depmod', re.MULTILINE)
|
||||
install_info_regex = re.compile('^[^#]*install-info', re.MULTILINE)
|
||||
perl_temp_file_regex = re.compile('.*perl.*/(\.packlist|perllocal\.pod)$')
|
||||
|
@ -1,27 +0,0 @@
|
||||
Index: rpmlint-1.5/MenuXDGCheck.py
|
||||
===================================================================
|
||||
--- rpmlint-1.5.orig/MenuXDGCheck.py
|
||||
+++ rpmlint-1.5/MenuXDGCheck.py
|
||||
@@ -43,13 +43,16 @@ class MenuXDGCheck(AbstractCheck.Abstrac
|
||||
printError(pkg, 'non-utf8-desktopfile', filename)
|
||||
|
||||
self.cfp.read(f)
|
||||
- binary = self.cfp.get('Desktop Entry','Exec').split(' ',1)[0]
|
||||
+ binary = None
|
||||
found = False
|
||||
- for i in STANDARD_BIN_DIRS:
|
||||
- if os.path.exists(root + i + binary):
|
||||
- # no need to check if the binary is +x, rpmlint does it
|
||||
- # in another place
|
||||
- found = True
|
||||
+ if self.cfp.has_option('Desktop Entry','Exec'):
|
||||
+ binary = self.cfp.get('Desktop Entry','Exec').split(' ',1)[0]
|
||||
+
|
||||
+ for i in STANDARD_BIN_DIRS:
|
||||
+ if os.path.exists(root + i + binary):
|
||||
+ # no need to check if the binary is +x, rpmlint does it
|
||||
+ # in another place
|
||||
+ found = True
|
||||
if not found and binary:
|
||||
printWarning(pkg, 'desktopfile-without-binary', filename, binary)
|
||||
|
@ -1,10 +1,20 @@
|
||||
Index: MenuXDGCheck.py
|
||||
From 8f5c28a5bce4c922e7b9ab62ad357b2a58e966a2 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] xdg-paths-update.diff
|
||||
|
||||
===================================================================
|
||||
--- MenuXDGCheck.py.orig
|
||||
+++ MenuXDGCheck.py
|
||||
@@ -24,7 +24,7 @@ class MenuXDGCheck(AbstractCheck.Abstrac
|
||||
---
|
||||
MenuXDGCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/MenuXDGCheck.py b/MenuXDGCheck.py
|
||||
index 4aab385..158db23 100644
|
||||
--- a/MenuXDGCheck.py
|
||||
+++ b/MenuXDGCheck.py
|
||||
@@ -24,7 +24,7 @@ class MenuXDGCheck(AbstractCheck.AbstractFilesCheck):
|
||||
# $ echo $XDG_DATA_DIRS/applications
|
||||
# /var/lib/menu-xdg:/usr/share
|
||||
self.cfp = RawConfigParser()
|
||||
AbstractCheck.AbstractFilesCheck.__init__(
|
||||
- self, "MenuXDGCheck", "/usr/share/applications/.*\.desktop$")
|
||||
+ self, "MenuXDGCheck", "(?:/usr/share|/etc/opt/.*/share|/opt/.*)/applications/.*\.desktop$")
|
||||
|
@ -1,8 +1,18 @@
|
||||
Index: TagsCheck.py
|
||||
From 75c0cb8cc089bdbe907c776a78a296d8f1a48cf6 Mon Sep 17 00:00:00 2001
|
||||
From: Some One <nobody@opensuse.org>
|
||||
Date: Thu, 9 Apr 2015 14:55:38 +0200
|
||||
Subject: [PATCH] yast-provides.diff
|
||||
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -821,7 +821,7 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
---
|
||||
TagsCheck.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/TagsCheck.py b/TagsCheck.py
|
||||
index 0a56b7d..9e00892 100644
|
||||
--- a/TagsCheck.py
|
||||
+++ b/TagsCheck.py
|
||||
@@ -823,7 +823,7 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
printWarning(pkg, 'no-url-tag')
|
||||
|
||||
obs_names = [x[0] for x in pkg.obsoletes()]
|
||||
|
Loading…
Reference in New Issue
Block a user