accountsservice: upgrade 23.13.9 -> 26.27.3

Needed by gnome-control-center 51, which requires >= 26.27.3.

Upstream no longer publishes tarballs on freedesktop.org, so fetch the
release tag from gitlab.freedesktop.org instead.

All three patches are obsolete: the C99 fixes and the backported commit
00b6e12a are part of the release, and the musl fgetspent_r wrapper has
been replaced by upstream's own fgetspent_r_compat in src/daemon.c.

AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
Markus Volk
2026-09-21 08:13:53 -07:00
committed by Khem Raj
parent e007974cbd
commit 8f3e948a1b
4 changed files with 2 additions and 223 deletions
@@ -1,47 +0,0 @@
From 87c5c711f6f828053abd754628a0067696cfd54d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
Date: Mon, 9 Dec 2019 09:36:12 +0100
Subject: [PATCH] musl: add missing fgetspent_r
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
Stolen from void-linux
Upstream-Status: Inappropriate [musl-specific]
---
src/daemon.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/src/daemon.c b/src/daemon.c
index aa9d050..cc53eae 100644
--- a/src/daemon.c
+++ b/src/daemon.c
@@ -215,6 +215,28 @@ 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,
@@ -1,115 +0,0 @@
From 747d781c1ccf3b8112ec6a098f23f26ccadc5880 Mon Sep 17 00:00:00 2001
From: oreo639 <oreo6391@gmail.com>
Date: Sun, 9 Feb 2025 23:24:08 -0800
Subject: [PATCH] build: Disable tests when cross compiling and allow
specifying path_wtmp
Upstream-Status: Backport [https://gitlab.freedesktop.org/accountsservice/accountsservice/-/commit/00b6e12ad4044d33cc54c71c75773c5a653dad09]
Signed-off-by: Markus Volk <f_l_k@t-online.de>
---
meson.build | 64 ++++++++++++++++++++++++++---------------------
meson_options.txt | 2 ++
2 files changed, 38 insertions(+), 28 deletions(-)
diff --git a/meson.build b/meson.build
index 4a509e7..2a56627 100644
--- a/meson.build
+++ b/meson.build
@@ -77,34 +77,40 @@ foreach func: check_functions
config_h.set('HAVE_' + func.underscorify().to_upper(), cc.has_function(func))
endforeach
-if cc.has_header_symbol('utmpx.h', 'WTMPX_FILENAME', prefix: '#define _GNU_SOURCE')
- code = '''#define _GNU_SOURCE
- #include <stdio.h>
- #include <utmpx.h>
- int main (int argc, char **argv) {
- printf ("%s\n", WTMPX_FILENAME);
- return 0;
- }
- '''
- result = cc.run(code, name : 'value of WTMPX_FILENAME')
- path_wtmp = result.stdout().strip()
-
- config_h.set('PATH_WTMP', 'WTMPX_FILENAME')
-elif cc.has_header_symbol('paths.h', '_PATH_WTMPX')
- code = '''#include <paths.h>
- #include <stdio.h>
- int main (int argc, char **argv) {
- printf ("%s\n", _PATH_WTMPX);
- return 0;
- }
- '''
- result = cc.run(code, name : 'value of _PATH_WTMPX')
- path_wtmp = result.stdout().strip()
-
- config_h.set('PATH_WTMP', '_PATH_WTMPX')
+path_wtmp = get_option('wtmpfile')
+if path_wtmp == ''
+ if cc.has_header_symbol('utmpx.h', 'WTMPX_FILENAME', prefix: '#define _GNU_SOURCE') and meson.can_run_host_binaries()
+ code = '''#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <utmpx.h>
+ int main (int argc, char **argv) {
+ printf ("%s\n", WTMPX_FILENAME);
+ return 0;
+ }
+ '''
+ result = cc.run(code, name : 'value of WTMPX_FILENAME')
+ path_wtmp = result.stdout().strip()
+
+ config_h.set('PATH_WTMP', 'WTMPX_FILENAME')
+ elif cc.has_header_symbol('paths.h', '_PATH_WTMPX') and meson.can_run_host_binaries()
+ code = '''#include <paths.h>
+ #include <stdio.h>
+ int main (int argc, char **argv) {
+ printf ("%s\n", _PATH_WTMPX);
+ return 0;
+ }
+ '''
+ result = cc.run(code, name : 'value of _PATH_WTMPX')
+ path_wtmp = result.stdout().strip()
+
+ config_h.set('PATH_WTMP', '_PATH_WTMPX')
+ else
+ assert(not meson.is_cross_build(), 'Cannot determine wtmp for this cross compile, please specify -Dwtmpfile=')
+ 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')
+ config_h.set_quoted('PATH_WTMP', path_wtmp)
+ endif
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')
config_h.set_quoted('PATH_WTMP', path_wtmp)
endif
@@ -232,7 +238,9 @@ if get_option('gtk_doc')
subdir('doc/libaccountsservice')
endif
-subdir('tests')
+if get_option('tests') and meson.can_run_host_binaries()
+ subdir('tests')
+endif
configure_file(
output: 'config.h',
diff --git a/meson_options.txt b/meson_options.txt
index b34a0fa..e25c61e 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,6 +1,7 @@
option('systemdsystemunitdir', type: 'string', value: '', description: 'custom directory for systemd system units')
option('gdmconffile', type: 'string', value: '/etc/gdm/custom.conf', description: 'GDM configuration file')
option('lightdmconffile', type: 'string', value: '/etc/lightdm/lightdm.conf', description: 'LightDM configuration file')
+option('wtmpfile', type: 'string', value: '', description: 'override filepath of wtmp file')
option('admin_group', type: 'string', value: '', description: 'Set group for administrative accounts')
option('extra_admin_groups', type: 'array', value: [], description: 'Comma-separated list of extra groups that administrator users are part of')
@@ -13,3 +14,4 @@ option('vapi', type: 'boolean', value: true, description : 'Enable Vala bindings
option('docbook', type: 'boolean', value: false, description: 'build documentation (requires xmlto)')
option('gtk_doc', type: 'boolean', value: false, description: 'use gtk-doc to build documentation')
+option('tests', type: 'boolean', value: true, description: 'run accountservice tests if possible')
@@ -1,51 +0,0 @@
From 97ff4512ea17600d390d67b59e6d0058d1b0b7d5 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Tue, 11 Apr 2023 10:09:07 -0400
Subject: [PATCH] mocklibc: Fix compiler warning
https://bugs.gentoo.org/930715
https://gitlab.freedesktop.org/accountsservice/accountsservice/-/commit/da65bee12d9118fe1a49c8718d428fe61d232339
print_indent is defined in one file and used in another without a
forward declaration. That leads to a compiler warning/error.
This commit fixes that.
Upstream-Status: Backport [https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-apps/accountsservice/files/accountsservice-23.13.9-c99-fixes.patch]
Signed-off-by: Markus Volk <f_l_k@t-online.de>
---
subprojects/mocklibc.wrap | 2 ++
subprojects/packagefiles/mocklibc-print-indent.diff | 13 +++++++++++++
2 files changed, 15 insertions(+)
create mode 100644 subprojects/packagefiles/mocklibc-print-indent.diff
diff --git a/subprojects/mocklibc.wrap b/subprojects/mocklibc.wrap
index af82298..539ee83 100644
--- a/subprojects/mocklibc.wrap
+++ b/subprojects/mocklibc.wrap
@@ -8,3 +8,5 @@ source_hash = b2236a6af1028414783e9734a46ea051916ec226479d6a55a3bb823bff68f120
patch_url = https://wrapdb.mesonbuild.com/v1/projects/mocklibc/1.0/2/get_zip
patch_filename = mocklibc-1.0-2-wrap.zip
patch_hash = 0280f96a2eeb3c023e5acf4e00cef03d362868218d4a85347ea45137c0ef6c56
+
+diff_files = mocklibc-print-indent.diff
diff --git a/subprojects/packagefiles/mocklibc-print-indent.diff b/subprojects/packagefiles/mocklibc-print-indent.diff
new file mode 100644
index 0000000..4aaed40
--- /dev/null
+++ b/subprojects/packagefiles/mocklibc-print-indent.diff
@@ -0,0 +1,13 @@
+diff -up mocklibc-1.0/src/netgroup-debug.c.print-indent mocklibc-1.0/src/netgroup-debug.c
+--- mocklibc-1.0/src/netgroup-debug.c.print-indent 2023-04-11 10:20:53.717381559 -0400
++++ mocklibc-1.0/src/netgroup-debug.c 2023-04-11 10:21:02.296270333 -0400
+@@ -21,6 +21,9 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+
++void print_indent (FILE *stream,
++ unsigned int indent);
++
+ void netgroup_debug_print_entry(struct entry *entry, FILE *stream, unsigned int indent) {
+ print_indent(stream, indent);
+
@@ -15,19 +15,11 @@ inherit meson gobject-introspection gtk-doc features_check systemd vala pkgconfi
REQUIRED_DISTRO_FEATURES = "polkit"
SRC_URI = " \
https://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \
file://accountsservice-23.13.9-c99-fixes.patch \
file://00b6e12ad4044d33cc54c71c75773c5a653dad09.patch \
"
SRC_URI:append:libc-musl = " \
file://0002-musl-add-missing-fgetspent_r.patch \
"
SRC_URI = "git://gitlab.freedesktop.org/${BPN}/${BPN}.git;protocol=https;branch=main;tag=${PV}"
SRCREV = "4e254d9624cc48224c9920b9509df0b144f7be0c"
EXTRA_OEMESON:append:libc-musl = " -Dwtmpfile=/var/log/wtmp -Dtests=false"
SRC_URI[sha256sum] = "adda4cdeae24fa0992e7df3ffff9effa7090be3ac233a3edfdf69d5a9c9b924f"
UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/accountsservice/accountsservice/-/tags"
UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)"