diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2015-09-04 17:05:08 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2015-09-04 17:16:28 +0200 |
commit | f83dea9f8d74da509befb9d1cca269ab1686ab1a (patch) | |
tree | 633f1754db02caddc3d75107869d9001fcdec1d8 | |
parent | c71fbb58e52e93e5aa1b18257a7a236d22f9a594 (diff) | |
download | python-systemd-f83dea9f8d74da509befb9d1cca269ab1686ab1a.tar.gz |
Add compatibility with systemd < 205
-rw-r--r-- | setup.py | 29 | ||||
-rw-r--r-- | systemd/_reader.c | 15 |
2 files changed, 28 insertions, 16 deletions
@@ -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 |