From 0b384521330687755ea3df3f4c043ad7261cc2dd Mon Sep 17 00:00:00 2001 From: germ Date: Mon, 30 Oct 2023 08:01:40 -0400 Subject: [PATCH] sys-apps/accountsservice: add musl build fixes from Alpine Linux Closes: https://bugs.gentoo.org/762442 Signed-off-by: Germ Mipseb Signed-off-by: germ Closes: https://github.com/gentoo/gentoo/pull/33600 Signed-off-by: Pacho Ramos --- .../accountsservice-23.13.9.ebuild | 3 ++ .../accountsservice-23.13.9-musl-fixes.patch | 52 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 sys-apps/accountsservice/files/accountsservice-23.13.9-musl-fixes.patch diff --git a/sys-apps/accountsservice/accountsservice-23.13.9.ebuild b/sys-apps/accountsservice/accountsservice-23.13.9.ebuild index dad99e6164777..61e932e21ed98 100644 --- a/sys-apps/accountsservice/accountsservice-23.13.9.ebuild +++ b/sys-apps/accountsservice/accountsservice-23.13.9.ebuild @@ -55,6 +55,9 @@ RDEPEND="${CDEPEND} PATCHES=( "${FILESDIR}"/${PN}-22.04.62-gentoo-system-users.patch "${FILESDIR}"/${PN}-23.13.9-generate-version.patch #905770 + # From Alpine Linux + # https://gitlab.freedesktop.org/accountsservice/accountsservice/-/merge_requests/97 + "${FILESDIR}"/${PN}-23.13.9-musl-fixes.patch ) python_check_deps() { diff --git a/sys-apps/accountsservice/files/accountsservice-23.13.9-musl-fixes.patch b/sys-apps/accountsservice/files/accountsservice-23.13.9-musl-fixes.patch new file mode 100644 index 0000000000000..abb59a137bfd5 --- /dev/null +++ b/sys-apps/accountsservice/files/accountsservice-23.13.9-musl-fixes.patch @@ -0,0 +1,52 @@ +From 962a66aa12932c7899cda78c4cbda0f581947285 Mon Sep 17 00:00:00 2001 +From: germ +Date: Mon, 30 Oct 2023 06:16:16 -0400 +Subject: [PATCH 1/1] This applies two apatches to sys-apps/accountsserice + https://gitlab.alpinelinux.org/alpine/aports/-/raw/75528d8dc4206a74501799f6a6042be20b80801d/community/accountsservice/musl-fgetspent_r.patch + https://gitlab.alpinelinux.org/alpine/aports/-/raw/75528d8dc4206a74501799f6a6042be20b80801d/community/accountsservice/musl-wtmp.patch + +--- a/meson.build ++++ b/meson.build +@@ -103,8 +103,7 @@ elif cc.has_header_symbol('paths.h', '_PATH_WTMPX') + + config_h.set('PATH_WTMP', '_PATH_WTMPX') + else +- path_wtmp = '/var/log/utx.log' +- assert(run_command('test', '-e', path_wtmp, check: false).returncode() == 0, 'Do not know which filename to watch for wtmp changes') ++ path_wtmp = '/var/log/wtmp' + config_h.set_quoted('PATH_WTMP', path_wtmp) + endif + +--- a/src/daemon.c ++++ b/src/daemon.c +@@ -215,6 +215,27 @@ remove_cache_files (const gchar *user_name) + g_remove (icon_filename); + } + ++#ifndef __GLIBC__ ++/* Musl libc does not support fgetspent_r(), write own ++* wrapper ++*/ ++static int fgetspent_r(FILE *fp, struct spwd *spbuf, char *buf, size_t buflen, struct spwd **spbufp) { ++ struct spwd *shadow_entry = fgetspent(fp); ++ if(!shadow_entry) ++ return -1; ++ size_t namplen = strlen(shadow_entry->sp_namp); ++ size_t pwdplen = strlen(shadow_entry->sp_pwdp); ++ ++ if(namplen + pwdplen + 2 > buflen) ++ return -1; ++ *spbufp = memcpy(spbuf, shadow_entry, sizeof(struct spwd)); ++ spbuf->sp_namp = strncpy(buf, shadow_entry->sp_namp, namplen + 1); ++ spbuf->sp_pwdp = strncpy(buf + namplen + 1, shadow_entry->sp_pwdp, pwdplen + 1); ++ ++ return 0; ++} ++#endif ++ + static struct passwd * + entry_generator_fgetpwent (Daemon *daemon, + GHashTable *users, +-- +2.42.0 +