From 09451263e321edf8213034cd7ac64118e9dd5399 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 20 Nov 2024 13:31:34 +0000 Subject: [PATCH] import RHEL 10 Beta rtkit-0.11-66.el10 --- .gitignore | 2 +- .rtkit.metadata | 1 - ...ore-debug-messages-from-rtkit-daemon.patch | 24 + 0001-Fix-borked-error-check.patch | 22 + ...ECURITY-Pass-uid-of-caller-to-polkit.patch | 0 0001-systemd-update-sd-daemon.-ch.patch | 306 ++++++ ...Remove-bundled-copy-of-sd-daemon.-ch.patch | 870 ++++++++++++++++++ ...at-security.patch => format-security.patch | 0 ...rolgroup.patch => rtkit-controlgroup.patch | 0 ...mq_getattr.patch => rtkit-mq_getattr.patch | 0 SPECS/rtkit.spec => rtkit.spec | 135 ++- rtkit.sysusers | 2 + sources | 1 + 13 files changed, 1325 insertions(+), 38 deletions(-) delete mode 100644 .rtkit.metadata create mode 100644 0001-Don-t-store-debug-messages-from-rtkit-daemon.patch create mode 100644 0001-Fix-borked-error-check.patch rename SOURCES/0001-SECURITY-Pass-uid-of-caller-to-polkit.patch => 0001-SECURITY-Pass-uid-of-caller-to-polkit.patch (100%) create mode 100644 0001-systemd-update-sd-daemon.-ch.patch create mode 100644 0002-Remove-bundled-copy-of-sd-daemon.-ch.patch rename SOURCES/format-security.patch => format-security.patch (100%) rename SOURCES/rtkit-controlgroup.patch => rtkit-controlgroup.patch (100%) rename SOURCES/rtkit-mq_getattr.patch => rtkit-mq_getattr.patch (100%) rename SPECS/rtkit.spec => rtkit.spec (57%) create mode 100644 rtkit.sysusers create mode 100644 sources diff --git a/.gitignore b/.gitignore index a072f6a..ec6e2dc 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/rtkit-0.11.tar.xz +rtkit-0.11.tar.xz diff --git a/.rtkit.metadata b/.rtkit.metadata deleted file mode 100644 index 2ac1650..0000000 --- a/.rtkit.metadata +++ /dev/null @@ -1 +0,0 @@ -dc4bcaa898ef3cadb6fff35dcce752bc9f64e435 SOURCES/rtkit-0.11.tar.xz diff --git a/0001-Don-t-store-debug-messages-from-rtkit-daemon.patch b/0001-Don-t-store-debug-messages-from-rtkit-daemon.patch new file mode 100644 index 0000000..e55758f --- /dev/null +++ b/0001-Don-t-store-debug-messages-from-rtkit-daemon.patch @@ -0,0 +1,24 @@ +From 0ced1f81d7e14e042f0c300011659a3eae0df3c3 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Tue, 13 Aug 2024 21:09:57 +0200 +Subject: [PATCH] Don't store debug messages from rtkit-daemon + +--- + rtkit-daemon.service.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/rtkit-daemon.service.in b/rtkit-daemon.service.in +index d0dc786..7a80d33 100644 +--- a/rtkit-daemon.service.in ++++ b/rtkit-daemon.service.in +@@ -26,6 +26,7 @@ NotifyAccess=main + CapabilityBoundingSet=CAP_SYS_NICE CAP_DAC_READ_SEARCH CAP_SYS_PTRACE CAP_SYS_CHROOT CAP_SETGID CAP_SETUID + PrivateTmp=yes + PrivateNetwork=yes ++LogLevelMax=info + + [Install] + WantedBy=graphical.target +-- +2.45.2 + diff --git a/0001-Fix-borked-error-check.patch b/0001-Fix-borked-error-check.patch new file mode 100644 index 0000000..46b759f --- /dev/null +++ b/0001-Fix-borked-error-check.patch @@ -0,0 +1,22 @@ +From ef090ee5a913f2c68e0fbed2600bfe38dfe55029 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sun, 24 Jan 2021 21:12:22 +0100 +Subject: [PATCH 1/2] Fix borked error check + +--- + rtkit-daemon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rtkit-daemon.c b/rtkit-daemon.c +index 3ecc1f7840..a15e84f8f5 100644 +--- a/rtkit-daemon.c ++++ b/rtkit-daemon.c +@@ -1463,7 +1463,7 @@ static DBusHandlerResult dbus_handler(DBusConnection *c, DBusMessage *m, void *u + if (strcmp(interface, "org.freedesktop.RealtimeKit1") == 0) { + assert_se(r = dbus_message_new_method_return(m)); + +- if (!handle_dbus_prop_get(property, r) < 0) { ++ if (handle_dbus_prop_get(property, r) < 0) { + dbus_message_unref(r); + assert_se(r = dbus_message_new_error_printf( + m, diff --git a/SOURCES/0001-SECURITY-Pass-uid-of-caller-to-polkit.patch b/0001-SECURITY-Pass-uid-of-caller-to-polkit.patch similarity index 100% rename from SOURCES/0001-SECURITY-Pass-uid-of-caller-to-polkit.patch rename to 0001-SECURITY-Pass-uid-of-caller-to-polkit.patch diff --git a/0001-systemd-update-sd-daemon.-ch.patch b/0001-systemd-update-sd-daemon.-ch.patch new file mode 100644 index 0000000..41195ed --- /dev/null +++ b/0001-systemd-update-sd-daemon.-ch.patch @@ -0,0 +1,306 @@ +From 8c902327f91616af5e87fd2a6d4b7ea38bb3aa32 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Thu, 26 Sep 2013 21:53:49 +0200 +Subject: [PATCH] systemd: update sd-daemon.[ch] + +--- + sd-daemon.c | 100 +++++++++++++++++++++++----------------------------- + sd-daemon.h | 14 ++++---- + 2 files changed, 52 insertions(+), 62 deletions(-) + +diff --git a/sd-daemon.c b/sd-daemon.c +index 763e079b4e..485b301023 100644 +--- a/sd-daemon.c ++++ b/sd-daemon.c +@@ -25,18 +25,14 @@ + ***/ + + #ifndef _GNU_SOURCE +-#define _GNU_SOURCE ++# define _GNU_SOURCE + #endif + + #include + #include + #include + #include +-#ifdef __BIONIC__ +-#include +-#else +-#include +-#endif ++#include + #include + #include + #include +@@ -47,22 +43,22 @@ + #include + #include + +-#if defined(__linux__) +-#include ++#if defined(__linux__) && !defined(SD_DAEMON_DISABLE_MQ) ++# include + #endif + + #include "sd-daemon.h" + + #if (__GNUC__ >= 4) +-#ifdef SD_EXPORT_SYMBOLS ++# ifdef SD_EXPORT_SYMBOLS + /* Export symbols */ +-#define _sd_export_ __attribute__ ((visibility("default"))) +-#else ++# define _sd_export_ __attribute__ ((visibility("default"))) ++# else + /* Don't export the symbols */ +-#define _sd_export_ __attribute__ ((visibility("hidden"))) +-#endif ++# define _sd_export_ __attribute__ ((visibility("hidden"))) ++# endif + #else +-#define _sd_export_ ++# define _sd_export_ + #endif + + _sd_export_ int sd_listen_fds(int unset_environment) { +@@ -75,7 +71,8 @@ _sd_export_ int sd_listen_fds(int unset_environment) { + char *p = NULL; + unsigned long l; + +- if (!(e = getenv("LISTEN_PID"))) { ++ e = getenv("LISTEN_PID"); ++ if (!e) { + r = 0; + goto finish; + } +@@ -83,12 +80,12 @@ _sd_export_ int sd_listen_fds(int unset_environment) { + errno = 0; + l = strtoul(e, &p, 10); + +- if (errno != 0) { ++ if (errno > 0) { + r = -errno; + goto finish; + } + +- if (!p || *p || l <= 0) { ++ if (!p || p == e || *p || l <= 0) { + r = -EINVAL; + goto finish; + } +@@ -99,7 +96,8 @@ _sd_export_ int sd_listen_fds(int unset_environment) { + goto finish; + } + +- if (!(e = getenv("LISTEN_FDS"))) { ++ e = getenv("LISTEN_FDS"); ++ if (!e) { + r = 0; + goto finish; + } +@@ -107,12 +105,12 @@ _sd_export_ int sd_listen_fds(int unset_environment) { + errno = 0; + l = strtoul(e, &p, 10); + +- if (errno != 0) { ++ if (errno > 0) { + r = -errno; + goto finish; + } + +- if (!p || *p) { ++ if (!p || p == e || *p) { + r = -EINVAL; + goto finish; + } +@@ -120,7 +118,8 @@ _sd_export_ int sd_listen_fds(int unset_environment) { + for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + (int) l; fd ++) { + int flags; + +- if ((flags = fcntl(fd, F_GETFD)) < 0) { ++ flags = fcntl(fd, F_GETFD); ++ if (flags < 0) { + r = -errno; + goto finish; + } +@@ -152,7 +151,6 @@ _sd_export_ int sd_is_fifo(int fd, const char *path) { + if (fd < 0) + return -EINVAL; + +- memset(&st_fd, 0, sizeof(st_fd)); + if (fstat(fd, &st_fd) < 0) + return -errno; + +@@ -162,7 +160,6 @@ _sd_export_ int sd_is_fifo(int fd, const char *path) { + if (path) { + struct stat st_path; + +- memset(&st_path, 0, sizeof(st_path)); + if (stat(path, &st_path) < 0) { + + if (errno == ENOENT || errno == ENOTDIR) +@@ -272,15 +269,13 @@ _sd_export_ int sd_is_socket(int fd, int family, int type, int listening) { + if (family < 0) + return -EINVAL; + +- if ((r = sd_is_socket_internal(fd, type, listening)) <= 0) ++ r = sd_is_socket_internal(fd, type, listening); ++ if (r <= 0) + return r; + + if (family > 0) { +- union sockaddr_union sockaddr; +- socklen_t l; +- +- memset(&sockaddr, 0, sizeof(sockaddr)); +- l = sizeof(sockaddr); ++ union sockaddr_union sockaddr = {}; ++ socklen_t l = sizeof(sockaddr); + + if (getsockname(fd, &sockaddr.sa, &l) < 0) + return -errno; +@@ -295,19 +290,17 @@ _sd_export_ int sd_is_socket(int fd, int family, int type, int listening) { + } + + _sd_export_ int sd_is_socket_inet(int fd, int family, int type, int listening, uint16_t port) { +- union sockaddr_union sockaddr; +- socklen_t l; ++ union sockaddr_union sockaddr = {}; ++ socklen_t l = sizeof(sockaddr); + int r; + + if (family != 0 && family != AF_INET && family != AF_INET6) + return -EINVAL; + +- if ((r = sd_is_socket_internal(fd, type, listening)) <= 0) ++ r = sd_is_socket_internal(fd, type, listening); ++ if (r <= 0) + return r; + +- memset(&sockaddr, 0, sizeof(sockaddr)); +- l = sizeof(sockaddr); +- + if (getsockname(fd, &sockaddr.sa, &l) < 0) + return -errno; + +@@ -340,16 +333,14 @@ _sd_export_ int sd_is_socket_inet(int fd, int family, int type, int listening, u + } + + _sd_export_ int sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t length) { +- union sockaddr_union sockaddr; +- socklen_t l; ++ union sockaddr_union sockaddr = {}; ++ socklen_t l = sizeof(sockaddr); + int r; + +- if ((r = sd_is_socket_internal(fd, type, listening)) <= 0) ++ r = sd_is_socket_internal(fd, type, listening); ++ if (r <= 0) + return r; + +- memset(&sockaddr, 0, sizeof(sockaddr)); +- l = sizeof(sockaddr); +- + if (getsockname(fd, &sockaddr.sa, &l) < 0) + return -errno; + +@@ -360,10 +351,10 @@ _sd_export_ int sd_is_socket_unix(int fd, int type, int listening, const char *p + return 0; + + if (path) { +- if (length <= 0) ++ if (length == 0) + length = strlen(path); + +- if (length <= 0) ++ if (length == 0) + /* Unnamed socket */ + return l == offsetof(struct sockaddr_un, sun_path); + +@@ -383,7 +374,7 @@ _sd_export_ int sd_is_socket_unix(int fd, int type, int listening, const char *p + } + + _sd_export_ int sd_is_mq(int fd, const char *path) { +-#if !defined(__linux__) ++#if !defined(__linux__) || defined(SD_DAEMON_DISABLE_MQ) + return 0; + #else + struct mq_attr attr; +@@ -434,7 +425,8 @@ _sd_export_ int sd_notify(int unset_environment, const char *state) { + goto finish; + } + +- if (!(e = getenv("NOTIFY_SOCKET"))) ++ e = getenv("NOTIFY_SOCKET"); ++ if (!e) + return 0; + + /* Must be an abstract socket, or an absolute path */ +@@ -443,7 +435,8 @@ _sd_export_ int sd_notify(int unset_environment, const char *state) { + goto finish; + } + +- if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) { ++ fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0); ++ if (fd < 0) { + r = -errno; + goto finish; + } +@@ -513,18 +506,15 @@ _sd_export_ int sd_booted(void) { + #if defined(DISABLE_SYSTEMD) || !defined(__linux__) + return 0; + #else ++ struct stat st; + +- struct stat a, b; ++ /* We test whether the runtime unit file directory has been ++ * created. This takes place in mount-setup.c, so is ++ * guaranteed to happen very early during boot. */ + +- /* We simply test whether the systemd cgroup hierarchy is +- * mounted */ +- +- if (lstat("/sys/fs/cgroup", &a) < 0) +- return 0; +- +- if (lstat("/sys/fs/cgroup/systemd", &b) < 0) ++ if (lstat("/run/systemd/system/", &st) < 0) + return 0; + +- return a.st_dev != b.st_dev; ++ return !!S_ISDIR(st.st_mode); + #endif + } +diff --git a/sd-daemon.h b/sd-daemon.h +index fe51159ee6..daa3f4c857 100644 +--- a/sd-daemon.h ++++ b/sd-daemon.h +@@ -59,20 +59,20 @@ extern "C" { + You may find an up-to-date version of these source files online: + + http://cgit.freedesktop.org/systemd/systemd/plain/src/systemd/sd-daemon.h +- http://cgit.freedesktop.org/systemd/systemd/plain/src/sd-daemon.c ++ http://cgit.freedesktop.org/systemd/systemd/plain/src/libsystemd-daemon/sd-daemon.c + + This should compile on non-Linux systems, too, but with the + exception of the sd_is_xxx() calls all functions will become NOPs. + +- See sd-daemon(7) for more information. ++ See sd-daemon(3) for more information. + */ + + #ifndef _sd_printf_attr_ +-#if __GNUC__ >= 4 +-#define _sd_printf_attr_(a,b) __attribute__ ((format (printf, a, b))) +-#else +-#define _sd_printf_attr_(a,b) +-#endif ++# if __GNUC__ >= 4 ++# define _sd_printf_attr_(a,b) __attribute__ ((format (printf, a, b))) ++# else ++# define _sd_printf_attr_(a,b) ++# endif + #endif + + /* diff --git a/0002-Remove-bundled-copy-of-sd-daemon.-ch.patch b/0002-Remove-bundled-copy-of-sd-daemon.-ch.patch new file mode 100644 index 0000000..31e5a50 --- /dev/null +++ b/0002-Remove-bundled-copy-of-sd-daemon.-ch.patch @@ -0,0 +1,870 @@ +From f5c88312c3fc5b7dc944eb36c2b8c62a44b78798 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sun, 24 Jan 2021 21:19:51 +0100 +Subject: [PATCH 2/2] Remove bundled copy of sd-daemon.[ch] + +Let's just use the system version. +--- + Makefile.am | 10 +- + rtkit-daemon.c | 2 +- + sd-daemon.c | 520 ------------------------------------------------- + sd-daemon.h | 282 --------------------------- + 4 files changed, 4 insertions(+), 810 deletions(-) + delete mode 100644 sd-daemon.c + delete mode 100644 sd-daemon.h + +diff --git a/Makefile.am b/Makefile.am +index febc35535d..2217a80b3c 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -56,10 +56,10 @@ systemdsystemunit_DATA = \ + endif + + rtkit_daemon_SOURCES = \ +- rtkit-daemon.c rtkit.h \ +- sd-daemon.c sd-daemon.h ++ rtkit-daemon.c rtkit.h + rtkit_daemon_LDADD = \ +- $(DBUS_LIBS) ++ $(DBUS_LIBS) \ ++ -lsystemd + rtkit_daemon_CFLAGS = \ + $(AM_CFLAGS) \ + $(DBUS_CFLAGS) +@@ -93,7 +93,3 @@ EXTRA_DIST += \ + + DISTCHECK_CONFIGURE_FLAGS = \ + --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir) +- +-update-systemd: +- curl http://cgit.freedesktop.org/systemd/systemd/plain/src/libsystemd-daemon/sd-daemon.c > sd-daemon.c +- curl http://cgit.freedesktop.org/systemd/systemd/plain/src/systemd/sd-daemon.h > sd-daemon.h +diff --git a/rtkit-daemon.c b/rtkit-daemon.c +index a15e84f8f5..fdff7f63dc 100644 +--- a/rtkit-daemon.c ++++ b/rtkit-daemon.c +@@ -50,9 +50,9 @@ + #include + #include + #include ++#include + + #include "rtkit.h" +-#include "sd-daemon.h" + + #ifndef __linux__ + #error "This stuff only works on Linux!" +diff --git a/sd-daemon.c b/sd-daemon.c +deleted file mode 100644 +index 485b301023..0000000000 +--- a/sd-daemon.c ++++ /dev/null +@@ -1,520 +0,0 @@ +-/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ +- +-/*** +- Copyright 2010 Lennart Poettering +- +- Permission is hereby granted, free of charge, to any person +- obtaining a copy of this software and associated documentation files +- (the "Software"), to deal in the Software without restriction, +- including without limitation the rights to use, copy, modify, merge, +- publish, distribute, sublicense, and/or sell copies of the Software, +- and to permit persons to whom the Software is furnished to do so, +- subject to the following conditions: +- +- The above copyright notice and this permission notice shall be +- included in all copies or substantial portions of the Software. +- +- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +- BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +- ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +- SOFTWARE. +-***/ +- +-#ifndef _GNU_SOURCE +-# define _GNU_SOURCE +-#endif +- +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +- +-#if defined(__linux__) && !defined(SD_DAEMON_DISABLE_MQ) +-# include +-#endif +- +-#include "sd-daemon.h" +- +-#if (__GNUC__ >= 4) +-# ifdef SD_EXPORT_SYMBOLS +-/* Export symbols */ +-# define _sd_export_ __attribute__ ((visibility("default"))) +-# else +-/* Don't export the symbols */ +-# define _sd_export_ __attribute__ ((visibility("hidden"))) +-# endif +-#else +-# define _sd_export_ +-#endif +- +-_sd_export_ int sd_listen_fds(int unset_environment) { +- +-#if defined(DISABLE_SYSTEMD) || !defined(__linux__) +- return 0; +-#else +- int r, fd; +- const char *e; +- char *p = NULL; +- unsigned long l; +- +- e = getenv("LISTEN_PID"); +- if (!e) { +- r = 0; +- goto finish; +- } +- +- errno = 0; +- l = strtoul(e, &p, 10); +- +- if (errno > 0) { +- r = -errno; +- goto finish; +- } +- +- if (!p || p == e || *p || l <= 0) { +- r = -EINVAL; +- goto finish; +- } +- +- /* Is this for us? */ +- if (getpid() != (pid_t) l) { +- r = 0; +- goto finish; +- } +- +- e = getenv("LISTEN_FDS"); +- if (!e) { +- r = 0; +- goto finish; +- } +- +- errno = 0; +- l = strtoul(e, &p, 10); +- +- if (errno > 0) { +- r = -errno; +- goto finish; +- } +- +- if (!p || p == e || *p) { +- r = -EINVAL; +- goto finish; +- } +- +- for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + (int) l; fd ++) { +- int flags; +- +- flags = fcntl(fd, F_GETFD); +- if (flags < 0) { +- r = -errno; +- goto finish; +- } +- +- if (flags & FD_CLOEXEC) +- continue; +- +- if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) < 0) { +- r = -errno; +- goto finish; +- } +- } +- +- r = (int) l; +- +-finish: +- if (unset_environment) { +- unsetenv("LISTEN_PID"); +- unsetenv("LISTEN_FDS"); +- } +- +- return r; +-#endif +-} +- +-_sd_export_ int sd_is_fifo(int fd, const char *path) { +- struct stat st_fd; +- +- if (fd < 0) +- return -EINVAL; +- +- if (fstat(fd, &st_fd) < 0) +- return -errno; +- +- if (!S_ISFIFO(st_fd.st_mode)) +- return 0; +- +- if (path) { +- struct stat st_path; +- +- if (stat(path, &st_path) < 0) { +- +- if (errno == ENOENT || errno == ENOTDIR) +- return 0; +- +- return -errno; +- } +- +- return +- st_path.st_dev == st_fd.st_dev && +- st_path.st_ino == st_fd.st_ino; +- } +- +- return 1; +-} +- +-_sd_export_ int sd_is_special(int fd, const char *path) { +- struct stat st_fd; +- +- if (fd < 0) +- return -EINVAL; +- +- if (fstat(fd, &st_fd) < 0) +- return -errno; +- +- if (!S_ISREG(st_fd.st_mode) && !S_ISCHR(st_fd.st_mode)) +- return 0; +- +- if (path) { +- struct stat st_path; +- +- if (stat(path, &st_path) < 0) { +- +- if (errno == ENOENT || errno == ENOTDIR) +- return 0; +- +- return -errno; +- } +- +- if (S_ISREG(st_fd.st_mode) && S_ISREG(st_path.st_mode)) +- return +- st_path.st_dev == st_fd.st_dev && +- st_path.st_ino == st_fd.st_ino; +- else if (S_ISCHR(st_fd.st_mode) && S_ISCHR(st_path.st_mode)) +- return st_path.st_rdev == st_fd.st_rdev; +- else +- return 0; +- } +- +- return 1; +-} +- +-static int sd_is_socket_internal(int fd, int type, int listening) { +- struct stat st_fd; +- +- if (fd < 0 || type < 0) +- return -EINVAL; +- +- if (fstat(fd, &st_fd) < 0) +- return -errno; +- +- if (!S_ISSOCK(st_fd.st_mode)) +- return 0; +- +- if (type != 0) { +- int other_type = 0; +- socklen_t l = sizeof(other_type); +- +- if (getsockopt(fd, SOL_SOCKET, SO_TYPE, &other_type, &l) < 0) +- return -errno; +- +- if (l != sizeof(other_type)) +- return -EINVAL; +- +- if (other_type != type) +- return 0; +- } +- +- if (listening >= 0) { +- int accepting = 0; +- socklen_t l = sizeof(accepting); +- +- if (getsockopt(fd, SOL_SOCKET, SO_ACCEPTCONN, &accepting, &l) < 0) +- return -errno; +- +- if (l != sizeof(accepting)) +- return -EINVAL; +- +- if (!accepting != !listening) +- return 0; +- } +- +- return 1; +-} +- +-union sockaddr_union { +- struct sockaddr sa; +- struct sockaddr_in in4; +- struct sockaddr_in6 in6; +- struct sockaddr_un un; +- struct sockaddr_storage storage; +-}; +- +-_sd_export_ int sd_is_socket(int fd, int family, int type, int listening) { +- int r; +- +- if (family < 0) +- return -EINVAL; +- +- r = sd_is_socket_internal(fd, type, listening); +- if (r <= 0) +- return r; +- +- if (family > 0) { +- union sockaddr_union sockaddr = {}; +- socklen_t l = sizeof(sockaddr); +- +- if (getsockname(fd, &sockaddr.sa, &l) < 0) +- return -errno; +- +- if (l < sizeof(sa_family_t)) +- return -EINVAL; +- +- return sockaddr.sa.sa_family == family; +- } +- +- return 1; +-} +- +-_sd_export_ int sd_is_socket_inet(int fd, int family, int type, int listening, uint16_t port) { +- union sockaddr_union sockaddr = {}; +- socklen_t l = sizeof(sockaddr); +- int r; +- +- if (family != 0 && family != AF_INET && family != AF_INET6) +- return -EINVAL; +- +- r = sd_is_socket_internal(fd, type, listening); +- if (r <= 0) +- return r; +- +- if (getsockname(fd, &sockaddr.sa, &l) < 0) +- return -errno; +- +- if (l < sizeof(sa_family_t)) +- return -EINVAL; +- +- if (sockaddr.sa.sa_family != AF_INET && +- sockaddr.sa.sa_family != AF_INET6) +- return 0; +- +- if (family > 0) +- if (sockaddr.sa.sa_family != family) +- return 0; +- +- if (port > 0) { +- if (sockaddr.sa.sa_family == AF_INET) { +- if (l < sizeof(struct sockaddr_in)) +- return -EINVAL; +- +- return htons(port) == sockaddr.in4.sin_port; +- } else { +- if (l < sizeof(struct sockaddr_in6)) +- return -EINVAL; +- +- return htons(port) == sockaddr.in6.sin6_port; +- } +- } +- +- return 1; +-} +- +-_sd_export_ int sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t length) { +- union sockaddr_union sockaddr = {}; +- socklen_t l = sizeof(sockaddr); +- int r; +- +- r = sd_is_socket_internal(fd, type, listening); +- if (r <= 0) +- return r; +- +- if (getsockname(fd, &sockaddr.sa, &l) < 0) +- return -errno; +- +- if (l < sizeof(sa_family_t)) +- return -EINVAL; +- +- if (sockaddr.sa.sa_family != AF_UNIX) +- return 0; +- +- if (path) { +- if (length == 0) +- length = strlen(path); +- +- if (length == 0) +- /* Unnamed socket */ +- return l == offsetof(struct sockaddr_un, sun_path); +- +- if (path[0]) +- /* Normal path socket */ +- return +- (l >= offsetof(struct sockaddr_un, sun_path) + length + 1) && +- memcmp(path, sockaddr.un.sun_path, length+1) == 0; +- else +- /* Abstract namespace socket */ +- return +- (l == offsetof(struct sockaddr_un, sun_path) + length) && +- memcmp(path, sockaddr.un.sun_path, length) == 0; +- } +- +- return 1; +-} +- +-_sd_export_ int sd_is_mq(int fd, const char *path) { +-#if !defined(__linux__) || defined(SD_DAEMON_DISABLE_MQ) +- return 0; +-#else +- struct mq_attr attr; +- +- if (fd < 0) +- return -EINVAL; +- +- if (mq_getattr(fd, &attr) < 0) +- return -errno; +- +- if (path) { +- char fpath[PATH_MAX]; +- struct stat a, b; +- +- if (path[0] != '/') +- return -EINVAL; +- +- if (fstat(fd, &a) < 0) +- return -errno; +- +- strncpy(stpcpy(fpath, "/dev/mqueue"), path, sizeof(fpath) - 12); +- fpath[sizeof(fpath)-1] = 0; +- +- if (stat(fpath, &b) < 0) +- return -errno; +- +- if (a.st_dev != b.st_dev || +- a.st_ino != b.st_ino) +- return 0; +- } +- +- return 1; +-#endif +-} +- +-_sd_export_ int sd_notify(int unset_environment, const char *state) { +-#if defined(DISABLE_SYSTEMD) || !defined(__linux__) || !defined(SOCK_CLOEXEC) +- return 0; +-#else +- int fd = -1, r; +- struct msghdr msghdr; +- struct iovec iovec; +- union sockaddr_union sockaddr; +- const char *e; +- +- if (!state) { +- r = -EINVAL; +- goto finish; +- } +- +- e = getenv("NOTIFY_SOCKET"); +- if (!e) +- return 0; +- +- /* Must be an abstract socket, or an absolute path */ +- if ((e[0] != '@' && e[0] != '/') || e[1] == 0) { +- r = -EINVAL; +- goto finish; +- } +- +- fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0); +- if (fd < 0) { +- r = -errno; +- goto finish; +- } +- +- memset(&sockaddr, 0, sizeof(sockaddr)); +- sockaddr.sa.sa_family = AF_UNIX; +- strncpy(sockaddr.un.sun_path, e, sizeof(sockaddr.un.sun_path)); +- +- if (sockaddr.un.sun_path[0] == '@') +- sockaddr.un.sun_path[0] = 0; +- +- memset(&iovec, 0, sizeof(iovec)); +- iovec.iov_base = (char*) state; +- iovec.iov_len = strlen(state); +- +- memset(&msghdr, 0, sizeof(msghdr)); +- msghdr.msg_name = &sockaddr; +- msghdr.msg_namelen = offsetof(struct sockaddr_un, sun_path) + strlen(e); +- +- if (msghdr.msg_namelen > sizeof(struct sockaddr_un)) +- msghdr.msg_namelen = sizeof(struct sockaddr_un); +- +- msghdr.msg_iov = &iovec; +- msghdr.msg_iovlen = 1; +- +- if (sendmsg(fd, &msghdr, MSG_NOSIGNAL) < 0) { +- r = -errno; +- goto finish; +- } +- +- r = 1; +- +-finish: +- if (unset_environment) +- unsetenv("NOTIFY_SOCKET"); +- +- if (fd >= 0) +- close(fd); +- +- return r; +-#endif +-} +- +-_sd_export_ int sd_notifyf(int unset_environment, const char *format, ...) { +-#if defined(DISABLE_SYSTEMD) || !defined(__linux__) +- return 0; +-#else +- va_list ap; +- char *p = NULL; +- int r; +- +- va_start(ap, format); +- r = vasprintf(&p, format, ap); +- va_end(ap); +- +- if (r < 0 || !p) +- return -ENOMEM; +- +- r = sd_notify(unset_environment, p); +- free(p); +- +- return r; +-#endif +-} +- +-_sd_export_ int sd_booted(void) { +-#if defined(DISABLE_SYSTEMD) || !defined(__linux__) +- return 0; +-#else +- struct stat st; +- +- /* We test whether the runtime unit file directory has been +- * created. This takes place in mount-setup.c, so is +- * guaranteed to happen very early during boot. */ +- +- if (lstat("/run/systemd/system/", &st) < 0) +- return 0; +- +- return !!S_ISDIR(st.st_mode); +-#endif +-} +diff --git a/sd-daemon.h b/sd-daemon.h +deleted file mode 100644 +index daa3f4c857..0000000000 +--- a/sd-daemon.h ++++ /dev/null +@@ -1,282 +0,0 @@ +-/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ +- +-#ifndef foosddaemonhfoo +-#define foosddaemonhfoo +- +-/*** +- Copyright 2010 Lennart Poettering +- +- Permission is hereby granted, free of charge, to any person +- obtaining a copy of this software and associated documentation files +- (the "Software"), to deal in the Software without restriction, +- including without limitation the rights to use, copy, modify, merge, +- publish, distribute, sublicense, and/or sell copies of the Software, +- and to permit persons to whom the Software is furnished to do so, +- subject to the following conditions: +- +- The above copyright notice and this permission notice shall be +- included in all copies or substantial portions of the Software. +- +- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +- BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +- ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +- SOFTWARE. +-***/ +- +-#include +-#include +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-/* +- Reference implementation of a few systemd related interfaces for +- writing daemons. These interfaces are trivial to implement. To +- simplify porting we provide this reference implementation. +- Applications are welcome to reimplement the algorithms described +- here if they do not want to include these two source files. +- +- The following functionality is provided: +- +- - Support for logging with log levels on stderr +- - File descriptor passing for socket-based activation +- - Daemon startup and status notification +- - Detection of systemd boots +- +- You may compile this with -DDISABLE_SYSTEMD to disable systemd +- support. This makes all those calls NOPs that are directly related to +- systemd (i.e. only sd_is_xxx() will stay useful). +- +- Since this is drop-in code we don't want any of our symbols to be +- exported in any case. Hence we declare hidden visibility for all of +- them. +- +- You may find an up-to-date version of these source files online: +- +- http://cgit.freedesktop.org/systemd/systemd/plain/src/systemd/sd-daemon.h +- http://cgit.freedesktop.org/systemd/systemd/plain/src/libsystemd-daemon/sd-daemon.c +- +- This should compile on non-Linux systems, too, but with the +- exception of the sd_is_xxx() calls all functions will become NOPs. +- +- See sd-daemon(3) for more information. +-*/ +- +-#ifndef _sd_printf_attr_ +-# if __GNUC__ >= 4 +-# define _sd_printf_attr_(a,b) __attribute__ ((format (printf, a, b))) +-# else +-# define _sd_printf_attr_(a,b) +-# endif +-#endif +- +-/* +- Log levels for usage on stderr: +- +- fprintf(stderr, SD_NOTICE "Hello World!\n"); +- +- This is similar to printk() usage in the kernel. +-*/ +-#define SD_EMERG "<0>" /* system is unusable */ +-#define SD_ALERT "<1>" /* action must be taken immediately */ +-#define SD_CRIT "<2>" /* critical conditions */ +-#define SD_ERR "<3>" /* error conditions */ +-#define SD_WARNING "<4>" /* warning conditions */ +-#define SD_NOTICE "<5>" /* normal but significant condition */ +-#define SD_INFO "<6>" /* informational */ +-#define SD_DEBUG "<7>" /* debug-level messages */ +- +-/* The first passed file descriptor is fd 3 */ +-#define SD_LISTEN_FDS_START 3 +- +-/* +- Returns how many file descriptors have been passed, or a negative +- errno code on failure. Optionally, removes the $LISTEN_FDS and +- $LISTEN_PID file descriptors from the environment (recommended, but +- problematic in threaded environments). If r is the return value of +- this function you'll find the file descriptors passed as fds +- SD_LISTEN_FDS_START to SD_LISTEN_FDS_START+r-1. Returns a negative +- errno style error code on failure. This function call ensures that +- the FD_CLOEXEC flag is set for the passed file descriptors, to make +- sure they are not passed on to child processes. If FD_CLOEXEC shall +- not be set, the caller needs to unset it after this call for all file +- descriptors that are used. +- +- See sd_listen_fds(3) for more information. +-*/ +-int sd_listen_fds(int unset_environment); +- +-/* +- Helper call for identifying a passed file descriptor. Returns 1 if +- the file descriptor is a FIFO in the file system stored under the +- specified path, 0 otherwise. If path is NULL a path name check will +- not be done and the call only verifies if the file descriptor +- refers to a FIFO. Returns a negative errno style error code on +- failure. +- +- See sd_is_fifo(3) for more information. +-*/ +-int sd_is_fifo(int fd, const char *path); +- +-/* +- Helper call for identifying a passed file descriptor. Returns 1 if +- the file descriptor is a special character device on the file +- system stored under the specified path, 0 otherwise. +- If path is NULL a path name check will not be done and the call +- only verifies if the file descriptor refers to a special character. +- Returns a negative errno style error code on failure. +- +- See sd_is_special(3) for more information. +-*/ +-int sd_is_special(int fd, const char *path); +- +-/* +- Helper call for identifying a passed file descriptor. Returns 1 if +- the file descriptor is a socket of the specified family (AF_INET, +- ...) and type (SOCK_DGRAM, SOCK_STREAM, ...), 0 otherwise. If +- family is 0 a socket family check will not be done. If type is 0 a +- socket type check will not be done and the call only verifies if +- the file descriptor refers to a socket. If listening is > 0 it is +- verified that the socket is in listening mode. (i.e. listen() has +- been called) If listening is == 0 it is verified that the socket is +- not in listening mode. If listening is < 0 no listening mode check +- is done. Returns a negative errno style error code on failure. +- +- See sd_is_socket(3) for more information. +-*/ +-int sd_is_socket(int fd, int family, int type, int listening); +- +-/* +- Helper call for identifying a passed file descriptor. Returns 1 if +- the file descriptor is an Internet socket, of the specified family +- (either AF_INET or AF_INET6) and the specified type (SOCK_DGRAM, +- SOCK_STREAM, ...), 0 otherwise. If version is 0 a protocol version +- check is not done. If type is 0 a socket type check will not be +- done. If port is 0 a socket port check will not be done. The +- listening flag is used the same way as in sd_is_socket(). Returns a +- negative errno style error code on failure. +- +- See sd_is_socket_inet(3) for more information. +-*/ +-int sd_is_socket_inet(int fd, int family, int type, int listening, uint16_t port); +- +-/* +- Helper call for identifying a passed file descriptor. Returns 1 if +- the file descriptor is an AF_UNIX socket of the specified type +- (SOCK_DGRAM, SOCK_STREAM, ...) and path, 0 otherwise. If type is 0 +- a socket type check will not be done. If path is NULL a socket path +- check will not be done. For normal AF_UNIX sockets set length to +- 0. For abstract namespace sockets set length to the length of the +- socket name (including the initial 0 byte), and pass the full +- socket path in path (including the initial 0 byte). The listening +- flag is used the same way as in sd_is_socket(). Returns a negative +- errno style error code on failure. +- +- See sd_is_socket_unix(3) for more information. +-*/ +-int sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t length); +- +-/* +- Helper call for identifying a passed file descriptor. Returns 1 if +- the file descriptor is a POSIX Message Queue of the specified name, +- 0 otherwise. If path is NULL a message queue name check is not +- done. Returns a negative errno style error code on failure. +-*/ +-int sd_is_mq(int fd, const char *path); +- +-/* +- Informs systemd about changed daemon state. This takes a number of +- newline separated environment-style variable assignments in a +- string. The following variables are known: +- +- READY=1 Tells systemd that daemon startup is finished (only +- relevant for services of Type=notify). The passed +- argument is a boolean "1" or "0". Since there is +- little value in signaling non-readiness the only +- value daemons should send is "READY=1". +- +- STATUS=... Passes a single-line status string back to systemd +- that describes the daemon state. This is free-from +- and can be used for various purposes: general state +- feedback, fsck-like programs could pass completion +- percentages and failing programs could pass a human +- readable error message. Example: "STATUS=Completed +- 66% of file system check..." +- +- ERRNO=... If a daemon fails, the errno-style error code, +- formatted as string. Example: "ERRNO=2" for ENOENT. +- +- BUSERROR=... If a daemon fails, the D-Bus error-style error +- code. Example: "BUSERROR=org.freedesktop.DBus.Error.TimedOut" +- +- MAINPID=... The main pid of a daemon, in case systemd did not +- fork off the process itself. Example: "MAINPID=4711" +- +- WATCHDOG=1 Tells systemd to update the watchdog timestamp. +- Services using this feature should do this in +- regular intervals. A watchdog framework can use the +- timestamps to detect failed services. +- +- Daemons can choose to send additional variables. However, it is +- recommended to prefix variable names not listed above with X_. +- +- Returns a negative errno-style error code on failure. Returns > 0 +- if systemd could be notified, 0 if it couldn't possibly because +- systemd is not running. +- +- Example: When a daemon finished starting up, it could issue this +- call to notify systemd about it: +- +- sd_notify(0, "READY=1"); +- +- See sd_notifyf() for more complete examples. +- +- See sd_notify(3) for more information. +-*/ +-int sd_notify(int unset_environment, const char *state); +- +-/* +- Similar to sd_notify() but takes a format string. +- +- Example 1: A daemon could send the following after initialization: +- +- sd_notifyf(0, "READY=1\n" +- "STATUS=Processing requests...\n" +- "MAINPID=%lu", +- (unsigned long) getpid()); +- +- Example 2: A daemon could send the following shortly before +- exiting, on failure: +- +- sd_notifyf(0, "STATUS=Failed to start up: %s\n" +- "ERRNO=%i", +- strerror(errno), +- errno); +- +- See sd_notifyf(3) for more information. +-*/ +-int sd_notifyf(int unset_environment, const char *format, ...) _sd_printf_attr_(2,3); +- +-/* +- Returns > 0 if the system was booted with systemd. Returns < 0 on +- error. Returns 0 if the system was not booted with systemd. Note +- that all of the functions above handle non-systemd boots just +- fine. You should NOT protect them with a call to this function. Also +- note that this function checks whether the system, not the user +- session is controlled by systemd. However the functions above work +- for both user and system services. +- +- See sd_booted(3) for more information. +-*/ +-int sd_booted(void); +- +-#ifdef __cplusplus +-} +-#endif +- +-#endif diff --git a/SOURCES/format-security.patch b/format-security.patch similarity index 100% rename from SOURCES/format-security.patch rename to format-security.patch diff --git a/SOURCES/rtkit-controlgroup.patch b/rtkit-controlgroup.patch similarity index 100% rename from SOURCES/rtkit-controlgroup.patch rename to rtkit-controlgroup.patch diff --git a/SOURCES/rtkit-mq_getattr.patch b/rtkit-mq_getattr.patch similarity index 100% rename from SOURCES/rtkit-mq_getattr.patch rename to rtkit-mq_getattr.patch diff --git a/SPECS/rtkit.spec b/rtkit.spec similarity index 57% rename from SPECS/rtkit.spec rename to rtkit.spec index 15032ba..d30a851 100644 --- a/SPECS/rtkit.spec +++ b/rtkit.spec @@ -1,30 +1,47 @@ -%global _hardened_build 1 +## START: Set by rpmautospec +## (rpmautospec version 0.6.5) +## RPMAUTOSPEC: autorelease, autochangelog +%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: + release_number = 50; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} +## END: Set by rpmautospec Name: rtkit Version: 0.11 -Release: 19%{?dist} +# -b is needed because of https://pagure.io/fedora-infra/rpmautospec/issue/228 +# Remove if the version is ever bumped (or rpmautospec fixed). +Release: %autorelease -b17 Summary: Realtime Policy and Watchdog Daemon -Group: System Environment/Base -# The daemon itself is GPLv3+, the reference implementation for the client BSD -License: GPLv3+ and BSD +# The daemon itself is GPLv3+, the reference implementation for the client MIT +# The LICENSE file incorrectly states that the client is under BSD. +License: GPL-3.0-or-later AND MIT URL: http://git.0pointer.net/rtkit.git/ Requires: dbus Requires: polkit -Requires(post): systemd -Requires(preun): systemd -Requires(postun): systemd +BuildRequires: make +BuildRequires: systemd-devel +BuildRequires: systemd-rpm-macros BuildRequires: dbus-devel >= 1.2 BuildRequires: libcap-devel BuildRequires: polkit-devel BuildRequires: autoconf automake libtool -BuildRequires: systemd +%{?sysusers_requires_compat} Source0: http://0pointer.de/public/%{name}-%{version}.tar.xz -Patch1: rtkit-mq_getattr.patch -Patch2: 0001-SECURITY-Pass-uid-of-caller-to-polkit.patch -Patch3: rtkit-controlgroup.patch +Source1: rtkit.sysusers +Patch: rtkit-mq_getattr.patch +Patch: 0001-SECURITY-Pass-uid-of-caller-to-polkit.patch +Patch: rtkit-controlgroup.patch # Temporarily disable -Werror=format-security since it breaks the build -Patch4: format-security.patch +Patch: format-security.patch + +Patch: 0001-Fix-borked-error-check.patch +Patch: 0001-systemd-update-sd-daemon.-ch.patch +Patch: 0002-Remove-bundled-copy-of-sd-daemon.-ch.patch + +Patch: 0001-Don-t-store-debug-messages-from-rtkit-daemon.patch %description RealtimeKit is a D-Bus system service that changes the @@ -34,36 +51,21 @@ mechanism to allow real-time scheduling to be used by normal user processes. %prep -%setup -q -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 +%autosetup -p1 %build autoreconf -fvi -%configure --with-systemdsystemunitdir=/usr/lib/systemd/system -make V=1 %{?_smp_mflags} +%configure --with-systemdsystemunitdir=%{_unitdir} +%make_build ./rtkit-daemon --introspect > org.freedesktop.RealtimeKit1.xml %install %make_install install -Dm0644 org.freedesktop.RealtimeKit1.xml %{buildroot}%{_datadir}/dbus-1/interfaces/org.freedesktop.RealtimeKit1.xml +install -Dpm 0644 %{SOURCE1} %{buildroot}%{_sysusersdir}/rtkit.conf %pre -getent group rtkit >/dev/null 2>&1 || groupadd \ - -r \ - -g 172 \ - rtkit -getent passwd rtkit >/dev/null 2>&1 || useradd \ - -r -l \ - -u 172 \ - -g rtkit \ - -d /proc \ - -s /sbin/nologin \ - -c "RealtimeKit" \ - rtkit -:; +%sysusers_create_compat %{SOURCE1} %post %systemd_post rtkit-daemon.service @@ -73,7 +75,7 @@ dbus-send --system --type=method_call --dest=org.freedesktop.DBus / org.freedesk %systemd_preun rtkit-daemon.service %postun -%systemd_postun +%systemd_postun_with_restart rtkit-daemon.service %files %doc README GPL LICENSE rtkit.c rtkit.h @@ -85,10 +87,69 @@ dbus-send --system --type=method_call --dest=org.freedesktop.DBus / org.freedesk %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.RealtimeKit1.conf %{_prefix}/lib/systemd/system/rtkit-daemon.service %{_mandir}/man8/* +%{_sysusersdir}/rtkit.conf %changelog -* Thu Jan 17 2019 Michal Sekletár - 0.11-19 -- add systemd to BuildRequires (#1654656) +## START: Generated by rpmautospec +* Fri Aug 16 2024 Michal Sekletar - 0.11-66 +- Don't store debug messages from rtkit-daemon + +* Tue Aug 13 2024 Michal Sekletar - 0.11-65 +- Add gating configuration + +* Mon Jun 24 2024 Troy Dawson - 0.11-64 +- Bump release for June 2024 mass rebuild + +* Fri Jan 26 2024 Fedora Release Engineering - 0.11-63 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 22 2024 Fedora Release Engineering - 0.11-62 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Oct 02 2023 Daan De Meyer - 0.11-30 +- Provide a sysusers.d file to get user() and group() provides + (see https://fedoraproject.org/wiki/Changes/Adopting_sysusers.d_format). + +* Fri Jan 21 2022 Fedora Release Engineering - 0.11-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 0.11-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 0.11-27 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Wed Jan 27 2021 Fedora Release Engineering - 0.11-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sun Jan 24 2021 Zbigniew Jędrzejewski-Szmek - 0.11-22 +- Stop using a bundled subset of libsystemd (#1907730) + +* Sat Aug 01 2020 Fedora Release Engineering - 0.11-25 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 0.11-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Jan 30 2020 Fedora Release Engineering - 0.11-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Aug 2 2019 Zbigniew Jędrzejewski-Szmek - 0.11-22 +- Fix %%systemd_postun macro use (#1736594) + +* Fri Jul 26 2019 Fedora Release Engineering - 0.11-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Feb 02 2019 Fedora Release Engineering - 0.11-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Oct 9 2018 Zbigniew Jędrzejewski-Szmek - 0.11-20 +- Modernize a bit and fix BuildRequires (#1637496) + +* Sat Jul 14 2018 Fedora Release Engineering - 0.11-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild * Fri Feb 09 2018 Fedora Release Engineering - 0.11-18 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild @@ -186,3 +247,5 @@ dbus-send --system --type=method_call --dest=org.freedesktop.DBus / org.freedesk * Wed Jun 17 2009 Lennart Poettering - 0.2-1 - Initial packaging + +## END: Generated by rpmautospec diff --git a/rtkit.sysusers b/rtkit.sysusers new file mode 100644 index 0000000..83b292a --- /dev/null +++ b/rtkit.sysusers @@ -0,0 +1,2 @@ +#Type Name ID GECOS Home directory Shell +u rtkit 172 "RealtimeKit" / /sbin/nologin diff --git a/sources b/sources new file mode 100644 index 0000000..08ba29c --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (rtkit-0.11.tar.xz) = 4641af965dc64c0f498ae469fbee1ceb337204fa7d778fbbb41f2b5c5e88947e633c7e9ad037274fdd778c3c097a4a1dbb0b2add287d74eccbcd2d357cb2da22