Version 235
... (rhbz#2113777)
This commit is contained in:
parent
cc51fb1f04
commit
3c09b2a17b
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,3 +8,4 @@
|
||||
/python-systemd-231.tar.gz
|
||||
/python-systemd-232.tar.gz
|
||||
/python-systemd-234.tar.gz
|
||||
/python-systemd-235.tar.gz
|
||||
|
@ -1,22 +0,0 @@
|
||||
From 63473b65d0c10268a9e2c9485313c4584027e67e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 11 Nov 2020 22:36:04 +0100
|
||||
Subject: [PATCH 1/2] journal: avoid warning about deprecated constant
|
||||
|
||||
---
|
||||
systemd/_reader.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/systemd/_reader.c b/systemd/_reader.c
|
||||
index c9aa11d43c..8de7f6a963 100644
|
||||
--- a/systemd/_reader.c
|
||||
+++ b/systemd/_reader.c
|
||||
@@ -1339,7 +1339,7 @@ init_reader(void)
|
||||
PyModule_AddIntConstant(m, "LOCAL_ONLY", SD_JOURNAL_LOCAL_ONLY) ||
|
||||
PyModule_AddIntConstant(m, "RUNTIME_ONLY", SD_JOURNAL_RUNTIME_ONLY) ||
|
||||
PyModule_AddIntConstant(m, "SYSTEM", SD_JOURNAL_SYSTEM) ||
|
||||
- PyModule_AddIntConstant(m, "SYSTEM_ONLY", SD_JOURNAL_SYSTEM_ONLY) ||
|
||||
+ PyModule_AddIntConstant(m, "SYSTEM_ONLY", SD_JOURNAL_SYSTEM) ||
|
||||
PyModule_AddIntConstant(m, "CURRENT_USER", SD_JOURNAL_CURRENT_USER) ||
|
||||
PyModule_AddIntConstant(m, "OS_ROOT", SD_JOURNAL_OS_ROOT) ||
|
||||
PyModule_AddStringConstant(m, "__version__", PACKAGE_VERSION)) {
|
@ -1,46 +0,0 @@
|
||||
From ab9f2797127b374665c37c06b02121f5dcf7d61c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Thu, 12 Nov 2020 16:55:56 +0100
|
||||
Subject: [PATCH 2/2] reader: make PY_SSIZE_T_CLEAN
|
||||
|
||||
---
|
||||
systemd/_reader.c | 15 +++++++++++++--
|
||||
1 file changed, 13 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/systemd/_reader.c b/systemd/_reader.c
|
||||
index 8de7f6a963..3b6a4d0bbc 100644
|
||||
--- a/systemd/_reader.c
|
||||
+++ b/systemd/_reader.c
|
||||
@@ -18,7 +18,12 @@
|
||||
along with python-systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
+#define PY_SSIZE_T_CLEAN
|
||||
+#pragma GCC diagnostic push
|
||||
+#pragma GCC diagnostic ignored "-Wredundant-decls"
|
||||
#include <Python.h>
|
||||
+#pragma GCC diagnostic pop
|
||||
+
|
||||
#include <structmember.h>
|
||||
#include <datetime.h>
|
||||
#include <time.h>
|
||||
@@ -710,11 +715,17 @@ PyDoc_STRVAR(Reader_add_match__doc__,
|
||||
"Match is a string of the form \"FIELD=value\".");
|
||||
static PyObject* Reader_add_match(Reader *self, PyObject *args, PyObject *keywds) {
|
||||
char *match;
|
||||
- int match_len, r;
|
||||
+ Py_ssize_t match_len;
|
||||
+ int r;
|
||||
if (!PyArg_ParseTuple(args, "s#:add_match", &match, &match_len))
|
||||
return NULL;
|
||||
|
||||
- r = sd_journal_add_match(self->j, match, match_len);
|
||||
+ if (match_len > INT_MAX) {
|
||||
+ set_error(-ENOBUFS, NULL, NULL);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ r = sd_journal_add_match(self->j, match, (int) match_len);
|
||||
if (set_error(r, NULL, "Invalid match") < 0)
|
||||
return NULL;
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 21e0cee30e5550cd6c9afa8c4cdedbcfdfca8480 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Thu, 12 Nov 2020 17:08:02 +0100
|
||||
Subject: [PATCH] test: make sure $NOTIFY_SOCKET is unset in test
|
||||
|
||||
When running the tests in Fedora's mock, the test would
|
||||
fail because NOTIFY_SOCKET is set to /run/systemd/nspawn/notify, and
|
||||
we get a permission error.
|
||||
---
|
||||
systemd/test/test_daemon.py | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/systemd/test/test_daemon.py b/systemd/test/test_daemon.py
|
||||
index 1ddb55e94d..ff9e086e72 100644
|
||||
--- a/systemd/test/test_daemon.py
|
||||
+++ b/systemd/test/test_daemon.py
|
||||
@@ -257,6 +257,8 @@ def test_listen_fds_default_unset():
|
||||
assert listen_fds() == []
|
||||
|
||||
def test_notify_no_socket():
|
||||
+ os.environ.pop('NOTIFY_SOCKET', None)
|
||||
+
|
||||
assert notify('READY=1') is False
|
||||
with skip_enosys():
|
||||
assert notify('FDSTORE=1', fds=[]) is False
|
@ -1,152 +0,0 @@
|
||||
diff -Naur python-systemd-234-orig/systemd/journal.py python-systemd-234/systemd/journal.py
|
||||
--- python-systemd-234-orig/systemd/journal.py 2017-03-25 21:33:59.000000000 -0400
|
||||
+++ python-systemd-234/systemd/journal.py 2021-09-16 15:19:58.140761181 -0400
|
||||
@@ -140,7 +140,7 @@
|
||||
journal.
|
||||
|
||||
"""
|
||||
- def __init__(self, flags=None, path=None, files=None, converters=None):
|
||||
+ def __init__(self, flags=None, path=None, files=None, converters=None, namespace=None):
|
||||
"""Create a new Reader.
|
||||
|
||||
Argument `flags` defines the open flags of the journal, which can be one
|
||||
@@ -149,8 +149,8 @@
|
||||
and SYSTEM_ONLY opens only journal files of system services and the kernel.
|
||||
|
||||
Argument `path` is the directory of journal files, either a file system
|
||||
- path or a file descriptor. Note that `flags`, `path`, and `files` are
|
||||
- exclusive.
|
||||
+ path or a file descriptor. Specify `namespace` to read from specific journal
|
||||
+ namespace. Note that `flags`, `path`, `files` and `namespace` are exclusive.
|
||||
|
||||
Argument `converters` is a dictionary which updates the
|
||||
DEFAULT_CONVERTERS to convert journal field values. Field names are used
|
||||
@@ -171,7 +171,7 @@
|
||||
else:
|
||||
flags = 0
|
||||
|
||||
- super(Reader, self).__init__(flags, path, files)
|
||||
+ super(Reader, self).__init__(flags, path, files, namespace)
|
||||
if _sys.version_info >= (3, 3):
|
||||
self.converters = _ChainMap()
|
||||
if converters is not None:
|
||||
diff -Naur python-systemd-234-orig/systemd/_reader.c python-systemd-234/systemd/_reader.c
|
||||
--- python-systemd-234-orig/systemd/_reader.c 2021-09-16 15:19:21.536553650 -0400
|
||||
+++ python-systemd-234/systemd/_reader.c 2021-09-16 15:19:58.140761181 -0400
|
||||
@@ -49,6 +49,12 @@
|
||||
# define HAVE_HAS_PERSISTENT_FILES
|
||||
#endif
|
||||
|
||||
+#if LIBSYSTEMD_VERSION >= 245
|
||||
+# define HAVE_JOURNAL_OPEN_NAMESPACE 1
|
||||
+#else
|
||||
+# define HAVE_JOURNAL_OPEN_NAMESPACE 0
|
||||
+#endif
|
||||
+
|
||||
#if LIBSYSTEMD_VERSION >= 230
|
||||
# define HAVE_JOURNAL_OPEN_DIRECTORY_FD
|
||||
#else
|
||||
@@ -89,17 +95,17 @@
|
||||
* Convert a str or bytes object into a C-string path.
|
||||
* Returns NULL on error.
|
||||
*/
|
||||
-static char* convert_path(PyObject *path, PyObject **bytes) {
|
||||
+static char* str_converter(PyObject *str, PyObject **bytes) {
|
||||
#if PY_MAJOR_VERSION >=3 && PY_MINOR_VERSION >= 1
|
||||
int r;
|
||||
|
||||
- r = PyUnicode_FSConverter(path, bytes);
|
||||
+ r = PyUnicode_FSConverter(str, bytes);
|
||||
if (r == 0)
|
||||
return NULL;
|
||||
|
||||
return PyBytes_AsString(*bytes);
|
||||
#else
|
||||
- return PyString_AsString(path);
|
||||
+ return PyString_AsString(str);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -146,7 +152,7 @@
|
||||
char *s;
|
||||
|
||||
item = PySequence_ITEM(obj, i);
|
||||
- s = convert_path(item, &bytes);
|
||||
+ s = str_converter(item, &bytes);
|
||||
if (!s)
|
||||
goto cleanup;
|
||||
|
||||
@@ -225,7 +231,7 @@
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(Reader__doc__,
|
||||
- "_Reader([flags | path | files]) -> ...\n\n"
|
||||
+ "_Reader([flags | path | files | namespace]) -> ...\n\n"
|
||||
"_Reader allows filtering and retrieval of Journal entries.\n"
|
||||
"Note: this is a low-level interface, and probably not what you\n"
|
||||
"want, use systemd.journal.Reader instead.\n\n"
|
||||
@@ -236,23 +242,25 @@
|
||||
"OS_ROOT is used to open the journal from directories relative to the specified\n"
|
||||
"directory path or file descriptor.\n"
|
||||
"\n"
|
||||
- "Instead of opening the system journal, argument `path` may specify a directory\n"
|
||||
- "which contains the journal. It maybe be either a file system path (a string), or\n"
|
||||
- "a file descriptor (an integer). Alternatively, argument `files` may specify a list\n"
|
||||
- "of journal file names. Note that `flags`, `path`, `files`, `directory_fd` are\n"
|
||||
- "exclusive.\n\n"
|
||||
+ "If `namespace` argument is specified, the specific journal namespace will be open\n"
|
||||
+ "(supported since systemd v245). Instead of opening the system journal, argument\n"
|
||||
+ "`path` may specify a directory which contains the journal. It maybe be either\n"
|
||||
+ "a file system path (a string), or a file descriptor (an integer). Alternatively,\n"
|
||||
+ "argument `files` may specify a list of journal file names. Note that `flags`, `path`,\n"
|
||||
+ "`files`, `directory_fd`, `namespace` are exclusive.\n\n"
|
||||
"_Reader implements the context manager protocol: the journal will be closed when\n"
|
||||
"exiting the block.");
|
||||
static int Reader_init(Reader *self, PyObject *args, PyObject *keywds) {
|
||||
unsigned flags = SD_JOURNAL_LOCAL_ONLY;
|
||||
- PyObject *_path = NULL, *_files = NULL;
|
||||
+ PyObject *_path = NULL, *_files = NULL, *_namespace = NULL;
|
||||
int r;
|
||||
|
||||
- static const char* const kwlist[] = {"flags", "path", "files", NULL};
|
||||
- if (!PyArg_ParseTupleAndKeywords(args, keywds, "|iO&O&:__init__", (char**) kwlist,
|
||||
+ static const char* const kwlist[] = {"flags", "path", "files", "namespace", NULL};
|
||||
+ if (!PyArg_ParseTupleAndKeywords(args, keywds, "|iO&O&O&:__init__", (char**) kwlist,
|
||||
&flags,
|
||||
null_converter, &_path,
|
||||
- null_converter, &_files))
|
||||
+ null_converter, &_files,
|
||||
+ null_converter, &_namespace))
|
||||
return -1;
|
||||
|
||||
if (!!_path + !!_files > 1) {
|
||||
@@ -279,7 +287,7 @@
|
||||
char *path = NULL;
|
||||
_cleanup_Py_DECREF_ PyObject *path_bytes = NULL;
|
||||
|
||||
- path = convert_path(_path, &path_bytes);
|
||||
+ path = str_converter(_path, &path_bytes);
|
||||
if (!path)
|
||||
return -1;
|
||||
|
||||
@@ -319,6 +327,20 @@
|
||||
r = -ENOSYS;
|
||||
#endif
|
||||
}
|
||||
+ } else if (_namespace) {
|
||||
+#if HAVE_JOURNAL_OPEN_NAMESPACE
|
||||
+ char *namespace = NULL;
|
||||
+ _cleanup_Py_DECREF_ PyObject *ns_bytes = NULL;
|
||||
+ namespace = str_converter(_namespace, &ns_bytes);
|
||||
+ if (!namespace)
|
||||
+ return -1;
|
||||
+
|
||||
+ Py_BEGIN_ALLOW_THREADS
|
||||
+ r = sd_journal_open_namespace(&self->j, namespace, flags);
|
||||
+ Py_END_ALLOW_THREADS
|
||||
+#else
|
||||
+ r = -ENOSYS;
|
||||
+#endif
|
||||
} else {
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
r = sd_journal_open(&self->j, flags);
|
@ -1,17 +1,12 @@
|
||||
Name: python-systemd
|
||||
Version: 234
|
||||
Version: 235
|
||||
Release: %autorelease
|
||||
Summary: Python module wrapping systemd functionality
|
||||
Summary: Python module wrapping libsystemd functionality
|
||||
|
||||
License: LGPLv2+
|
||||
URL: https://github.com/systemd/python-systemd
|
||||
Source0: https://github.com/systemd/python-systemd/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
||||
|
||||
Patch0001: 0001-journal-avoid-warning-about-deprecated-constant.patch
|
||||
Patch0002: 0002-reader-make-PY_SSIZE_T_CLEAN.patch
|
||||
Patch0003: 0003-test-make-sure-NOTIFY_SOCKET-is-unset-in-test.patch
|
||||
Patch0004: 0004-python-systemd-namespaces.patch
|
||||
|
||||
BuildRequires: make
|
||||
BuildRequires: gcc
|
||||
BuildRequires: systemd-devel
|
||||
@ -21,11 +16,10 @@ BuildRequires: web-assets-devel
|
||||
BuildRequires: python3-pytest
|
||||
|
||||
%global _description %{expand:
|
||||
Python module for native access to the systemd facilities.
|
||||
Functionality includes sending of structured messages to the journal
|
||||
and reading journal files, querying machine and boot identifiers and a
|
||||
lists of message identifiers provided by systemd. Other functionality
|
||||
provided by libsystemd is also wrapped.}
|
||||
Python module for native access to the libsystemd facilities. Functionality
|
||||
includes sending of structured messages to the journal and reading journal
|
||||
files, querying machine and boot identifiers and a lists of message identifiers
|
||||
provided by systemd. Other functionality provided the library is also wrapped.}
|
||||
|
||||
%description %_description
|
||||
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (python-systemd-234.tar.gz) = 164e34ba46827711e9c6ff9ed58b2706d9a22abfc7001de030ed7d463d8ddf783eb5fee93b207c29950a3c566018cc3f1a21a549421cf3e05c1287b433367eb2
|
||||
SHA512 (python-systemd-235.tar.gz) = f1286a477200cc7b4d2c44b43452da576e8e660925711466659795775bcee44796688e1ede6cc22e61cb5b03e631c396d22f9a133327ae1147506bce09bab47f
|
||||
|
Loading…
Reference in New Issue
Block a user