summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2015-09-04 17:05:08 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2015-09-04 17:16:28 +0200
commitf83dea9f8d74da509befb9d1cca269ab1686ab1a (patch)
tree633f1754db02caddc3d75107869d9001fcdec1d8
parentc71fbb58e52e93e5aa1b18257a7a236d22f9a594 (diff)
downloadpython-systemd-f83dea9f8d74da509befb9d1cca269ab1686ab1a.tar.gz
Add compatibility with systemd < 205
-rw-r--r--setup.py29
-rw-r--r--systemd/_reader.c15
2 files changed, 28 insertions, 16 deletions
diff --git a/setup.py b/setup.py
index cb4de74..36db2ef 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,6 @@
import sys, os
from distutils.core import setup, Extension
-from subprocess import Popen, PIPE
+from subprocess import Popen, PIPE, check_output
def call(*cmd):
cmd = Popen(cmd,
@@ -18,14 +18,20 @@ def pkgconfig(package, **kw):
return status, result
for token in result.split():
kw.setdefault(flag_map.get(token[:2]), []).append(token[2:])
+ version = check_output(['pkg-config', '--modversion', package],
+ universal_newlines=True).strip()
+ pair = (package.replace('-', '_').upper() + '_VERSION', version)
+ defines = kw.setdefault('define_macros', [])
+ if pair not in defines:
+ defines.append(pair)
return status, kw
-def lib(*names):
+def lib(*names, **kw):
if '--version' in sys.argv:
return {}
results = []
for name in names:
- status, result = pkgconfig(name)
+ status, result = pkgconfig(name, **kw)
if status == 0:
return result
results.append(result)
@@ -34,35 +40,30 @@ def lib(*names):
sys.exit(status)
version = '230'
-defines = [('PACKAGE_VERSION', '"{}"'.format(version))]
+defines = {'define_macros':[('PACKAGE_VERSION', '"{}"'.format(version))]}
_journal = Extension('systemd/_journal',
- define_macros = defines,
sources = ['systemd/_journal.c',
'systemd/pyutil.c'],
- **lib('libsystemd', 'libsystemd-journal'))
+ **lib('libsystemd', 'libsystemd-journal', **defines))
_reader = Extension('systemd/_reader',
- define_macros = defines,
sources = ['systemd/_reader.c',
'systemd/pyutil.c',
'systemd/strv.c'],
- **lib('libsystemd', 'libsystemd-journal'))
+ **lib('libsystemd', 'libsystemd-journal', **defines))
_daemon = Extension('systemd/_daemon',
- define_macros = defines,
sources = ['systemd/_daemon.c',
'systemd/pyutil.c'],
- **lib('libsystemd', 'libsystemd-daemon'))
+ **lib('libsystemd', 'libsystemd-daemon', **defines))
id128 = Extension('systemd/id128',
- define_macros = defines,
sources = ['systemd/id128.c',
'systemd/pyutil.c'],
- **lib('libsystemd', 'libsystemd-id128'))
+ **lib('libsystemd', 'libsystemd-id128', **defines))
login = Extension('systemd/login',
- define_macros = defines,
sources = ['systemd/login.c',
'systemd/pyutil.c',
'systemd/strv.c'],
- **lib('libsystemd', 'libsystemd-login'))
+ **lib('libsystemd', 'libsystemd-login', **defines))
setup (name = 'python-systemd',
version = version,
description = 'Native interface to the facilities of systemd',
diff --git a/systemd/_reader.c b/systemd/_reader.c
index 671170d..58ee04c 100644
--- a/systemd/_reader.c
+++ b/systemd/_reader.c
@@ -31,6 +31,13 @@
#include "macro.h"
#include "strv.h"
+#if defined(LIBSYSTEMD_VERSION) || LIBSYSTEMD_JOURNAL_VERSION > 204
+# define HAVE_JOURNAL_OPEN_FILES
+#else
+# define SD_JOURNAL_SYSTEM 4
+# define SD_JOURNAL_CURRENT_USER 8
+#endif
+
typedef struct {
PyObject_HEAD
sd_journal *j;
@@ -170,9 +177,13 @@ static int Reader_init(Reader *self, PyObject *args, PyObject *keywds) {
Py_BEGIN_ALLOW_THREADS
if (path)
r = sd_journal_open_directory(&self->j, path, 0);
- else if (files)
+ else if (files) {
+#ifdef HAVE_JOURNAL_OPEN_FILES
r = sd_journal_open_files(&self->j, (const char**) files, 0);
- else
+#else
+ r = -ENOSYS;
+#endif
+ } else
r = sd_journal_open(&self->j, flags);
Py_END_ALLOW_THREADS