summaryrefslogtreecommitdiff
path: root/setup.py
blob: 428e63246a3d3bfafcb0a9380e0256e17768b425 (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
from distutils.core import setup, Extension
import subprocess

def pkgconfig(package, **kw):
    flag_map = {'-I': 'include_dirs', '-L': 'library_dirs', '-l': 'libraries'}
    output = subprocess.check_output(['pkg-config', '--libs', '--cflags', package],
                                     universal_newlines=True)
    for token in output.split():
        kw.setdefault(flag_map.get(token[:2]), []).append(token[2:])
    return kw

def lib(name, fallback):
    try:
        return pkgconfig(name)
    except subprocess.CalledProcessError:
        return pkgconfig(fallback)

version = '230'
defines = [('PACKAGE_VERSION', '"{}"'.format(version))]

_journal = Extension('systemd/_journal',
                     define_macros = defines,
                     sources = ['systemd/_journal.c',
                                'systemd/pyutil.c'],
                     **lib('libsystemd', 'libsystemd-journal'))
_reader = Extension('systemd/_reader',
                     define_macros = defines,
                     sources = ['systemd/_reader.c',
                                'systemd/pyutil.c',
                                'systemd/strv.c'],
                     **lib('libsystemd', 'libsystemd-journal'))
_daemon = Extension('systemd/_daemon',
                     define_macros = defines,
                     sources = ['systemd/_daemon.c',
                                'systemd/pyutil.c'],
                     **lib('libsystemd', 'libsystemd-daemon'))
id128 = Extension('systemd/id128',
                     define_macros = defines,
                     sources = ['systemd/id128.c',
                                'systemd/pyutil.c'],
                     **lib('libsystemd', 'libsystemd-id128'))
login = Extension('systemd/login',
                     define_macros = defines,
                     sources = ['systemd/login.c',
                                'systemd/pyutil.c',
                                'systemd/strv.c'],
                     **lib('libsystemd', 'libsystemd-login'))
setup (name = 'python-systemd',
       version = version,
       description = 'Native interface to the facilities of systemd',
       author_email = 'david@davidstrauss.net',
       maintainer = 'systemd developers',
       maintainer_email = 'systemd-devel@lists.freedesktop.org',
       url = 'https://github.com/systemd/python-systemd',
       license = 'LGPLv2+',
       classifiers = [
           'Programming Language :: Python :: 2',
           'Programming Language :: Python :: 3',
           'Topic :: Software Development :: Libraries :: Python Modules',
           'Topic :: System :: Logging',
           'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)',
           ],
       py_modules = ['systemd.journal', 'systemd.daemon'],
       ext_modules = [_journal,
                      _reader,
                      _daemon,
                      id128,
                      login])