1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# vim:sw=4:et
#############################################################################
# File : KMPPolicyCheck.py
# Package : rpmlint
# Author : Dirk Mueller
# Purpose : Verify that kmp's have proper dependencies
#############################################################################
from Filter import *
import AbstractCheck
import rpm
import re
import commands
import stat
import Config
import os
import string
import Pkg
class KMPPolicyCheck(AbstractCheck.AbstractCheck):
def __init__(self):
self.map = []
AbstractCheck.AbstractCheck.__init__(self, "KMPPolicyCheck")
def check(self, pkg):
if pkg.isSource() or pkg.name.find('-kmp-') < 0:
return
pkg_requires = set(map(lambda x: string.split(x[0],'(')[0], pkg.requires()))
pkg_conflicts = set(map(lambda x: string.split(x[0],'(')[0], pkg.conflicts()))
kernel_flavour="kernel-" + pkg.name.partition('-kmp-')[2]
# verify that Requires: kernel_flavour is present
have_requires=False
for r in pkg_requires:
if r == kernel_flavour:
have_requires = True
break
if not have_requires:
printError(pkg, 'suse-policy-kmp-missing-requires', kernel_flavour)
# verify that exactly one enhances on the kernel flavor is present
if len(pkg.enhances()) > 1:
printError(pkg, 'suse-policy-kmp-excessive-enhances', str(pkg.enhances()))
elif len(pkg.enhances()) < 1:
printError(pkg, 'suse-policy-kmp-missing-enhances', kernel_flavour)
# check that only modalias supplements are present
have_only_modalias=True
have_modalias=False
have_proper_suppl=False
for s in pkg.supplements():
if s[0].startswith('modalias('):
have_modalias = True
continue
if s[0].startswith('packageand(%s:' % (kernel_flavour)):
have_proper_suppl = True
continue
printWarning(pkg, 'suse-policy-kmp-excessive-supplements', s[0])
have_only_modalias = False
if not have_modalias and not have_proper_suppl:
printError(pkg, 'suse-policy-kmp-missing-supplements')
check=KMPPolicyCheck()
if Config.info:
addDetails(
'suse-policy-kmp-missing-requires',
"""Make sure you have extended '%suse_kernel_module_package' by
'-p %_sourcedir/preamble', a file named 'preamble' as source and there
specified 'Requires: kernel-%1'.
""",
'suse-policy-kmp-excessive-enhances',
""" """,
'suse-policy-kmp-missing-enhances',
"""Make sure you have extended '%suse_kernel_module_package' by
'-p %_sourcedir/preamble', a file named 'preamble' as source and there
specified 'Enhances: kernel-%1'.
""",
'suse-policy-kmp-excessive-supplements',
""" """,
'suse-policy-kmp-missing-supplements',
"""Make sure your 'BuildRequires:' include 'kernel-syms' and 'module-init-tools'
for proper dependencies to be built.
""",
)
|