summaryrefslogtreecommitdiff
path: root/rpmlint-checks-master/CheckKDE4Deps.py
blob: c150c8bf8a2daa7dfc99e62054d1bb2df92af3ef (plain)
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# vim:sw=4:et
#############################################################################
# File          : CheckKDE4Deps.py
# Package       : rpmlint
# Author        : Dirk Mueller
# Purpose       : Check for KDE4 related packaging errors
#############################################################################

from Filter import *
import AbstractCheck
import rpm
import re
import os
import string
import commands
import Config
import Pkg
import stat

_kde4_pimlibs=(
        "libgpgme++-pth.so.1.1.0",
        "libgpgme++-pthread.so.1.1.0",
        "libgpgme++.so.1.1.0",
        "libkabc.so.4",
        "libkabc_file_core.so.4",
        "libkblog.so.4",
        "libkcal.so.4",
        "libkimap.so.4",
        "libkldap.so.4",
        "libkmime.so.4",
        "libkpimidentities.so.4",
        "libkpimutils.so.4",
        "libkresources.so.4",
        "libktnef.so.4",
        "libkxmlrpcclient.so.4",
        "libmailtransport.so.4",
        "libqgpgme.so.1.0.0",
        "libsyndication.so.4"
)

_kde4_libkdepim4 = (
        "libkdepim.so.4",
        "libkontactinterfaces.so.4",
        "libkleopatraclientcore.so.0.2.0",
        "libkleopatraclientgui.so.0.2.0",
)

_kde4_libakonadi4 = (
        "libakonadi-kde.so.4",
        "libakonadi-kabc.so.4",
        "libakonadi-kcal.so.4",
        "libakonadi-kmime.so.4",
        "libakonadiprotocolinternals.so.1",
)

class KDE4Check(AbstractCheck.AbstractCheck):
    def __init__(self):
        AbstractCheck.AbstractCheck.__init__(self, "CheckKDE4Deps")

    def check(self, pkg):

        if pkg.isSource():
            return

        pkg_requires = set(map(lambda x: string.split(x[0],'(')[0], pkg.requires()))

        if not "libkdecore.so.5" in pkg_requires:
            return

        if not pkg.name.startswith("lib"):
            if not "kdebase4-runtime" in pkg_requires:
                printError(pkg,"suse-kde4-missing-runtime-dependency")

        kdepimlibs4_dep=False
        for r in pkg_requires:
            if r in _kde4_pimlibs:
                kdepimlibs4_dep=True
                break

        libkdepim4_dep=False
        for r in pkg_requires:
            if r in _kde4_libkdepim4:
                libkdepim4_dep =True
                break

        libakonadi4_dep=False
        for r in pkg_requires:
            if r in _kde4_libakonadi4:
                libakonadi4_dep =True
                break

        if not pkg.name.startswith("lib"):
            if "kdepimlibs4" in pkg_requires and not kdepimlibs4_dep:
                printError(pkg,"suse-kde4-excessive-dependency", "%kde4_pimlibs_requires")
            if not "kdepimlibs4" in pkg_requires and kdepimlibs4_dep:
                printError(pkg,"suse-kde4-missing-dependency", "%kde4_pimlibs_requires")

            if "libkdepim4" in pkg_requires and not libkdepim4_dep:
                printError(pkg,"suse-kde4-excessive-dependency", "libkdepim4")
            if not "libkdepim4" in pkg_requires and libkdepim4_dep:
                printError(pkg,"suse-kde4-missing-dependency", "libkdepim4")

            if "akonadi-runtime" in pkg_requires and not libakonadi4_dep:
                printError(pkg,"suse-kde4-excessive-dependency", "%kde4_akonadi_requires")
            if not "akonadi-runtime" in pkg_requires and libakonadi4_dep:
                printError(pkg,"suse-kde4-missing-dependency", "%kde4_akonadi_requires")


check=KDE4Check()

if Config.info:
    addDetails('suse-kde4-missing-runtime-dependency',
"""Please add %kde4_runtime_requires to the (sub-)package to have the right versioned
dependency on the KDE version it was built against.""",
'suse-kde4-missing-dependency',
"""The package builds against a KDE4 related library, but it is missing the runtime 
depencency macro. please add the suggested macro to the (sub-)package listing in
the spec file."""
)