1999-10-28 04:00:08 +08:00
|
|
|
#############################################################################
|
|
|
|
# File : SourceCheck.py
|
|
|
|
# Package : rpmlint
|
|
|
|
# Author : Frederic Lepied
|
|
|
|
# Created on : Wed Oct 27 21:17:03 1999
|
|
|
|
# Version : $Id$
|
|
|
|
# Purpose : verify source package correctness.
|
|
|
|
#############################################################################
|
|
|
|
|
1999-10-28 04:10:00 +08:00
|
|
|
from Filter import *
|
1999-10-28 04:00:08 +08:00
|
|
|
import AbstractCheck
|
|
|
|
import re
|
|
|
|
import Config
|
|
|
|
|
2000-11-24 16:22:50 +08:00
|
|
|
spec_regex=re.compile('.spec$')
|
|
|
|
bz2_regex=re.compile('.bz2$')
|
|
|
|
gz_regex=re.compile('gz$')
|
|
|
|
source_regex=re.compile('\\.(tar|patch|tgz|diff)$')
|
|
|
|
use_bzip2=Config.getOption('UseBzip2', 1)
|
2000-10-12 13:07:24 +08:00
|
|
|
|
1999-10-28 04:00:08 +08:00
|
|
|
class SourceCheck(AbstractCheck.AbstractCheck):
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self):
|
2000-11-24 16:22:50 +08:00
|
|
|
AbstractCheck.AbstractCheck.__init__(self, 'SourceCheck')
|
1999-10-28 04:00:08 +08:00
|
|
|
|
2001-11-15 00:34:02 +08:00
|
|
|
def check(self, pkg):
|
1999-10-28 04:00:08 +08:00
|
|
|
# Check only source package
|
|
|
|
if not pkg.isSource():
|
|
|
|
return
|
|
|
|
|
|
|
|
# process file list
|
|
|
|
files=pkg.files()
|
|
|
|
spec_file=None
|
|
|
|
for f in files.keys():
|
2000-10-12 13:07:24 +08:00
|
|
|
if spec_regex.search(f):
|
1999-10-28 04:00:08 +08:00
|
|
|
if spec_file:
|
2000-11-24 16:22:50 +08:00
|
|
|
printError(pkg, 'multiple-specfiles', spec_file, f)
|
1999-10-28 04:00:08 +08:00
|
|
|
else:
|
|
|
|
spec_file=f
|
2000-11-24 16:22:50 +08:00
|
|
|
elif source_regex.search(f):
|
2000-10-12 13:07:24 +08:00
|
|
|
if use_bzip2:
|
|
|
|
if not bz2_regex.search(f):
|
2000-11-24 16:22:50 +08:00
|
|
|
printWarning(pkg, 'source-or-patch-not-bzipped', f)
|
1999-10-28 04:00:08 +08:00
|
|
|
else:
|
2000-10-12 13:07:24 +08:00
|
|
|
if not gz_regex.search(f):
|
2000-11-24 16:22:50 +08:00
|
|
|
printWarning(pkg, 'source-or-patch-not-gzipped', f)
|
1999-10-28 04:00:08 +08:00
|
|
|
perm=files[f][0] & 07777
|
2001-10-17 04:06:35 +08:00
|
|
|
if perm != 0644 and perm != 0755:
|
2000-11-24 16:22:50 +08:00
|
|
|
printWarning(pkg, 'strange-permission', f, oct(perm))
|
1999-10-28 04:00:08 +08:00
|
|
|
|
|
|
|
check=SourceCheck()
|
|
|
|
|
2001-07-04 03:43:23 +08:00
|
|
|
if Config.info:
|
|
|
|
addDetails(
|
|
|
|
'multiple-specfiles',
|
2001-07-16 01:01:17 +08:00
|
|
|
'''Your package contain 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
|
|
|
|
|
|
|
'source-or-patch-not-bzipped',
|
2001-07-16 01:01:17 +08:00
|
|
|
'''A source package or file in your package is not bzipped (doesn't
|
|
|
|
have the .bz2 extension. To bzip it, use bzip2.''',
|
2001-07-04 03:43:23 +08:00
|
|
|
|
|
|
|
'source-or-patch-not-gzipped',
|
2001-07-16 01:01:17 +08:00
|
|
|
'''A source package or file in your package is not gzipped (doesn't
|
|
|
|
have the .gz extension. To gzip it, use the gzip command.''',
|
2001-07-04 03:43:23 +08:00
|
|
|
|
|
|
|
'strange-permission',
|
2001-07-16 01:01:17 +08:00
|
|
|
'''A file that you listed to include in your package is under strange
|
|
|
|
permissions. Usually, a file is under a 0644 permission.''',
|
2001-07-04 03:43:23 +08:00
|
|
|
|
|
|
|
)
|
1999-10-28 04:00:08 +08:00
|
|
|
# SourceCheck.py ends here
|