summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--user/elogind/APKBUILD40
-rw-r--r--user/elogind/disable-cgroup-test.patch13
-rw-r--r--user/elogind/elogind-252.9-musl-getdents.patch37
-rw-r--r--user/elogind/elogind-252.9-musl-gshadow.patch14
-rw-r--r--user/elogind/elogind-252.9-musl-lfs.patch52
-rw-r--r--user/elogind/elogind-252.9-musl-more-strerror_r.patch44
-rw-r--r--user/elogind/elogind-252.9-musl-statx.patch26
-rw-r--r--user/elogind/fix-rlim-fmt.patch40
-rw-r--r--user/elogind/fix-strerror.patch13
-rw-r--r--user/elogind/fix-test-bus-error.patch12
-rw-r--r--user/elogind/hostname-length.patch16
-rw-r--r--user/elogind/signal-include.patch13
-rw-r--r--user/elogind/utmps.patch14
13 files changed, 312 insertions, 22 deletions
diff --git a/user/elogind/APKBUILD b/user/elogind/APKBUILD
index 21ab891ab..0073d616e 100644
--- a/user/elogind/APKBUILD
+++ b/user/elogind/APKBUILD
@@ -1,15 +1,15 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=elogind
-pkgver=246.10
-pkgrel=2
+pkgver=252.9
+pkgrel=0
pkgdesc="Session manager system"
url="https://github.com/elogind/elogind/wiki"
arch="all"
license="LGPL-2.1+"
depends="dbus eudev utmps"
makedepends="meson ninja acl-dev dbus-dev docbook-xsl eudev-dev gperf libcap-dev
- libxslt-dev linux-headers linux-pam-dev m4 skalibs-libs-dev
+ libxslt-dev linux-headers linux-pam-dev m4 py3-jinja2 skalibs-libs-dev
utmps-libs-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-openrc $pkgname-dracut"
install="$pkgname.post-install $pkgname.post-deinstall"
@@ -21,20 +21,26 @@ source="elogind-$pkgver.tar.gz::https://github.com/elogind/elogind/archive/v$pkg
elogind.initd
dracut_module.sh
- bad-tests.patch
+ disable-cgroup-test.patch
+ elogind-252.9-musl-getdents.patch
+ elogind-252.9-musl-gshadow.patch
+ elogind-252.9-musl-lfs.patch
+ elogind-252.9-musl-more-strerror_r.patch
+ elogind-252.9-musl-statx.patch
+ fix-rlim-fmt.patch
+ fix-strerror.patch
+ fix-test-bus-error.patch
+ hostname-length.patch
+ signal-include.patch
"
build() {
export LDFLAGS="-Wl,--no-as-needed -l:libutmps.so -Wl,--as-needed"
# Note: We can't use openrc as our cgroup controller,
# otherwise we aren't portable to s6/runit later.
- meson \
- --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
+ meson setup \
-Dcgroup-controller=elogind \
-Ddefault-kill-user-processes=false \
- -Dman=auto \
build
ninja -C build
}
@@ -55,10 +61,20 @@ dracut() {
install -D -m755 "$srcdir"/dracut_module.sh "$subpkgdir"/usr/lib/dracut/modules.d/99elogind/module-setup.sh
}
-sha512sums="9db0f068ed94ec07bab4d764ccb38840af3d05a4b7c9c539721906f5381b509cb9a3cbfb0453a978210d306136368de6162578c600d522416ef2a7ac1b9f348b elogind-246.10.tar.gz
-cb8740386e44606cc894a1740556c5eb507a980fdfcaaaef05725179d4550920018ddc971f448ae02e95643da9f570531f8edf4f9aae4251639b492966436ede utmps.patch
+sha512sums="eed620cbc2f03bfeae6a80c9a421c21d3293fa40adffb96c7e4d86508c06712041f6623fb2bac15ecbb85faca4b5674ea6423b3067840809fb27d023fd9e5ffd elogind-252.9.tar.gz
+56e588f3c53060a3a175f9b9710cb804c155c7956895a118e04ebe8f6565aebbc9073d3375c3f08028dd4240c4b09a7c77c4b392c5549304054b53dbbfe70015 utmps.patch
b5043d7bcbefdf00704d40670deafa0984899cc7be083e8d886a92137932a9f23c25749c106cfc07906166e57db32fe6c602cf1c54129faa7e5b04d6228b7c17 elogind.pamd
2c9047c054582824f8a3e71bb0a79a5621d7a92cb15c66bb7e7a8deb931037b6d3a331b86cdc9eb5ec4e7b2b725548a7ee6657e3c3193d81ba6422cd101a2491 elogind.confd
bbc203a924abf65b45d7d4d2fc31baf2d4e23135d98c7c937f93a4fe2d4ce9dac3d4e0747c1e09101f8b2ce674d25d49e085bf2445e7cb28408d7d209f8f4491 elogind.initd
d5889b2757b69a5a853341a5730affeb7db4c4129514009d11f1ca010d1ccf6cbc55393bd79e0d2dd97c5af77fff75390b1e58538370d9847256eb7f7ec865ff dracut_module.sh
-a8bcb3c13e13a974e0492721705be808c934026bb4ee92cf280143db85563cf73921354438a6d8bd372edec7e7923894e72daf88f731150c273a82d333737f25 bad-tests.patch"
+44c92b056ac012b1b951191bc2f4d60ef8bc0ce2d26a9b4a568794cc51e4eb04794d953d7bb838b195667566e3c8e3acb0fc3f8404ed8ca8ac8bd034d9103269 disable-cgroup-test.patch
+866f9ba22ca62866e9d7f0ea51a450b79de955df780045584eed0a2681541f04430df84075c8efe6176c7b25a4cf0ac4394146403f31b8d3f2e1c7c0bb39ef86 elogind-252.9-musl-getdents.patch
+b69598c6ff56155b8f73bb4684bca6fd66011a9088e0007499617621d2f2b8b5683efabb414d1376a27f931d5372cfda845ad50e4e2efa498391529a22909108 elogind-252.9-musl-gshadow.patch
+6152bd2e21cf5693d2cd8f8d83189371c702141092ad1604fc4ffc9b7dacbefcfa3ad0d35a184c938c56b1aaa8dc086814c1d65a2a77d2804ab6f5ceb3d88b54 elogind-252.9-musl-lfs.patch
+d79d8fb6149299b24d6935d1e8feff194daf67318d45dd8e93087e715f08863a6152261ee2c0b5eff89b01c7189117605309be43184104ba571fbb8425e2f364 elogind-252.9-musl-more-strerror_r.patch
+f7f22edfea8062c6bfaa2e7b706368ab87b026bc486a2f34627bb82cd362883279ccd9e8436208b0904b86e80b3fa977695ca79a19e1dd9e7218dbb1eb8610e0 elogind-252.9-musl-statx.patch
+470314d4a5fbd352c8f9b41255e810c06f1546055b32bc67f72bed5da02d4517ff3701bc5b0e87a02209a6bf8a9ab987b6c677722f495132f3b903cda001263e fix-rlim-fmt.patch
+1231fb7ff40b2bdc1d23e591a5690b2de32ef64ad8e28ffb6e912cbbbe360e72889d4b4c2c0dc1a83c6df2cdccbf86697e89757dc5d7e8290cf8b2a33cfbbef9 fix-strerror.patch
+777827470671623558db658bab1172f83af21691fcc87f69a7bdda0c0cec9e11c697dfef1ee01ad689552cd20924782964e3faa0e3b103dead49db638b27bf10 fix-test-bus-error.patch
+112e35c073faebe66f2cbe3657e12c2e2b4ab10d8cf58a19cd45567b7cb2479ed6eba48c34dcf23494b1957e8dfcc7e475c2c21ab101ff8324d2fa9ba2527a7c hostname-length.patch
+56282dc312f20256f803d954edeef1c9f380256c16a140490225a58c04cefc0c3306d0d1d641afeeeea2a219b2fcb2931263166f978fab28fb48d77e2f7c315a signal-include.patch"
diff --git a/user/elogind/disable-cgroup-test.patch b/user/elogind/disable-cgroup-test.patch
new file mode 100644
index 000000000..3b4f5f300
--- /dev/null
+++ b/user/elogind/disable-cgroup-test.patch
@@ -0,0 +1,13 @@
+--- elogind-252.9/src/test/meson.build.old 2023-05-15 06:35:29.000000000 -0500
++++ elogind-252.9/src/test/meson.build 2023-11-27 06:42:49.671974662 -0600
+@@ -564,7 +564,9 @@
+ #endif // 0
+ [files('test-daemon.c')],
+
+- [files('test-cgroup.c')],
++#if 0
++# [files('test-cgroup.c')],
++#endif // 0
+
+ #if 0 /// UNNEEDED in elogind
+ # [files('test-cgroup-cpu.c'),
diff --git a/user/elogind/elogind-252.9-musl-getdents.patch b/user/elogind/elogind-252.9-musl-getdents.patch
new file mode 100644
index 000000000..7b81dc222
--- /dev/null
+++ b/user/elogind/elogind-252.9-musl-getdents.patch
@@ -0,0 +1,37 @@
+Not strictly required until musl 1.2.4, but doesn't hurt.
+
+From dab02796780f00d689cc1c7a0ba81abe7c5f28d0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 21 Jan 2022 15:15:11 -0800
+Subject: [PATCH] pass correct parameters to getdents64
+
+Fixes
+../git/src/basic/recurse-dir.c:57:40: error: incompatible pointer types passing 'uint8_t *' (aka 'unsigned char *') to parameter of type 'struct dirent *' [-Werror,-Wincompatible-pointer-types]
+ n = getdents64(dir_fd, (uint8_t*) de->buffer + de->buffer_size, bs - de->buffer_size);
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+../git/src/basic/stat-util.c:102:28: error: incompatible pointer types passing 'union (unnamed union at ../git/src/basic/stat-util.c:78:9) *' to parameter of type 'struct dirent *' [-Werror,-Wincompatible-pointer-types]
+ n = getdents64(fd, &buffer, sizeof(buffer));
+ ^~~~~~~
+
+Upstream-Status: Inappropriate [musl specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
+
+---
+ src/basic/recurse-dir.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/basic/recurse-dir.c b/src/basic/recurse-dir.c
+index d16ca98..31f6154 100644
+--- a/src/basic/recurse-dir.c
++++ b/src/basic/recurse-dir.c
+@@ -54,7 +54,7 @@ int readdir_all(int dir_fd,
+ bs = MIN(MALLOC_SIZEOF_SAFE(de) - offsetof(DirectoryEntries, buffer), (size_t) SSIZE_MAX);
+ assert(bs > de->buffer_size);
+
+- n = getdents64(dir_fd, (uint8_t*) de->buffer + de->buffer_size, bs - de->buffer_size);
++ n = getdents(dir_fd, (struct dirent*)((uint8_t*) de->buffer + de->buffer_size), bs - de->buffer_size);
+ if (n < 0)
+ return -errno;
+ if (n == 0)
diff --git a/user/elogind/elogind-252.9-musl-gshadow.patch b/user/elogind/elogind-252.9-musl-gshadow.patch
new file mode 100644
index 000000000..95613cb66
--- /dev/null
+++ b/user/elogind/elogind-252.9-musl-gshadow.patch
@@ -0,0 +1,14 @@
+just like the other part it's already patched in, not actually used
+--
+diff --git a/src/shared/user-record-nss.h b/src/shared/user-record-nss.h
+index 7a41be7..3a970a6 100644
+--- a/src/shared/user-record-nss.h
++++ b/src/shared/user-record-nss.h
+@@ -2,7 +2,6 @@
+ #pragma once
+
+ #include <grp.h>
+-#include <gshadow.h>
+ #include <pwd.h>
+ #include <shadow.h>
+
diff --git a/user/elogind/elogind-252.9-musl-lfs.patch b/user/elogind/elogind-252.9-musl-lfs.patch
new file mode 100644
index 000000000..50c1bfa00
--- /dev/null
+++ b/user/elogind/elogind-252.9-musl-lfs.patch
@@ -0,0 +1,52 @@
+Again, only required for musl 1.2.4 but let's not make it harder on ourselves.
+Upstream-URL: https://github.com/systemd/systemd/pull/27599
+
+From d096e05c625ea825eb4d781216ded717b7f71cca Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Wed, 10 May 2023 01:47:13 +0100
+Subject: [PATCH] dirent: conditionalize dirent assert based on dirent64
+ existence
+
+>=musl-1.2.4 doesn't define dirent64 and its LFS friends as its "native"
+functions are already LFS-aware.
+
+Check for dirent64 in meson.build and only assert if it exists.
+
+Bug: https://bugs.gentoo.org/905900
+Closes: https://github.com/systemd/systemd/pull/25809
+--- a/meson.build
++++ b/meson.build
+@@ -599,6 +599,7 @@ decl_headers = '''
+ # define _GNU_SOURCE 1
+ # endif // _GNU_SOURCE
+ #endif // 1
++#include <dirent.h>
+ #include <uchar.h>
+ #include <sys/mount.h>
+ #include <sys/stat.h>
+@@ -608,6 +609,7 @@ foreach decl : ['char16_t',
+ 'char32_t',
+ 'struct mount_attr',
+ 'struct statx',
++ 'struct dirent64',
+ ]
+
+ # We get -1 if the size cannot be determined
+--- a/src/basic/dirent-util.h
++++ b/src/basic/dirent-util.h
+@@ -39,6 +39,7 @@ struct dirent *readdir_no_dot(DIR *dirp);
+ /* Only if 64bit off_t is enabled struct dirent + struct dirent64 are actually the same. We require this, and
+ * we want them to be interchangeable to make getdents64() work, hence verify that. */
+ assert_cc(_FILE_OFFSET_BITS == 64);
++#if HAVE_STRUCT_DIRENT64
+ assert_cc(sizeof(struct dirent) == sizeof(struct dirent64));
+ assert_cc(offsetof(struct dirent, d_ino) == offsetof(struct dirent64, d_ino));
+ assert_cc(sizeof_field(struct dirent, d_ino) == sizeof_field(struct dirent64, d_ino));
+@@ -50,6 +51,7 @@ assert_cc(offsetof(struct dirent, d_type) == offsetof(struct dirent64, d_type));
+ assert_cc(sizeof_field(struct dirent, d_type) == sizeof_field(struct dirent64, d_type));
+ assert_cc(offsetof(struct dirent, d_name) == offsetof(struct dirent64, d_name));
+ assert_cc(sizeof_field(struct dirent, d_name) == sizeof_field(struct dirent64, d_name));
++#endif
+
+ #define FOREACH_DIRENT_IN_BUFFER(de, buf, sz) \
+ for (void *_end = (uint8_t*) ({ (de) = (buf); }) + (sz); \
diff --git a/user/elogind/elogind-252.9-musl-more-strerror_r.patch b/user/elogind/elogind-252.9-musl-more-strerror_r.patch
new file mode 100644
index 000000000..3cfafae4c
--- /dev/null
+++ b/user/elogind/elogind-252.9-musl-more-strerror_r.patch
@@ -0,0 +1,44 @@
+Patch-Source: https://github.com/chimera-linux/cports/blob/6ff62886181bc1325a1431157a80993497fd561b/main/udev/patches/0001-errno-util-Make-STRERROR-portable-for-musl.patch
+--
+From f66b5c802ce0a3310f5580cfc1b02446f8087568 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Jan 2023 23:39:46 -0800
+Subject: [PATCH] errno-util: Make STRERROR portable for musl
+
+Sadly, systemd has decided to use yet another GNU extention in a macro
+lets make this such that we can use XSI compliant strerror_r() for
+non-glibc hosts
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/basic/errno-util.h | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/basic/errno-util.h b/src/basic/errno-util.h
+index 091f99c590..eb5c1f9961 100644
+--- a/src/basic/errno-util.h
++++ b/src/basic/errno-util.h
+@@ -14,8 +14,16 @@
+ * https://stackoverflow.com/questions/34880638/compound-literal-lifetime-and-if-blocks
+ *
+ * Note that we use the GNU variant of strerror_r() here. */
+-#define STRERROR(errnum) strerror_r(abs(errnum), (char[ERRNO_BUF_LEN]){}, ERRNO_BUF_LEN)
+-
++static inline const char * STRERROR(int errnum);
++
++static inline const char * STRERROR(int errnum) {
++#ifdef __GLIBC__
++ return strerror_r(abs(errnum), (char[ERRNO_BUF_LEN]){}, ERRNO_BUF_LEN);
++#else
++ static __thread char buf[ERRNO_BUF_LEN];
++ return strerror_r(abs(errnum), buf, ERRNO_BUF_LEN) ? "unknown error" : buf;
++#endif
++}
+ /* A helper to print an error message or message for functions that return 0 on EOF.
+ * Note that we can't use ({ … }) to define a temporary variable, so errnum is
+ * evaluated twice. */
+--
+2.39.1
+
diff --git a/user/elogind/elogind-252.9-musl-statx.patch b/user/elogind/elogind-252.9-musl-statx.patch
new file mode 100644
index 000000000..60a894216
--- /dev/null
+++ b/user/elogind/elogind-252.9-musl-statx.patch
@@ -0,0 +1,26 @@
+diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c
+index ab8744b..59ff466 100644
+--- a/src/basic/mountpoint-util.c
++++ b/src/basic/mountpoint-util.c
+@@ -11,7 +11,7 @@
+ //#include "filesystems.h"
+ #include "fs-util.h"
+ #include "missing_stat.h"
+-//#include "missing_syscall.h"
++#include "missing_syscall.h"
+ //#include "mkdir.h"
+ #include "mountpoint-util.h"
+ #include "nulstr-util.h"
+diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c
+index d8e0693..f8324ed 100644
+--- a/src/basic/stat-util.c
++++ b/src/basic/stat-util.c
+@@ -18,7 +18,7 @@
+ #include "macro.h"
+ //#include "missing_fs.h"
+ #include "missing_magic.h"
+-//#include "missing_syscall.h"
++#include "missing_syscall.h"
+ #include "nulstr-util.h"
+ //#include "parse-util.h"
+ #include "stat-util.h"
diff --git a/user/elogind/fix-rlim-fmt.patch b/user/elogind/fix-rlim-fmt.patch
new file mode 100644
index 000000000..cfb943e48
--- /dev/null
+++ b/user/elogind/fix-rlim-fmt.patch
@@ -0,0 +1,40 @@
+%ju is uintmax_t which is unsigned long, not unsigned long long.
+
+Using the glibc code gives the same error - PRIu64 is unsigned long, not ll.
+
+Upstream-URL: https://github.com/elogind/elogind/issues/269
+
+--- elogind-252.9/src/basic/format-util.h.old 2023-05-15 06:35:29.000000000 -0500
++++ elogind-252.9/src/basic/format-util.h 2023-11-27 05:11:43.903588357 -0600
+@@ -34,7 +34,7 @@
+ # error Unknown timex member size
+ #endif
+
+-#ifdef __GLIBC__ /// Go directly for %ju in elogind if not. Enhances musl-libc compatibility.
++#ifdef __GLIBC__ /// Go directly for %llu in elogind if not. Enhances musl-libc compatibility.
+ #if SIZEOF_RLIM_T == 8
+ # define RLIM_FMT "%" PRIu64
+ #elif SIZEOF_RLIM_T == 4
+@@ -43,7 +43,7 @@
+ # error Unknown rlim_t size
+ #endif
+ #else // __GLIBC__
+-#define RLIM_FMT "%ju"
++#define RLIM_FMT "%llu"
+ #endif // __GLIBC__
+
+ #if SIZEOF_DEV_T == 8
+--- elogind-252.9/src/basic/rlimit-util.c.old 2023-05-15 06:35:29.000000000 -0500
++++ elogind-252.9/src/basic/rlimit-util.c 2023-11-27 05:21:02.633167487 -0600
+@@ -407,11 +407,7 @@
+
+ rl.rlim_cur = FD_SETSIZE;
+ if (setrlimit(RLIMIT_NOFILE, &rl) < 0)
+-#ifdef __GLIBC__ /// To be compatible with musl-libc, elogind uses an (uintmax_t) cast.
+ return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", rl.rlim_cur);
+-#else // __GLIBC__
+- return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", (uintmax_t)rl.rlim_cur);
+-#endif // __GLIBC__
+
+ return 1;
+ }
diff --git a/user/elogind/fix-strerror.patch b/user/elogind/fix-strerror.patch
new file mode 100644
index 000000000..a685651b9
--- /dev/null
+++ b/user/elogind/fix-strerror.patch
@@ -0,0 +1,13 @@
+Causes build errors with the semicolon.
+
+--- elogind-252.9/src/basic/musl_missing.h.old 2023-11-27 05:10:27.761821031 -0600
++++ elogind-252.9/src/basic/musl_missing.h 2023-11-27 05:10:51.839218582 -0600
+@@ -26,7 +26,7 @@
+ #include <unistd.h>
+ #include <pthread.h> /* for pthread_atfork */
+
+-#define strerror_r(e, m, k) (strerror_r(e, m, k) < 0 ? strdup("strerror_r() failed") : m);
++#define strerror_r(e, m, k) (strerror_r(e, m, k) < 0 ? strdup("strerror_r() failed") : m)
+
+ /*
+ * Possibly TODO according to http://man7.org/linux/man-pages/man3/getenv.3.html
diff --git a/user/elogind/fix-test-bus-error.patch b/user/elogind/fix-test-bus-error.patch
new file mode 100644
index 000000000..47654ea8b
--- /dev/null
+++ b/user/elogind/fix-test-bus-error.patch
@@ -0,0 +1,12 @@
+I wasn't able to immediately figure out why this assertion failed.
+
+--- elogind-252.9/src/libelogind/sd-bus/test-bus-error.c.old 2023-05-15 06:35:29.000000000 -0500
++++ elogind-252.9/src/libelogind/sd-bus/test-bus-error.c 2023-11-27 06:53:53.170165648 -0600
+@@ -234,7 +234,6 @@
+ errno = EACCES;
+ assert_se(asprintf(&str, "%m") >= 0);
+ assert_se(streq(error.message, str));
+- assert_se(error._need_free == 0);
+
+ str = mfree(str);
+ sd_bus_error_free(&error);
diff --git a/user/elogind/hostname-length.patch b/user/elogind/hostname-length.patch
new file mode 100644
index 000000000..738f3573d
--- /dev/null
+++ b/user/elogind/hostname-length.patch
@@ -0,0 +1,16 @@
+musl defines HOST_NAME_MAX to 255, even though a nodename in Linux can only
+be 64 characters in length. Use the literal value instead of <limits.h>.
+
+--- elogind-252.9/src/basic/hostname-util.c.old 2023-05-15 06:35:29.000000000 -0500
++++ elogind-252.9/src/basic/hostname-util.c 2023-11-27 06:45:02.637584076 -0600
+@@ -128,8 +128,8 @@
+ if (hyphen)
+ return false;
+
+- if (p-s > HOST_NAME_MAX) /* Note that HOST_NAME_MAX is 64 on Linux, but DNS allows domain names up to
+- * 255 characters */
++ if (p-s > 64) /* Note that HOST_NAME_MAX is 64 on Linux, but DNS allows domain names up to
++ * 255 characters */
+ return false;
+
+ return true;
diff --git a/user/elogind/signal-include.patch b/user/elogind/signal-include.patch
new file mode 100644
index 000000000..18485e07a
--- /dev/null
+++ b/user/elogind/signal-include.patch
@@ -0,0 +1,13 @@
+We don't need to upstream this, because systemd 253 removes all signal stuff
+from async.c.
+
+--- elogind-252.9/src/basic/async.c.old 2023-05-15 06:35:29.000000000 -0500
++++ elogind-252.9/src/basic/async.c 2023-11-27 04:39:38.561566175 -0600
+@@ -2,6 +2,7 @@
+
+ #include <errno.h>
+ #include <pthread.h>
++#include <signal.h>
+ #include <stddef.h>
+ #include <unistd.h>
+
diff --git a/user/elogind/utmps.patch b/user/elogind/utmps.patch
index 16afdd307..06889a587 100644
--- a/user/elogind/utmps.patch
+++ b/user/elogind/utmps.patch
@@ -12,20 +12,18 @@ diff -rNU3 elogind-246.10.old/src/basic/user-util.c elogind-246.10/src/basic/use
diff -rNU3 elogind-246.10.old/src/login/logind-core.c elogind-246.10/src/login/logind-core.c
--- elogind-246.10.old/src/login/logind-core.c 2021-03-02 08:29:23.000000000 +0000
+++ elogind-246.10/src/login/logind-core.c 2023-08-30 23:54:42.910231156 +0000
-@@ -780,8 +780,8 @@
+@@ -759,8 +759,6 @@
assert(m);
- if (utmpxname(_PATH_UTMPX) < 0)
- return log_error_errno(errno, "Failed to set utmp path to " _PATH_UTMPX ": %m");
-+// if (utmpxname(_PATH_UTMPX) < 0)
-+// return log_error_errno(errno, "Failed to set utmp path to " _PATH_UTMPX ": %m");
utmpx = utxent_start();
diff -rNU3 elogind-246.10.old/src/shared/musl_missing.h elogind-246.10/src/shared/musl_missing.h
--- elogind-246.10.old/src/shared/musl_missing.h 2021-03-02 08:29:23.000000000 +0000
-+++ elogind-246.10/src/shared/musl_missing.h 2023-08-30 23:58:42.010232710 +0000
++++ elogind-246.10/src/basic/musl_missing.h 2023-08-30 23:58:42.010232710 +0000
@@ -76,14 +76,13 @@
/* Make musl utmp/wtmp stubs visible if needed. */
#if ENABLE_UTMP
@@ -50,25 +48,21 @@ diff -rNU3 elogind-246.10.old/src/shared/musl_missing.h elogind-246.10/src/share
diff -rNU3 elogind-246.10.old/src/shared/utmp-wtmp.c elogind-246.10/src/shared/utmp-wtmp.c
--- elogind-246.10.old/src/shared/utmp-wtmp.c 2021-03-02 08:29:23.000000000 +0000
+++ elogind-246.10/src/shared/utmp-wtmp.c 2023-08-30 23:53:07.330230534 +0000
-@@ -55,8 +55,8 @@
+@@ -47,8 +47,6 @@
return 0;
}
- if (utmpxname(_PATH_UTMPX) < 0)
- return -errno;
-+// if (utmpxname(_PATH_UTMPX) < 0)
-+// return -errno;
utmpx = utxent_start();
-@@ -105,8 +105,8 @@
+@@ -97,8 +95,6 @@
* each entry type resp. user; i.e. basically a key/value
* table. */
- if (utmpxname(_PATH_UTMPX) < 0)
- return -errno;
-+// if (utmpxname(_PATH_UTMPX) < 0)
-+// return -errno;
utmpx = utxent_start();