2009-01-24 05:18:08 +08:00
|
|
|
# -*- coding: utf-8 -*-
|
1999-10-28 04:00:08 +08:00
|
|
|
#############################################################################
|
2005-11-28 05:49:15 +08:00
|
|
|
# File : SourceCheck.py
|
|
|
|
# Package : rpmlint
|
|
|
|
# Author : Frederic Lepied
|
|
|
|
# Created on : Wed Oct 27 21:17:03 1999
|
|
|
|
# Purpose : verify source package correctness.
|
1999-10-28 04:00:08 +08:00
|
|
|
#############################################################################
|
|
|
|
|
|
|
|
import re
|
2009-01-27 06:54:05 +08:00
|
|
|
|
2009-01-28 06:44:45 +08:00
|
|
|
from Filter import addDetails, printError, printWarning
|
2009-01-27 06:54:05 +08:00
|
|
|
import AbstractCheck
|
1999-10-28 04:00:08 +08:00
|
|
|
import Config
|
|
|
|
|
2009-01-27 06:54:05 +08:00
|
|
|
|
2014-02-09 04:34:50 +08:00
|
|
|
DEFAULT_VALID_SRC_PERMS = (int("644", 8), int("755", 8))
|
2003-03-25 20:12:31 +08:00
|
|
|
|
2008-10-30 07:01:44 +08:00
|
|
|
source_regex = re.compile('\\.(tar|patch|tgz|diff)$')
|
2010-01-21 04:10:01 +08:00
|
|
|
compress_ext = Config.getOption("CompressExtension", "bz2")
|
2008-10-30 07:01:44 +08:00
|
|
|
valid_src_perms = Config.getOption("ValidSrcPerms", DEFAULT_VALID_SRC_PERMS)
|
2000-10-12 13:07:24 +08:00
|
|
|
|
1999-10-28 04:00:08 +08:00
|
|
|
|
2014-05-30 02:50:58 +08:00
|
|
|
class SourceCheck(AbstractCheck.AbstractCheck):
|
2005-11-28 05:49:15 +08:00
|
|
|
|
1999-10-28 04:00:08 +08:00
|
|
|
def __init__(self):
|
2005-11-28 05:49:15 +08:00
|
|
|
AbstractCheck.AbstractCheck.__init__(self, 'SourceCheck')
|
1999-10-28 04:00:08 +08:00
|
|
|
|
2014-03-03 19:46:57 +08:00
|
|
|
def check_source(self, pkg):
|
2005-11-28 05:49:15 +08:00
|
|
|
# process file list
|
2008-10-30 07:01:44 +08:00
|
|
|
spec_file = None
|
2009-02-02 05:58:38 +08:00
|
|
|
for fname, pkgfile in pkg.files().items():
|
2009-01-28 05:44:11 +08:00
|
|
|
if fname.endswith('.spec'):
|
2005-11-28 05:49:15 +08:00
|
|
|
if spec_file:
|
2009-01-28 05:44:11 +08:00
|
|
|
printError(pkg, 'multiple-specfiles', spec_file, fname)
|
2005-11-28 05:49:15 +08:00
|
|
|
else:
|
2009-01-28 05:44:11 +08:00
|
|
|
spec_file = fname
|
2010-03-31 04:34:48 +08:00
|
|
|
elif source_regex.search(fname) and compress_ext and \
|
|
|
|
not fname.endswith(compress_ext):
|
|
|
|
printWarning(pkg, 'source-or-patch-not-compressed',
|
|
|
|
compress_ext, fname)
|
2014-02-09 04:34:50 +08:00
|
|
|
perm = pkgfile.mode & int("7777", 8)
|
2005-11-28 05:49:15 +08:00
|
|
|
if perm not in valid_src_perms:
|
2009-01-28 05:44:11 +08:00
|
|
|
printWarning(pkg, 'strange-permission', fname, oct(perm))
|
1999-10-28 04:00:08 +08:00
|
|
|
|
2008-10-30 07:01:44 +08:00
|
|
|
check = SourceCheck()
|
1999-10-28 04:00:08 +08:00
|
|
|
|
2009-01-31 06:01:50 +08:00
|
|
|
addDetails(
|
2001-07-04 03:43:23 +08:00
|
|
|
'multiple-specfiles',
|
2005-11-23 00:36:30 +08:00
|
|
|
'''Your package contains multiple spec files. To build a
|
2001-07-04 03:43:23 +08:00
|
|
|
correct package, you need to have only one spec file containing
|
2001-07-16 01:01:17 +08:00
|
|
|
all your RPM information.''',
|
2001-07-04 03:43:23 +08:00
|
|
|
|
2010-01-21 04:10:01 +08:00
|
|
|
'source-or-patch-not-compressed',
|
|
|
|
'''A source archive or file in your package is not compressed using the %s
|
|
|
|
compression method (doesn't have the %s extension).''' %
|
|
|
|
(compress_ext, compress_ext),
|
2001-07-04 03:43:23 +08:00
|
|
|
|
|
|
|
'strange-permission',
|
2005-11-23 00:36:30 +08:00
|
|
|
'''A file that you listed to include in your package has strange
|
|
|
|
permissions. Usually, a file should have 0644 permissions.''',
|
2001-07-04 03:43:23 +08:00
|
|
|
|
|
|
|
)
|
2006-04-01 16:09:17 +08:00
|
|
|
|
1999-10-28 04:00:08 +08:00
|
|
|
# SourceCheck.py ends here
|
2006-04-01 16:09:17 +08:00
|
|
|
|
|
|
|
# Local variables:
|
|
|
|
# indent-tabs-mode: nil
|
|
|
|
# py-indent-offset: 4
|
|
|
|
# End:
|
|
|
|
# ex: ts=4 sw=4 et
|