- Sync with upstream CVS as of 2006-01-15, includes improved versions of
most of the earlier patches. - Add dependency on binutils.
This commit is contained in:
parent
2b2f6c9791
commit
21325e5a02
@ -1 +1,2 @@
|
|||||||
rpmlint-0.71.tar.bz2
|
rpmlint-0.71.tar.bz2
|
||||||
|
rpmlint-0.71-cvs20060115.patch.bz2
|
||||||
|
108
DocFilesCheck.py
108
DocFilesCheck.py
@ -1,108 +0,0 @@
|
|||||||
# Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; version 2 of the License.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
from Filter import *
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import rpm
|
|
||||||
|
|
||||||
import AbstractCheck
|
|
||||||
|
|
||||||
# remove version from deps like ['foo', '>', '3']
|
|
||||||
def _stripVersionedDeps(deps):
|
|
||||||
deps = deps[:]
|
|
||||||
j = len(deps)
|
|
||||||
while j>=3:
|
|
||||||
j = j-1
|
|
||||||
if deps[j-1] in ('<', '<=', '=', '>=', '>'):
|
|
||||||
del deps[j-1:j+1]
|
|
||||||
|
|
||||||
return deps
|
|
||||||
|
|
||||||
class DocFilesCheck(AbstractCheck.AbstractCheck):
|
|
||||||
def __init__(self):
|
|
||||||
AbstractCheck.AbstractCheck.__init__(self, 'DocFilesCheck')
|
|
||||||
|
|
||||||
def __checkRequirements(this, pkg):
|
|
||||||
file_reqs = pkg.header[rpm.RPMTAG_FILEREQUIRE]
|
|
||||||
files = pkg.header[rpm.RPMTAG_FILENAMES]
|
|
||||||
doc_files = pkg.docFiles()
|
|
||||||
|
|
||||||
assert(len(file_reqs) == len(files))
|
|
||||||
|
|
||||||
reqs = {}
|
|
||||||
for i in xrange(0,len(files)):
|
|
||||||
tmp = file_reqs[i].split()
|
|
||||||
tmp = _stripVersionedDeps(tmp)
|
|
||||||
reqs[files[i]] = tmp
|
|
||||||
|
|
||||||
core_reqs = {} # dependencies of non-doc files
|
|
||||||
doc_reqs = {} # dependencies of doc files
|
|
||||||
|
|
||||||
for dep in pkg.header.dsFromHeader():
|
|
||||||
# skip deps which were found by find-requires
|
|
||||||
if (dep.Flags() & (rpm.RPMSENSE_FIND_REQUIRES))!=0: continue
|
|
||||||
core_reqs[dep.N()] = []
|
|
||||||
|
|
||||||
# register things which are provided by the package
|
|
||||||
for i in pkg.header[rpm.RPMTAG_PROVIDES] + files:
|
|
||||||
core_reqs[i] = []
|
|
||||||
|
|
||||||
for i in files:
|
|
||||||
if not reqs[i]: continue # skip empty dependencies
|
|
||||||
elif i in doc_files: target = doc_reqs
|
|
||||||
else: target = core_reqs
|
|
||||||
|
|
||||||
for r in reqs[i]:
|
|
||||||
if not target.has_key(r):
|
|
||||||
target[r] = []
|
|
||||||
|
|
||||||
target[r].append(i)
|
|
||||||
|
|
||||||
|
|
||||||
# go through the calculated requirements of the %doc files
|
|
||||||
for (dep,req_files) in doc_reqs.items():
|
|
||||||
if dep not in core_reqs:
|
|
||||||
for f in req_files:
|
|
||||||
printWarning(pkg, "doc-file-dependency", f, dep)
|
|
||||||
|
|
||||||
def check(self, pkg):
|
|
||||||
if pkg.isSource():
|
|
||||||
return
|
|
||||||
|
|
||||||
self.__checkRequirements(pkg)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
check = DocFilesCheck()
|
|
||||||
|
|
||||||
if Config.info:
|
|
||||||
addDetails(
|
|
||||||
'doc-file-dependency',
|
|
||||||
'''An included file marked as %doc creates a possible additional dependency in
|
|
||||||
the package. Usually, this is not wanted and may be caused by eg. example
|
|
||||||
scripts with executable bits set included in the package's documentation.''',
|
|
||||||
)
|
|
||||||
|
|
||||||
def test():
|
|
||||||
for (arg,exp) in ((['a'],['a']),
|
|
||||||
([], []),
|
|
||||||
(['a','b'], ['a', 'b']),
|
|
||||||
(['a','b', 'c', 'd'], ['a', 'b', 'c', 'd']),
|
|
||||||
(['a','>', '0'], ['a']),
|
|
||||||
(['a','>', '0', 'b'], ['a', 'b']),
|
|
||||||
(['a','>', '0', 'b', '>', '0'], ['a', 'b']),
|
|
||||||
):
|
|
||||||
assert(_stripVersionedDeps(arg) == exp)
|
|
11
rpmlint-0.71-disttag.patch
Normal file
11
rpmlint-0.71-disttag.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--- TagsCheck.py~ 2006-01-15 23:33:42.000000000 +0200
|
||||||
|
+++ TagsCheck.py 2006-01-15 23:34:30.000000000 +0200
|
||||||
|
@@ -424,2 +424,3 @@
|
||||||
|
changelog_version_regex=re.compile('[^>]([^ >]+)\s*$')
|
||||||
|
+fedora_disttag_regex=re.compile('\.(fc|rhe?l)\d+$')
|
||||||
|
release_ext=Config.getOption('ReleaseExtension', 'mdk')
|
||||||
|
@@ -636,3 +637,3 @@
|
||||||
|
expected=str(epoch) + ':' + expected
|
||||||
|
- if expected != ret.group(1):
|
||||||
|
+ if ret.group(1) not in (expected, fedora_disttag_regex.sub('', expected)):
|
||||||
|
printWarning(pkg, 'incoherent-version-in-changelog', ret.group(1), expected)
|
12
rpmlint-0.71-doc-exec.patch
Normal file
12
rpmlint-0.71-doc-exec.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Index: FilesCheck.py
|
||||||
|
===================================================================
|
||||||
|
RCS file: /cooker/soft/rpmlint/FilesCheck.py,v
|
||||||
|
retrieving revision 1.96
|
||||||
|
diff -u -U1 -r1.96 FilesCheck.py
|
||||||
|
--- FilesCheck.py 15 Jan 2006 09:59:04 -0000 1.96
|
||||||
|
+++ FilesCheck.py 15 Jan 2006 21:08:24 -0000
|
||||||
|
@@ -565,3 +565,3 @@
|
||||||
|
|
||||||
|
- if mode & 0111 == 0:
|
||||||
|
+ if mode & 0111 == 0 and not doc_regex.search(f):
|
||||||
|
printError(pkg, 'non-executable-script', f, oct(perm))
|
@ -1,10 +0,0 @@
|
|||||||
--- Config.py 17 Aug 2005 05:11:24 -0000 1.125
|
|
||||||
+++ Config.py 20 Nov 2005 10:39:57 -0000
|
|
||||||
@@ -16,6 +16,7 @@
|
|
||||||
"BinariesCheck",
|
|
||||||
"ConfigCheck",
|
|
||||||
"FilesCheck",
|
|
||||||
+ "DocFilesCheck",
|
|
||||||
"FHSCheck",
|
|
||||||
"SignatureCheck",
|
|
||||||
"I18NCheck",
|
|
@ -1,13 +0,0 @@
|
|||||||
--- rpmlint.py 15 Apr 2005 20:01:46 -0000 1.62
|
|
||||||
+++ rpmlint.py 26 Aug 2005 16:17:20 -0000
|
|
||||||
@@ -71,6 +71,10 @@
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
sys.stderr.write('Interrupted, exiting while reading ' + f + '\n')
|
|
||||||
sys.exit(2)
|
|
||||||
+ except rpm.error, e:
|
|
||||||
+ sys.stderr.write('Error while reading %s: %s\n' % (f, e))
|
|
||||||
+ pkg=None
|
|
||||||
+ continue
|
|
||||||
except:
|
|
||||||
sys.stderr.write('Error while reading ' + f + '\n')
|
|
||||||
pkg=None
|
|
16
rpmlint-0.71-la-exec.patch
Normal file
16
rpmlint-0.71-la-exec.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Index: FilesCheck.py
|
||||||
|
===================================================================
|
||||||
|
RCS file: /cooker/soft/rpmlint/FilesCheck.py,v
|
||||||
|
retrieving revision 1.96
|
||||||
|
diff -u -U1 -r1.96 FilesCheck.py
|
||||||
|
--- FilesCheck.py 15 Jan 2006 09:59:04 -0000 1.96
|
||||||
|
+++ FilesCheck.py 15 Jan 2006 21:08:59 -0000
|
||||||
|
@@ -189,2 +189,3 @@
|
||||||
|
script_regex=re.compile('^/((usr/)?s?bin|etc/(rc.d/init.d|profile.d|X11/xinit.d|cron.(hourly|daily|monthly|weekly)))/')
|
||||||
|
+libtool_archive_regex=re.compile('\.la$')
|
||||||
|
lib64python_regex=re.compile('^/usr/lib64/python')
|
||||||
|
@@ -562,3 +563,3 @@
|
||||||
|
printError(pkg, 'wrong-script-interpreter', f, '"' + res.group(1) + '"')
|
||||||
|
- else:
|
||||||
|
+ elif not (lib_path_regex.search(f) and libtool_archive_regex.search(f)):
|
||||||
|
printError(pkg, 'script-without-shellbang', f)
|
@ -1,10 +0,0 @@
|
|||||||
--- rpmlint 6 Oct 1999 13:03:45 -0000 1.2
|
|
||||||
+++ rpmlint 20 Nov 2005 12:48:00 -0000
|
|
||||||
@@ -13,6 +13,6 @@
|
|
||||||
|
|
||||||
PYTHONPATH=${PYTHONPATH}:/usr/share/rpmlint
|
|
||||||
|
|
||||||
-exec python -u -O /usr/share/rpmlint/rpmlint.py $*
|
|
||||||
+LC_ALL=C exec python -u -O /usr/share/rpmlint/rpmlint.py $*
|
|
||||||
|
|
||||||
# rpmlint ends here
|
|
@ -1,84 +0,0 @@
|
|||||||
--- BinariesCheck.py 17 Jun 2005 09:10:36 -0000 1.32
|
|
||||||
+++ BinariesCheck.py 20 Nov 2005 17:42:33 -0000
|
|
||||||
@@ -32,7 +32,8 @@
|
|
||||||
pic_regex=re.compile('^\s+\d+\s+\.rela?\.(data|text)')
|
|
||||||
non_pic_regex=re.compile('TEXTREL', re.MULTILINE)
|
|
||||||
|
|
||||||
- def __init__(self, path, file):
|
|
||||||
+ def __init__(self, pkg, path, file):
|
|
||||||
+ self.error=0
|
|
||||||
self.needed=[]
|
|
||||||
self.rpath=[]
|
|
||||||
self.comment=0
|
|
||||||
@@ -40,9 +41,9 @@
|
|
||||||
self.soname=0
|
|
||||||
self.non_pic=1
|
|
||||||
|
|
||||||
- res=commands.getoutput('objdump --headers --private-headers -T ' + path)
|
|
||||||
- if res:
|
|
||||||
- for l in string.split(res, '\n'):
|
|
||||||
+ res=commands.getstatusoutput('objdump --headers --private-headers -T ' + path)
|
|
||||||
+ if not res[0]:
|
|
||||||
+ for l in string.split(res[1], '\n'):
|
|
||||||
needed=BinaryInfo.needed_regex.search(l)
|
|
||||||
if needed:
|
|
||||||
self.needed.append(needed.group(1))
|
|
||||||
@@ -57,16 +58,14 @@
|
|
||||||
self.dynsyms=1
|
|
||||||
elif BinaryInfo.pic_regex.search(l):
|
|
||||||
self.non_pic=0
|
|
||||||
- else:
|
|
||||||
- r=BinaryInfo.unrecognized_regex.search(l)
|
|
||||||
- if r:
|
|
||||||
- sys.stderr.write('file format not recognized for %s in %s\n' % (r.group(1), file))
|
|
||||||
- #sys.exit(1)
|
|
||||||
r=BinaryInfo.soname_regex.search(l)
|
|
||||||
if r:
|
|
||||||
self.soname=r.group(1)
|
|
||||||
if self.non_pic:
|
|
||||||
- self.non_pic=BinaryInfo.non_pic_regex.search(res)
|
|
||||||
+ self.non_pic=BinaryInfo.non_pic_regex.search(res[1])
|
|
||||||
+ else:
|
|
||||||
+ self.error=1
|
|
||||||
+ printWarning(pkg, 'objdump-failed', res[1])
|
|
||||||
|
|
||||||
path_regex=re.compile('(.*/)([^/]+)')
|
|
||||||
numeric_dir_regex=re.compile('/usr(?:/share)/man/man./(.*)\.[0-9](?:\.gz|\.bz2)')
|
|
||||||
@@ -156,12 +155,14 @@
|
|
||||||
printWarning(pkg, 'unstripped-binary-or-object', i[0])
|
|
||||||
|
|
||||||
# inspect binary file
|
|
||||||
- bin_info=BinaryInfo(pkg.dirName()+i[0], i[0])
|
|
||||||
+ bin_info=BinaryInfo(pkg, pkg.dirName()+i[0], i[0])
|
|
||||||
|
|
||||||
# so name in library
|
|
||||||
if so_regex.search(i[0]):
|
|
||||||
has_lib.append(i[0])
|
|
||||||
- if not bin_info.soname:
|
|
||||||
+ if bin_info.error:
|
|
||||||
+ pass
|
|
||||||
+ elif not bin_info.soname:
|
|
||||||
printWarning(pkg, 'no-soname', i[0])
|
|
||||||
else:
|
|
||||||
if not validso_regex.search(bin_info.soname):
|
|
||||||
@@ -201,7 +202,9 @@
|
|
||||||
if is_exec and bin_regex.search(i[0]):
|
|
||||||
exec_files.append(i[0])
|
|
||||||
|
|
||||||
- if not bin_info.needed and \
|
|
||||||
+ if bin_info.error:
|
|
||||||
+ pass
|
|
||||||
+ elif not bin_info.needed and \
|
|
||||||
not (bin_info.soname and \
|
|
||||||
ldso_soname_regex.search(bin_info.soname)):
|
|
||||||
if shared_object_regex.search(i[1]):
|
|
||||||
@@ -333,6 +336,9 @@
|
|
||||||
'only-non-binary-in-usr-lib',
|
|
||||||
'''There are only non binary files in /usr/lib so they should be in /usr/share.''',
|
|
||||||
|
|
||||||
+'objdump-failed',
|
|
||||||
+'''Running objdump on some files failed, all checks could not be done.''',
|
|
||||||
+
|
|
||||||
)
|
|
||||||
|
|
||||||
# BinariesCheck.py ends here
|
|
@ -1,17 +0,0 @@
|
|||||||
--- FilesCheck.py 10 Aug 2005 01:46:30 -0000 1.88
|
|
||||||
+++ FilesCheck.py 21 Aug 2005 07:42:30 -0000
|
|
||||||
@@ -151,3 +151,3 @@
|
|
||||||
points_regex=re.compile('^../(.*)')
|
|
||||||
-doc_regex=re.compile('^/usr/(doc|man|info)|^/usr/share/(doc|man|info)')
|
|
||||||
+doc_regex=re.compile('^/usr(/share)?/(doc|man|info)/')
|
|
||||||
bin_regex=re.compile('^(/usr)?/s?bin/')
|
|
||||||
@@ -160,3 +160,3 @@
|
|
||||||
depmod_regex=re.compile('^[^#]*depmod', re.MULTILINE)
|
|
||||||
-info_regex=re.compile('^/usr/share/info')
|
|
||||||
+info_regex=re.compile('^/usr/share/info/')
|
|
||||||
install_info_regex=re.compile('^[^#]*install-info', re.MULTILINE)
|
|
||||||
@@ -165,3 +165,3 @@
|
|
||||||
htaccess_regex=re.compile('\.htaccess$')
|
|
||||||
-games_path_regex=re.compile('/usr/(lib/)?/games')
|
|
||||||
+games_path_regex=re.compile('/usr(/lib(64)?)?/games/')
|
|
||||||
games_group_regex=re.compile(Config.getOption('RpmGamesGroups', DEFAULT_GAMES_GROUPS))
|
|
@ -1,29 +1,32 @@
|
|||||||
--- SpecCheck.py 10 Aug 2005 06:10:39 -0000 1.29
|
Index: SpecCheck.py
|
||||||
+++ SpecCheck.py 10 Aug 2005 13:14:46 -0000
|
===================================================================
|
||||||
@@ -44,6 +44,7 @@
|
RCS file: /cooker/soft/rpmlint/SpecCheck.py,v
|
||||||
|
retrieving revision 1.32
|
||||||
|
diff -u -r1.32 SpecCheck.py
|
||||||
|
--- SpecCheck.py 15 Jan 2006 09:59:04 -0000 1.32
|
||||||
|
+++ SpecCheck.py 15 Jan 2006 21:05:12 -0000
|
||||||
|
@@ -45,6 +45,7 @@
|
||||||
biarch_package_regex=re.compile(DEFAULT_BIARCH_PACKAGES)
|
biarch_package_regex=re.compile(DEFAULT_BIARCH_PACKAGES)
|
||||||
hardcoded_lib_path_exceptions_regex=re.compile(Config.getOption('HardcodedLibPathExceptions', DEFAULT_HARDCODED_LIB_PATH_EXCEPTIONS))
|
hardcoded_lib_path_exceptions_regex=re.compile(Config.getOption('HardcodedLibPathExceptions', DEFAULT_HARDCODED_LIB_PATH_EXCEPTIONS))
|
||||||
prereq_regex=re.compile('^PreReq:\s*(.+?)\s*$', re.IGNORECASE)
|
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*$', re.IGNORECASE)
|
||||||
|
use_utf8=Config.getOption('UseUTF8', Config.USEUTF8_DEFAULT)
|
||||||
|
|
||||||
# Only check for /lib, /usr/lib, /usr/X11R6/lib
|
# Only check for /lib, /usr/lib, /usr/X11R6/lib
|
||||||
# TODO: better handling of X libraries and modules.
|
@@ -190,7 +191,11 @@
|
||||||
@@ -185,8 +186,12 @@
|
|
||||||
|
|
||||||
res=prereq_regex.search(line)
|
res=prereq_regex.search(line)
|
||||||
if res:
|
if res:
|
||||||
- printError(pkg, 'prereq-use', res.group(1))
|
- printError(pkg, 'prereq-use', res.group(1))
|
||||||
-
|
|
||||||
+ printWarning(pkg, 'prereq-use', res.group(1))
|
+ printWarning(pkg, 'prereq-use', res.group(1))
|
||||||
+
|
+
|
||||||
+ res=buildprereq_regex.search(line)
|
+ res=buildprereq_regex.search(line)
|
||||||
+ if res:
|
+ if res:
|
||||||
+ printWarning(pkg, 'buildprereq-use', res.group(1))
|
+ printWarning(pkg, 'buildprereq-use', res.group(1))
|
||||||
+
|
|
||||||
if not buildroot:
|
if not buildroot:
|
||||||
printError(pkg, 'no-buildroot-tag')
|
printError(pkg, 'no-buildroot-tag')
|
||||||
|
@@ -284,8 +289,13 @@
|
||||||
@@ -272,8 +277,13 @@
|
|
||||||
patch to be effective only on a given arch.''',
|
patch to be effective only on a given arch.''',
|
||||||
|
|
||||||
'prereq-use',
|
'prereq-use',
|
@ -1,23 +0,0 @@
|
|||||||
--- FilesCheck.py 10 Sep 2005 23:00:31 -0000 1.89
|
|
||||||
+++ FilesCheck.py 20 Nov 2005 19:50:57 -0000
|
|
||||||
@@ -833,10 +834,18 @@
|
|
||||||
'''This script uses an incorrect interpreter.''',
|
|
||||||
|
|
||||||
'non-executable-script',
|
|
||||||
-'''This script is not executable.''',
|
|
||||||
+'''This file is a non-executable text file which contains a shebang. Often
|
|
||||||
+this is a sign of a spurious shebang in files that are not meant to be
|
|
||||||
+executed, but can also be a case of missing executable bits for a script.
|
|
||||||
+To fix this warning, find out which case of the above it is, and either remove
|
|
||||||
+the unneeded shebang or add the executable bits.''',
|
|
||||||
|
|
||||||
'script-without-shellbang',
|
|
||||||
-'''This script does not begins with a shellbang. It will prevent its execution.''',
|
|
||||||
+'''This file is an executable text file, but does not contain a shebang, thus
|
|
||||||
+it cannot be properly executed. Often this is a sign of spurious executable
|
|
||||||
+bits for a non-script file, but can also be a case of a missing shebang.
|
|
||||||
+To fix this warning, find out which case of the above it is, and either remove
|
|
||||||
+the executable bits or add the shebang.''',
|
|
||||||
|
|
||||||
'wrong-script-end-of-line-encoding',
|
|
||||||
'''This script has wrong end-of-line encoding, usually caused by creation on a
|
|
@ -1,28 +0,0 @@
|
|||||||
--- FilesCheck.py 10 Sep 2005 23:00:31 -0000 1.89
|
|
||||||
+++ FilesCheck.py 20 Nov 2005 09:00:33 -0000
|
|
||||||
@@ -477,7 +477,7 @@
|
|
||||||
printWarning(pkg, 'devel-file-in-non-devel-package', f)
|
|
||||||
# absolute link
|
|
||||||
if r:
|
|
||||||
- if (not is_so) and link not in files.keys():
|
|
||||||
+ if (not is_so) and link not in files.keys() and link not in req_names:
|
|
||||||
is_exception=0
|
|
||||||
for e in dangling_exceptions:
|
|
||||||
if e[0].search(link):
|
|
||||||
@@ -502,14 +502,14 @@
|
|
||||||
file = os.path.normpath(file)
|
|
||||||
pkgfile = '%s/%s' % (os.path.dirname(f), link)
|
|
||||||
pkgfile = os.path.normpath(pkgfile)
|
|
||||||
- if not (files.has_key(pkgfile) or os.path.exists(file)):
|
|
||||||
+ if not (files.has_key(pkgfile) or os.path.exists(file) or pkgfile in req_names):
|
|
||||||
is_exception=0
|
|
||||||
for e in dangling_exceptions:
|
|
||||||
if e[0].search(link):
|
|
||||||
is_exception=e[1]
|
|
||||||
break
|
|
||||||
if is_exception:
|
|
||||||
- if not is_exception in map(lambda x: x[0], pkg.requires() + pkg.prereq()):
|
|
||||||
+ if not is_exception in req_names:
|
|
||||||
printWarning(pkg, 'no-dependency-on', is_exception)
|
|
||||||
else:
|
|
||||||
printWarning(pkg, 'dangling-relative-symlink', f, link)
|
|
@ -1,25 +0,0 @@
|
|||||||
Index: TagsCheck.py
|
|
||||||
===================================================================
|
|
||||||
RCS file: /cooker/soft/rpmlint/TagsCheck.py,v
|
|
||||||
retrieving revision 1.84
|
|
||||||
diff -u -r1.84 TagsCheck.py
|
|
||||||
--- TagsCheck.py 1 Jul 2005 02:59:46 -0000 1.84
|
|
||||||
+++ TagsCheck.py 6 Jul 2005 14:19:23 -0000
|
|
||||||
@@ -419,6 +419,7 @@
|
|
||||||
packager_regex=re.compile(Config.getOption('Packager', DEFAULT_PACKAGER))
|
|
||||||
basename_regex=re.compile('/?([^/]+)$')
|
|
||||||
changelog_version_regex=re.compile('[^>]([^ >]+)\s*$')
|
|
||||||
+fedora_disttag_regex=re.compile('\.(fc|rhe?l)\d+$')
|
|
||||||
release_ext=Config.getOption('ReleaseExtension', 'mdk')
|
|
||||||
extension_regex=release_ext and re.compile(release_ext + '$')
|
|
||||||
use_version_in_changelog=Config.getOption('UseVersionInChangelog', 1)
|
|
||||||
@@ -626,7 +627,8 @@
|
|
||||||
expected=version + '-' + release
|
|
||||||
if epoch is not None:
|
|
||||||
expected=str(epoch) + ':' + expected
|
|
||||||
- if expected != ret.group(1):
|
|
||||||
+ if ret.group(1) not in (expected, fedora_disttag_regex.sub('', expected)):
|
|
||||||
+
|
|
||||||
printWarning(pkg, 'incoherent-version-in-changelog', ret.group(1), expected)
|
|
||||||
|
|
||||||
# provides=pkg.provides()
|
|
@ -1,28 +0,0 @@
|
|||||||
Index: FilesCheck.py
|
|
||||||
===================================================================
|
|
||||||
RCS file: /cooker/soft/rpmlint/FilesCheck.py,v
|
|
||||||
retrieving revision 1.87
|
|
||||||
diff -u -r1.87 FilesCheck.py
|
|
||||||
--- FilesCheck.py 17 Jun 2005 09:48:34 -0000 1.87
|
|
||||||
+++ FilesCheck.py 6 Jul 2005 14:19:21 -0000
|
|
||||||
@@ -186,6 +186,7 @@
|
|
||||||
shellbang_regex=re.compile('^#!\s*(\S*)')
|
|
||||||
interpreter_regex=re.compile('^/(usr/)?s?bin/[^/]+$')
|
|
||||||
script_regex=re.compile('^/((usr/)?s?bin|etc/(rc.d/init.d|profile.d|X11/xinit.d|cron.(hourly|daily|monthly|weekly)))/')
|
|
||||||
+libtool_archive_regex=re.compile('\.la$')
|
|
||||||
|
|
||||||
for idx in range(0, len(dangling_exceptions)):
|
|
||||||
dangling_exceptions[idx][0]=re.compile(dangling_exceptions[idx][0])
|
|
||||||
@@ -552,10 +553,10 @@
|
|
||||||
if res:
|
|
||||||
if not interpreter_regex.search(res.group(1)):
|
|
||||||
printError(pkg, 'wrong-script-interpreter', f, '"' + res.group(1) + '"')
|
|
||||||
- else:
|
|
||||||
+ elif not (lib_path_regex.search(f) and libtool_archive_regex.search(f)):
|
|
||||||
printError(pkg, 'script-without-shellbang', f)
|
|
||||||
|
|
||||||
- if mode & 0111 == 0:
|
|
||||||
+ if mode & 0111 == 0 and not doc_regex.search(f):
|
|
||||||
printError(pkg, 'non-executable-script', f, oct(perm))
|
|
||||||
if line.endswith('\r\n'):
|
|
||||||
printError(pkg, 'wrong-script-end-of-line-encoding', f)
|
|
@ -9,7 +9,9 @@ setOption("ValidBuildHost", ".*")
|
|||||||
setOption("Packager", ".*")
|
setOption("Packager", ".*")
|
||||||
setOption("UseVersionInChangeLog", 1)
|
setOption("UseVersionInChangeLog", 1)
|
||||||
setOption("UseBzip2", 0)
|
setOption("UseBzip2", 0)
|
||||||
|
setOption("UseDefaultRunlevels", 0)
|
||||||
setOption("UseEpoch", 0)
|
setOption("UseEpoch", 0)
|
||||||
|
setOption("UseUTF8", 1)
|
||||||
setOption("ValidSrcPerms", (0664, 0644, ))
|
setOption("ValidSrcPerms", (0664, 0644, ))
|
||||||
setOption("ValidGroups", (
|
setOption("ValidGroups", (
|
||||||
"Amusements/Games",
|
"Amusements/Games",
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
--- InitScriptCheck.py 10 Aug 2005 01:51:34 -0000 1.15
|
|
||||||
+++ InitScriptCheck.py 10 Aug 2005 13:12:39 -0000
|
|
||||||
@@ -86,7 +86,7 @@
|
|
||||||
error=1
|
|
||||||
if name[0] == '$':
|
|
||||||
value=Pkg.substitute_shell_vars(name, content)
|
|
||||||
- if value == basename:
|
|
||||||
+ if value == basename or value[0] == '$':
|
|
||||||
error=0
|
|
||||||
if error:
|
|
||||||
printError(pkg, 'incoherent-subsys', f, name)
|
|
@ -1,11 +0,0 @@
|
|||||||
--- FilesCheck.py 10 Aug 2005 01:46:30 -0000 1.88
|
|
||||||
+++ FilesCheck.py 10 Aug 2005 13:29:12 -0000
|
|
||||||
@@ -160,7 +160,7 @@
|
|
||||||
depmod_regex=re.compile('^[^#]*depmod', re.MULTILINE)
|
|
||||||
info_regex=re.compile('^/usr/share/info')
|
|
||||||
install_info_regex=re.compile('^[^#]*install-info', re.MULTILINE)
|
|
||||||
-perl_temp_file=re.compile('.*perl.*(\.bs|/\.packlist|/perllocal\.pod)$')
|
|
||||||
+perl_temp_file=re.compile('.*perl.*(/\.packlist|/perllocal\.pod)$')
|
|
||||||
scm_regex=re.compile('/CVS/[^/]+$|/.cvsignore$|/\.svn/|/(\.arch-ids|{arch})/')
|
|
||||||
htaccess_regex=re.compile('\.htaccess$')
|
|
||||||
games_path_regex=re.compile('/usr/(lib/)?/games')
|
|
@ -1,30 +0,0 @@
|
|||||||
Index: InitScriptCheck.py
|
|
||||||
===================================================================
|
|
||||||
RCS file: /cooker/soft/rpmlint/InitScriptCheck.py,v
|
|
||||||
retrieving revision 1.14
|
|
||||||
diff -u -r1.14 InitScriptCheck.py
|
|
||||||
--- InitScriptCheck.py 15 Apr 2005 20:01:46 -0000 1.14
|
|
||||||
+++ InitScriptCheck.py 20 Jun 2005 10:20:15 -0000
|
|
||||||
@@ -74,8 +74,8 @@
|
|
||||||
if not res:
|
|
||||||
printError(pkg, 'no-chkconfig-line', f)
|
|
||||||
else:
|
|
||||||
- if res.group(1) == '-':
|
|
||||||
- printWarning(pkg, 'no-default-runlevel')
|
|
||||||
+ if res.group(1) != '-':
|
|
||||||
+ printWarning(pkg, 'service-default-enabled', f)
|
|
||||||
|
|
||||||
res=subsys_regex.search(content)
|
|
||||||
if not res:
|
|
||||||
@@ -126,8 +126,9 @@
|
|
||||||
'''The init script doesn't contain a chkconfig line to specify the runlevels at which
|
|
||||||
to start and stop it.''',
|
|
||||||
|
|
||||||
-'no-default-runlevel',
|
|
||||||
-'''The default runlevel isn't specified in the init script.''',
|
|
||||||
+'service-default-enabled',
|
|
||||||
+'''The service is enabled by default after "chkconfig --add"; most services
|
|
||||||
+should not be. Use "-" to correct this if appropriate.''',
|
|
||||||
|
|
||||||
'subsys-not-used',
|
|
||||||
'''While your program is running, you have to put a lock file in
|
|
38
rpmlint.spec
38
rpmlint.spec
@ -1,6 +1,6 @@
|
|||||||
Name: rpmlint
|
Name: rpmlint
|
||||||
Version: 0.71
|
Version: 0.71
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
Summary: Tool for checking common errors in RPM packages
|
Summary: Tool for checking common errors in RPM packages
|
||||||
|
|
||||||
Group: Development/Tools
|
Group: Development/Tools
|
||||||
@ -8,20 +8,11 @@ License: GPL
|
|||||||
URL: http://people.mandriva.com/~flepied/projects/rpmlint/
|
URL: http://people.mandriva.com/~flepied/projects/rpmlint/
|
||||||
Source0: http://people.mandriva.com/~flepied/projects/rpmlint/dist/%{name}-%{version}.tar.bz2
|
Source0: http://people.mandriva.com/~flepied/projects/rpmlint/dist/%{name}-%{version}.tar.bz2
|
||||||
Source1: %{name}-fedora-config
|
Source1: %{name}-fedora-config
|
||||||
Source2: DocFilesCheck.py
|
Patch0: %{name}-0.71-disttag.patch
|
||||||
Patch0: %{name}-svcdefault.patch
|
Patch1: %{name}-0.71-cvs20060115.patch.bz2
|
||||||
Patch1: %{name}-prereq.patch
|
Patch2: %{name}-0.71-prereq.patch
|
||||||
Patch2: %{name}-disttag.patch
|
Patch3: %{name}-0.71-la-exec.patch
|
||||||
Patch3: %{name}-initvars.patch
|
Patch4: %{name}-0.71-doc-exec.patch
|
||||||
Patch4: %{name}-execs.patch
|
|
||||||
Patch5: %{name}-perl-bs.patch
|
|
||||||
Patch6: %{name}-0.71-paths.patch
|
|
||||||
Patch7: %{name}-0.71-errmsg.patch
|
|
||||||
Patch8: %{name}-0.71-symlinks.patch
|
|
||||||
Patch9: %{name}-0.71-docfilescheck.patch
|
|
||||||
Patch10: %{name}-0.71-objdump.patch
|
|
||||||
Patch11: %{name}-0.71-locale.patch
|
|
||||||
Patch12: %{name}-0.71-scriptinfo.patch
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
|
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
@ -31,6 +22,7 @@ BuildRequires: sed >= 3.95
|
|||||||
Requires: rpm-python
|
Requires: rpm-python
|
||||||
Requires: python >= 1.5.2
|
Requires: python >= 1.5.2
|
||||||
Requires: cpio
|
Requires: cpio
|
||||||
|
Requires: binutils
|
||||||
|
|
||||||
%description
|
%description
|
||||||
rpmlint is a tool for checking common errors in RPM packages. Binary
|
rpmlint is a tool for checking common errors in RPM packages. Binary
|
||||||
@ -39,20 +31,11 @@ and source packages can be checked.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
install -pm 644 %{SOURCE2} .
|
|
||||||
%patch0
|
|
||||||
%patch1
|
%patch1
|
||||||
|
%patch0
|
||||||
%patch2
|
%patch2
|
||||||
%patch3
|
%patch3
|
||||||
%patch4
|
%patch4
|
||||||
%patch5
|
|
||||||
%patch6
|
|
||||||
%patch7
|
|
||||||
%patch8
|
|
||||||
%patch9
|
|
||||||
%patch10
|
|
||||||
%patch11
|
|
||||||
%patch12
|
|
||||||
sed -i -e 's|/etc/httpd/webapps\.d|%{_sysconfdir}/httpd/conf.d|' \
|
sed -i -e 's|/etc/httpd/webapps\.d|%{_sysconfdir}/httpd/conf.d|' \
|
||||||
FilesCheck.py I18NCheck.py
|
FilesCheck.py I18NCheck.py
|
||||||
for f in AUTHORS ChangeLog ; do
|
for f in AUTHORS ChangeLog ; do
|
||||||
@ -105,6 +88,11 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jan 17 2006 Ville Skyttä <ville.skytta at iki.fi> - 0.71-3
|
||||||
|
- Sync with upstream CVS as of 2006-01-15, includes improved versions of
|
||||||
|
most of the earlier patches.
|
||||||
|
- Add dependency on binutils.
|
||||||
|
|
||||||
* Sun Nov 20 2005 Ville Skyttä <ville.skytta at iki.fi> - 0.71-2
|
* Sun Nov 20 2005 Ville Skyttä <ville.skytta at iki.fi> - 0.71-2
|
||||||
- Take file based dependencies into account in dangling symlink checks
|
- Take file based dependencies into account in dangling symlink checks
|
||||||
(completes the fix for #165839).
|
(completes the fix for #165839).
|
||||||
|
Loading…
Reference in New Issue
Block a user