From 3c09b2a17b233d0da065f8fdee05c1c093316a30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 16 Aug 2022 16:20:17 +0200 Subject: [PATCH] Version 235 ... (rhbz#2113777) --- .gitignore | 1 + ...id-warning-about-deprecated-constant.patch | 22 --- 0002-reader-make-PY_SSIZE_T_CLEAN.patch | 46 ------ ...-sure-NOTIFY_SOCKET-is-unset-in-test.patch | 25 --- 0004-python-systemd-namespaces.patch | 152 ------------------ python-systemd.spec | 18 +-- sources | 2 +- 7 files changed, 8 insertions(+), 258 deletions(-) delete mode 100644 0001-journal-avoid-warning-about-deprecated-constant.patch delete mode 100644 0002-reader-make-PY_SSIZE_T_CLEAN.patch delete mode 100644 0003-test-make-sure-NOTIFY_SOCKET-is-unset-in-test.patch delete mode 100644 0004-python-systemd-namespaces.patch diff --git a/.gitignore b/.gitignore index 85d0d56..95161b7 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ /python-systemd-231.tar.gz /python-systemd-232.tar.gz /python-systemd-234.tar.gz +/python-systemd-235.tar.gz diff --git a/0001-journal-avoid-warning-about-deprecated-constant.patch b/0001-journal-avoid-warning-about-deprecated-constant.patch deleted file mode 100644 index d9174b7..0000000 --- a/0001-journal-avoid-warning-about-deprecated-constant.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 63473b65d0c10268a9e2c9485313c4584027e67e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -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)) { diff --git a/0002-reader-make-PY_SSIZE_T_CLEAN.patch b/0002-reader-make-PY_SSIZE_T_CLEAN.patch deleted file mode 100644 index 2c66e03..0000000 --- a/0002-reader-make-PY_SSIZE_T_CLEAN.patch +++ /dev/null @@ -1,46 +0,0 @@ -From ab9f2797127b374665c37c06b02121f5dcf7d61c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -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 . - ***/ - -+#define PY_SSIZE_T_CLEAN -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wredundant-decls" - #include -+#pragma GCC diagnostic pop -+ - #include - #include - #include -@@ -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; - diff --git a/0003-test-make-sure-NOTIFY_SOCKET-is-unset-in-test.patch b/0003-test-make-sure-NOTIFY_SOCKET-is-unset-in-test.patch deleted file mode 100644 index 06b7a34..0000000 --- a/0003-test-make-sure-NOTIFY_SOCKET-is-unset-in-test.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 21e0cee30e5550cd6c9afa8c4cdedbcfdfca8480 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -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 diff --git a/0004-python-systemd-namespaces.patch b/0004-python-systemd-namespaces.patch deleted file mode 100644 index 4750558..0000000 --- a/0004-python-systemd-namespaces.patch +++ /dev/null @@ -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); diff --git a/python-systemd.spec b/python-systemd.spec index 85bbfd2..01e426d 100644 --- a/python-systemd.spec +++ b/python-systemd.spec @@ -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 diff --git a/sources b/sources index 801ec30..ed47364 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (python-systemd-234.tar.gz) = 164e34ba46827711e9c6ff9ed58b2706d9a22abfc7001de030ed7d463d8ddf783eb5fee93b207c29950a3c566018cc3f1a21a549421cf3e05c1287b433367eb2 +SHA512 (python-systemd-235.tar.gz) = f1286a477200cc7b4d2c44b43452da576e8e660925711466659795775bcee44796688e1ede6cc22e61cb5b03e631c396d22f9a133327ae1147506bce09bab47f