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