1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
3 NAMEBASE= accountsservice
7 SDESC[standard]= D-Bus service for user account query/manipulation
8 HOMEPAGE= https://www.freedesktop.org/wiki/Software/AccountsService/
9 CONTACT= Michael_Reim[kraileth@elderlinux.org]
12 SITES[main]= https://www.freedesktop.org/software/accountsservice/
13 DISTFILE[1]= accountsservice-0.6.55.tar.xz:main
15 SPKGS[standard]= complete
20 OPTIONS_AVAILABLE= none
21 OPTIONS_STANDARD= none
23 BUILD_DEPENDS= xmlto:single:standard
24 BUILDRUN_DEPENDS= polkit:primary:standard
26 USES= cpe gettext-runtime gettext-tools:build meson
28 GNOME_COMPONENTS= glib introspection
30 LICENSE= GPLv3+:primary
31 LICENSE_TERMS= primary:{{WRKDIR}}/TERMS
32 LICENSE_FILE= GPLv3+:{{WRKSRC}}/COPYING
33 LICENSE_AWK= TERMS:"^$$"
34 LICENSE_SOURCE= TERMS:{{WRKSRC}}/src/accounts-daemon.h
37 CPE_VENDOR= freedesktop
38 FPC_EQUIVALENT= sysutils/accountsservice
39 MESON_ARGS= -Dsystemd=false
40 -Dsystemdsystemunitdir=no
46 [FILE:235:descriptions/desc.primary]
47 AccountsService is a D-Bus service for accessing the list of user accounts
48 and information attached to those accounts. It has been developed in and
49 is used by the GNOME project but is usable with other desktop environments
54 ff2b2419a7e06bd9cb335ffe391c7409b49a0f0130b890bd54692a3986699c9b 97972 accountsservice-0.6.55.tar.xz
57 [FILE:646:manifests/plist.primary.standard]
58 etc/dbus-1/system.d/org.freedesktop.Accounts.conf
59 include/accountsservice-1.0/act/
66 libaccountsservice.so.0
67 libaccountsservice.so.0.0.0
68 lib/girepository-1.0/AccountsService-1.0.typelib
69 lib/pkgconfig/accountsservice.pc
70 libexec/accounts-daemon
71 share/dbus-1/interfaces/
72 org.freedesktop.Accounts.User.xml
73 org.freedesktop.Accounts.xml
74 share/dbus-1/system-services/org.freedesktop.Accounts.service
75 share/gir-1.0/AccountsService-1.0.gir
76 share/polkit-1/actions/org.freedesktop.accounts.policy
77 @dir var/db/AccountsService/icons
78 @dir var/db/AccountsService/users
81 [FILE:3587:manifests/plist.nls.standard]
82 share/locale/af/LC_MESSAGES/accounts-service.mo
83 share/locale/ar/LC_MESSAGES/accounts-service.mo
84 share/locale/as/LC_MESSAGES/accounts-service.mo
85 share/locale/ast/LC_MESSAGES/accounts-service.mo
86 share/locale/az/LC_MESSAGES/accounts-service.mo
87 share/locale/be/LC_MESSAGES/accounts-service.mo
88 share/locale/bg/LC_MESSAGES/accounts-service.mo
89 share/locale/bn_IN/LC_MESSAGES/accounts-service.mo
90 share/locale/ca/LC_MESSAGES/accounts-service.mo
91 share/locale/ca@valencia/LC_MESSAGES/accounts-service.mo
92 share/locale/cs/LC_MESSAGES/accounts-service.mo
93 share/locale/cy/LC_MESSAGES/accounts-service.mo
94 share/locale/da/LC_MESSAGES/accounts-service.mo
95 share/locale/de/LC_MESSAGES/accounts-service.mo
96 share/locale/el/LC_MESSAGES/accounts-service.mo
97 share/locale/en/LC_MESSAGES/accounts-service.mo
98 share/locale/en_GB/LC_MESSAGES/accounts-service.mo
99 share/locale/eo/LC_MESSAGES/accounts-service.mo
100 share/locale/es/LC_MESSAGES/accounts-service.mo
101 share/locale/et/LC_MESSAGES/accounts-service.mo
102 share/locale/eu/LC_MESSAGES/accounts-service.mo
103 share/locale/fa/LC_MESSAGES/accounts-service.mo
104 share/locale/fi/LC_MESSAGES/accounts-service.mo
105 share/locale/fo/LC_MESSAGES/accounts-service.mo
106 share/locale/fr/LC_MESSAGES/accounts-service.mo
107 share/locale/fur/LC_MESSAGES/accounts-service.mo
108 share/locale/ga/LC_MESSAGES/accounts-service.mo
109 share/locale/gl/LC_MESSAGES/accounts-service.mo
110 share/locale/gu/LC_MESSAGES/accounts-service.mo
111 share/locale/he/LC_MESSAGES/accounts-service.mo
112 share/locale/hi/LC_MESSAGES/accounts-service.mo
113 share/locale/hr/LC_MESSAGES/accounts-service.mo
114 share/locale/hu/LC_MESSAGES/accounts-service.mo
115 share/locale/ia/LC_MESSAGES/accounts-service.mo
116 share/locale/id/LC_MESSAGES/accounts-service.mo
117 share/locale/it/LC_MESSAGES/accounts-service.mo
118 share/locale/ja/LC_MESSAGES/accounts-service.mo
119 share/locale/ka/LC_MESSAGES/accounts-service.mo
120 share/locale/kk/LC_MESSAGES/accounts-service.mo
121 share/locale/kn/LC_MESSAGES/accounts-service.mo
122 share/locale/ko/LC_MESSAGES/accounts-service.mo
123 share/locale/ky/LC_MESSAGES/accounts-service.mo
124 share/locale/lt/LC_MESSAGES/accounts-service.mo
125 share/locale/lv/LC_MESSAGES/accounts-service.mo
126 share/locale/ml/LC_MESSAGES/accounts-service.mo
127 share/locale/mr/LC_MESSAGES/accounts-service.mo
128 share/locale/ms/LC_MESSAGES/accounts-service.mo
129 share/locale/nb/LC_MESSAGES/accounts-service.mo
130 share/locale/nl/LC_MESSAGES/accounts-service.mo
131 share/locale/nn/LC_MESSAGES/accounts-service.mo
132 share/locale/oc/LC_MESSAGES/accounts-service.mo
133 share/locale/or/LC_MESSAGES/accounts-service.mo
134 share/locale/pa/LC_MESSAGES/accounts-service.mo
135 share/locale/pl/LC_MESSAGES/accounts-service.mo
136 share/locale/pt/LC_MESSAGES/accounts-service.mo
137 share/locale/pt_BR/LC_MESSAGES/accounts-service.mo
138 share/locale/ro/LC_MESSAGES/accounts-service.mo
139 share/locale/ru/LC_MESSAGES/accounts-service.mo
140 share/locale/sk/LC_MESSAGES/accounts-service.mo
141 share/locale/sl/LC_MESSAGES/accounts-service.mo
142 share/locale/sq/LC_MESSAGES/accounts-service.mo
143 share/locale/sr/LC_MESSAGES/accounts-service.mo
144 share/locale/sr@latin/LC_MESSAGES/accounts-service.mo
145 share/locale/sv/LC_MESSAGES/accounts-service.mo
146 share/locale/ta/LC_MESSAGES/accounts-service.mo
147 share/locale/te/LC_MESSAGES/accounts-service.mo
148 share/locale/th/LC_MESSAGES/accounts-service.mo
149 share/locale/tr/LC_MESSAGES/accounts-service.mo
150 share/locale/uk/LC_MESSAGES/accounts-service.mo
151 share/locale/vi/LC_MESSAGES/accounts-service.mo
152 share/locale/wa/LC_MESSAGES/accounts-service.mo
153 share/locale/zh_CN/LC_MESSAGES/accounts-service.mo
154 share/locale/zh_HK/LC_MESSAGES/accounts-service.mo
155 share/locale/zh_TW/LC_MESSAGES/accounts-service.mo
158 [FILE:52:manifests/plist.docs.standard]
159 share/doc/accountsservice/spec/AccountsService.html
162 [FILE:645:patches/patch-fix-meson]
163 From ac9b14f1c1bbca413987d0bbfeaad05804107e9a Mon Sep 17 00:00:00 2001
164 From: Luca Boccassi <bluca@debian.org>
165 Date: Sun, 31 Oct 2021 12:29:14 +0000
166 Subject: [PATCH] Fix build with meson 0.60
168 Positional parameters to merge_file() were never allowed and always
169 ignored, so just drop it.
170 See: https://github.com/mesonbuild/meson/issues/9441
174 data/meson.build | 1 -
175 1 file changed, 1 deletion(-)
177 --- data/meson.build.orig
179 @@ -33,7 +33,6 @@ configure_file(
180 policy = act_namespace.to_lower() + '.policy'
184 input: policy + '.in',
192 [FILE:424:patches/patch-meson.build]
193 --- meson.build.orig 2019-04-23 15:16:09 UTC
195 @@ -79,6 +79,8 @@ endforeach
197 if cc.has_header_symbol('utmpx.h', 'WTMPX_FILENAME', prefix: '#define _GNU_SOURCE')
198 config_h.set('PATH_WTMP', 'WTMPX_FILENAME')
199 +elif cc.has_header_symbol('utmpx.h', '_PATH_WTMPX')
200 + config_h.set('PATH_WTMP', '_PATH_WTMPX')
201 elif cc.has_header_symbol('paths.h', '_PATH_WTMPX')
202 config_h.set('PATH_WTMP', '_PATH_WTMPX')
206 [FILE:667:patches/patch-meson__post__install.py]
207 --- meson_post_install.py.orig 2019-04-23 17:16:09.000000000 +0200
208 +++ meson_post_install.py 2021-06-03 15:47:58.660402000 +0200
210 # FIXME: meson will not track the creation of these directories
211 # https://github.com/mesonbuild/meson/blob/master/mesonbuild/scripts/uninstall.py#L39
213 - (os.path.join(localstatedir, 'lib', 'AccountsService', 'icons'), 0o775),
214 - (os.path.join(localstatedir, 'lib', 'AccountsService', 'users'), 0o700),
215 + (os.path.join(localstatedir, 'db', 'AccountsService', 'icons'), 0o775),
216 + (os.path.join(localstatedir, 'db', 'AccountsService', 'users'), 0o700),
219 for (dst_dir, dst_dir_mode) in dst_dirs:
222 [FILE:9951:patches/patch-src_daemon.c]
223 --- src/daemon.c.orig 2019-04-23 17:16:09.000000000 +0200
224 +++ src/daemon.c 2021-06-03 15:49:31.681945000 +0200
226 GHashTable *extension_ifaces;
229 +#ifdef HAVE_SHADOW_H
230 typedef struct passwd * (* EntryGeneratorFunc) (Daemon *, GHashTable *, gpointer *, struct spwd **shadow_entry);
232 +typedef struct passwd * (* EntryGeneratorFunc) (Daemon *, GHashTable *, gpointer *);
237 @@ -165,17 +169,25 @@
240 static struct passwd *
241 +#ifdef HAVE_SHADOW_H
242 entry_generator_fgetpwent (Daemon *daemon,
247 +entry_generator_fgetpwent (Daemon *daemon,
252 struct passwd *pwent;
254 +#ifdef HAVE_SHADOW_H
258 } *shadow_entry_buffers;
264 if (*state == NULL) {
265 GHashTable *shadow_users = NULL;
267 +#ifdef HAVE_SHADOW_H
268 struct spwd *shadow_entry;
270 fp = fopen (PATH_SHADOW, "r");
272 g_clear_pointer (&shadow_users, g_hash_table_unref);
277 fp = fopen (PATH_PASSWD, "r");
279 @@ -240,12 +254,17 @@
280 if (g_hash_table_size (users) < MAX_LOCAL_USERS) {
281 pwent = fgetpwent (generator_state->fp);
283 +#ifdef HAVE_SHADOW_H
284 shadow_entry_buffers = g_hash_table_lookup (generator_state->users, pwent->pw_name);
286 if (shadow_entry_buffers != NULL) {
287 *spent = &shadow_entry_buffers->spbuf;
291 + if (!generator_state->users || g_hash_table_lookup (generator_state->users, pwent->pw_name))
297 @@ -259,10 +278,16 @@
300 static struct passwd *
301 +#ifdef HAVE_SHADOW_H
302 entry_generator_cachedir (Daemon *daemon,
305 struct spwd **shadow_entry)
307 +entry_generator_cachedir (Daemon *daemon,
312 struct passwd *pwent;
313 g_autoptr(GError) error = NULL;
316 pwent = getpwnam (name);
318 +#ifdef HAVE_SHADOW_H
319 *shadow_entry = getspnam (pwent->pw_name);
323 } else if (errno == 0) {
324 @@ -340,10 +367,16 @@
327 static struct passwd *
328 +#ifdef HAVE_SHADOW_H
329 entry_generator_requested_users (Daemon *daemon,
332 struct spwd **shadow_entry)
334 +entry_generator_requested_users (Daemon *daemon,
339 DaemonPrivate *priv = daemon_get_instance_private (daemon);
340 struct passwd *pwent;
343 g_debug ("user '%s' requested previously but not present on system", name);
345 +#ifdef HAVE_SHADOW_H
346 *shadow_entry = getspnam (pwent->pw_name);
351 @@ -394,19 +429,29 @@
352 DaemonPrivate *priv = daemon_get_instance_private (daemon);
353 gpointer generator_state = NULL;
354 struct passwd *pwent;
355 +#ifdef HAVE_SHADOW_H
356 struct spwd *spent = NULL;
360 g_assert (entry_generator != NULL);
363 +#ifdef HAVE_SHADOW_H
365 pwent = entry_generator (daemon, users, &generator_state, &spent);
367 + pwent = entry_generator (daemon, users, &generator_state);
372 /* Skip system users... */
373 +#ifdef HAVE_SHADOW_H
374 if (!explicitly_requested && !user_classify_is_human (pwent->pw_uid, pwent->pw_name, pwent->pw_shell, spent? spent->sp_pwdp : NULL)) {
376 + if (!explicitly_requested && !user_classify_is_human (pwent->pw_uid, pwent->pw_name, pwent->pw_shell, NULL)) {
378 g_debug ("skipping user: %s", pwent->pw_name);
383 /* freeze & update users not already in the new list */
384 g_object_freeze_notify (G_OBJECT (user));
385 +#ifdef HAVE_SHADOW_H
386 user_update_from_pwent (user, pwent, spent);
388 + user_update_from_pwent (user, pwent);
391 g_hash_table_insert (users, g_strdup (user_get_user_name (user)), user);
392 g_debug ("loaded user: %s", user_get_user_name (user));
393 @@ -843,15 +892,24 @@
397 +#ifdef HAVE_SHADOW_H
398 add_new_user_for_pwent (Daemon *daemon,
399 struct passwd *pwent,
402 +add_new_user_for_pwent (Daemon *daemon,
403 + struct passwd *pwent)
406 DaemonPrivate *priv = daemon_get_instance_private (daemon);
409 user = user_new (daemon, pwent->pw_uid);
410 +#ifdef HAVE_SHADOW_H
411 user_update_from_pwent (user, pwent, spent);
413 + user_update_from_pwent (user, pwent);
415 user_register (user);
417 g_hash_table_insert (priv->users,
419 user = g_hash_table_lookup (priv->users, pwent->pw_name);
422 +#ifdef HAVE_SHADOW_H
424 spent = getspnam (pwent->pw_name);
425 user = add_new_user_for_pwent (daemon, pwent, spent);
427 + user = add_new_user_for_pwent (daemon, pwent);
430 priv->explicitly_requested_users = g_list_append (priv->explicitly_requested_users,
431 g_strdup (pwent->pw_name));
433 user = g_hash_table_lookup (priv->users, pwent->pw_name);
436 +#ifdef HAVE_SHADOW_H
438 spent = getspnam (pwent->pw_name);
439 user = add_new_user_for_pwent (daemon, pwent, spent);
441 + user = add_new_user_for_pwent (daemon, pwent);
444 priv->explicitly_requested_users = g_list_append (priv->explicitly_requested_users,
445 g_strdup (pwent->pw_name));
446 @@ -1106,10 +1172,12 @@
448 sys_log (context, "create user '%s'", cd->user_name);
450 - argv[0] = "/usr/sbin/useradd";
453 - argv[3] = cd->real_name;
454 + argv[0] = "/usr/sbin/pw";
455 + argv[1] = "useradd";
456 + argv[2] = cd->user_name;
459 + argv[5] = cd->real_name;
460 if (cd->account_type == ACCOUNT_TYPE_ADMINISTRATOR) {
461 if (EXTRA_ADMIN_GROUPS != NULL && EXTRA_ADMIN_GROUPS[0] != '\0')
462 admin_groups = g_strconcat (ADMIN_GROUP, ",",
463 @@ -1117,15 +1185,11 @@
465 admin_groups = g_strdup (ADMIN_GROUP);
468 - argv[5] = admin_groups;
470 - argv[7] = cd->user_name;
472 + argv[7] = admin_groups;
475 else if (cd->account_type == ACCOUNT_TYPE_STANDARD) {
477 - argv[5] = cd->user_name;
481 @@ -1292,7 +1356,7 @@
482 DeleteUserData *ud = data;
483 g_autoptr(GError) error = NULL;
484 struct passwd *pwent;
485 - const gchar *argv[6];
486 + const gchar *argv[5];
489 pwent = getpwuid (ud->uid);
490 @@ -1318,19 +1382,16 @@
492 user_set_saved (user, FALSE);
494 - argv[0] = "/usr/sbin/userdel";
495 + argv[0] = "/usr/sbin/pw";
496 + argv[1] = "userdel";
497 if (ud->remove_files) {
501 - argv[4] = pwent->pw_name;
503 + argv[2] = pwent->pw_name;
510 - argv[3] = pwent->pw_name;
512 + argv[2] = pwent->pw_name;
516 if (!spawn_with_login_uid (context, argv, &error)) {
519 [FILE:287:patches/patch-src_libaccountsservice_act-user.c]
520 --- src/libaccountsservice/act-user.c.orig 2019-04-23 15:16:09 UTC
521 +++ src/libaccountsservice/act-user.c
523 #include <sys/stat.h>
526 +#if defined(__linux__) || defined(__sun__)
531 #include <glib/gi18n.h>
534 [FILE:667:patches/patch-src_meson.build]
535 --- src/meson.build.orig 2019-04-23 17:16:09.000000000 +0200
536 +++ src/meson.build 2021-06-03 15:53:08.752594000 +0200
539 '-DLOCALSTATEDIR="@0@"'.format(act_localstatedir),
540 '-DDATADIR="@0@"'.format(act_datadir),
541 - '-DICONDIR="@0@"'.format(join_paths(act_localstatedir, 'lib', 'AccountsService', 'icons')),
542 - '-DUSERDIR="@0@"'.format(join_paths(act_localstatedir, 'lib', 'AccountsService', 'users')),
543 + '-DICONDIR="@0@"'.format(join_paths(act_localstatedir, 'db', 'AccountsService', 'icons')),
544 + '-DUSERDIR="@0@"'.format(join_paths(act_localstatedir, 'db', 'AccountsService', 'users')),
547 libaccounts_generated = static_library(
550 [FILE:408:patches/patch-src_user-classify.c]
551 --- src/user-classify.c.orig 2019-04-23 17:16:09.000000000 +0200
552 +++ src/user-classify.c 2021-06-03 15:54:58.188003000 +0200
567 "gnome-initial-setup"
571 [FILE:10117:patches/patch-src_user.c]
572 --- src/user.c.orig 2019-04-23 17:16:09.000000000 +0200
573 +++ src/user.c 2021-06-03 15:56:17.985242000 +0200
578 +#ifdef HAVE_SHADOW_H
579 user_update_from_pwent (User *user,
580 struct passwd *pwent,
583 +user_update_from_pwent (User *user,
584 + struct passwd *pwent)
587 g_autofree gchar *real_name = NULL;
588 gboolean is_system_account;
590 accounts_user_set_shell (ACCOUNTS_USER (user), pwent->pw_shell);
593 +#ifdef HAVE_SHADOW_H
595 passwd = spent->sp_pwdp;
598 if (passwd && passwd[0] == '!') {
601 mode = PASSWORD_MODE_NONE;
604 +#ifdef HAVE_SHADOW_H
606 if (spent->sp_lstchg == 0) {
607 mode = PASSWORD_MODE_SET_AT_LOGIN;
609 user->days_after_expiration_until_lock = spent->sp_inact;
610 user->account_expiration_policy_known = TRUE;
613 + user->expiration_time = pwent->pw_expire;
616 accounts_user_set_password_mode (ACCOUNTS_USER (user), mode);
617 is_system_account = !user_classify_is_human (accounts_user_get_uid (ACCOUNTS_USER (user)),
618 @@ -844,11 +855,11 @@
619 accounts_user_get_uid (ACCOUNTS_USER (user)),
622 - argv[0] = "/usr/sbin/usermod";
626 - argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user));
627 + argv[0] = "/usr/sbin/pw";
628 + argv[1] = "usermod";
629 + argv[2] = accounts_user_get_user_name (ACCOUNTS_USER (user));
634 if (!spawn_with_login_uid (context, argv, &error)) {
635 @@ -913,11 +924,11 @@
636 accounts_user_get_uid (ACCOUNTS_USER (user)),
639 - argv[0] = "/usr/sbin/usermod";
643 - argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user));
644 + argv[0] = "/usr/sbin/pw";
645 + argv[1] = "usermod";
646 + argv[2] = accounts_user_get_user_name (ACCOUNTS_USER (user));
651 if (!spawn_with_login_uid (context, argv, &error)) {
652 @@ -1312,7 +1323,7 @@
654 gchar *home_dir = data;
655 g_autoptr(GError) error = NULL;
656 - const gchar *argv[7];
657 + const gchar *argv[6];
659 if (g_strcmp0 (accounts_user_get_home_directory (ACCOUNTS_USER (user)), home_dir) != 0) {
661 @@ -1321,13 +1332,12 @@
662 accounts_user_get_uid (ACCOUNTS_USER (user)),
665 - argv[0] = "/usr/sbin/usermod";
668 - argv[3] = home_dir;
670 - argv[5] = accounts_user_get_user_name (ACCOUNTS_USER (user));
672 + argv[0] = "/usr/sbin/pw";
674 + argv[2] = home_dir;
676 + argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user));
679 if (!spawn_with_login_uid (context, argv, &error)) {
680 throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message);
681 @@ -1378,11 +1388,11 @@
682 accounts_user_get_uid (ACCOUNTS_USER (user)),
685 - argv[0] = "/usr/sbin/usermod";
689 - argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user));
690 + argv[0] = "/usr/sbin/pw";
691 + argv[1] = "usermod";
692 + argv[2] = accounts_user_get_user_name (ACCOUNTS_USER (user));
697 if (!spawn_with_login_uid (context, argv, &error)) {
698 @@ -1593,7 +1603,7 @@
700 gboolean locked = GPOINTER_TO_INT (data);
701 g_autoptr(GError) error = NULL;
702 - const gchar *argv[5];
703 + const gchar *argv[4];
705 if (accounts_user_get_locked (ACCOUNTS_USER (user)) != locked) {
707 @@ -1601,11 +1611,10 @@
708 locked ? "locking" : "unlocking",
709 accounts_user_get_user_name (ACCOUNTS_USER (user)),
710 accounts_user_get_uid (ACCOUNTS_USER (user)));
711 - argv[0] = "/usr/sbin/usermod";
712 - argv[1] = locked ? "-L" : "-U";
714 - argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user));
716 + argv[0] = "/usr/sbin/pw";
717 + argv[1] = locked ? "lock" : "unlock";
718 + argv[2] = accounts_user_get_user_name (ACCOUNTS_USER (user));
721 if (!spawn_with_login_uid (context, argv, &error)) {
722 throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message);
723 @@ -1726,11 +1735,11 @@
727 - argv[0] = "/usr/sbin/usermod";
729 - argv[2] = str->str;
731 - argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user));
732 + argv[0] = "/usr/sbin/pw";
733 + argv[1] = "usermod";
734 + argv[2] = accounts_user_get_user_name (ACCOUNTS_USER (user));
736 + argv[4] = str->str;
739 if (!spawn_with_login_uid (context, argv, &error)) {
740 @@ -1780,7 +1789,7 @@
742 PasswordMode mode = GPOINTER_TO_INT (data);
743 g_autoptr(GError) error = NULL;
744 - const gchar *argv[6];
745 + const gchar *argv[5];
747 if (((PasswordMode) accounts_user_get_password_mode (ACCOUNTS_USER (user))) != mode) {
749 @@ -1795,10 +1804,8 @@
750 mode == PASSWORD_MODE_NONE) {
752 argv[0] = "/usr/bin/passwd";
755 - argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user));
757 + argv[1] = accounts_user_get_user_name (ACCOUNTS_USER (user));
760 if (!spawn_with_login_uid (context, argv, &error)) {
761 throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message);
762 @@ -1806,12 +1813,11 @@
765 if (mode == PASSWORD_MODE_SET_AT_LOGIN) {
766 - argv[0] = "/usr/bin/chage";
768 + argv[0] = "/usr/bin/chpass";
772 - argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user));
774 + argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user));
777 if (!spawn_with_login_uid (context, argv, &error)) {
778 throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message);
779 @@ -1827,11 +1833,10 @@
780 accounts_user_set_locked (ACCOUNTS_USER (user), FALSE);
782 else if (accounts_user_get_locked (ACCOUNTS_USER (user))) {
783 - argv[0] = "/usr/sbin/usermod";
786 - argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user));
788 + argv[0] = "/usr/sbin/pw";
789 + argv[1] = "unlock";
790 + argv[2] = accounts_user_get_user_name (ACCOUNTS_USER (user));
793 if (!spawn_with_login_uid (context, argv, &error)) {
794 throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message);
795 @@ -1896,7 +1901,7 @@
797 gchar **strings = data;
798 g_autoptr(GError) error = NULL;
799 - const gchar *argv[6];
800 + const gchar *argv[5];
803 "set password and hint of user '%s' (%d)",
804 @@ -1905,12 +1910,11 @@
806 g_object_freeze_notify (G_OBJECT (user));
808 - argv[0] = "/usr/sbin/usermod";
809 + argv[0] = "/usr/sbin/chpass";
811 argv[2] = strings[0];
813 - argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user));
815 + argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user));
818 if (!spawn_with_login_uid (context, argv, &error)) {
819 throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message);
822 [FILE:1008:patches/patch-src_user.h]
823 --- src/user.h.orig 2019-04-23 17:16:09.000000000 +0200
824 +++ src/user.h 2021-06-03 16:07:13.902776000 +0200
827 #include <sys/types.h>
829 +#ifdef HAVE_SHADOW_H
836 User * user_new (Daemon *daemon,
839 +#ifdef HAVE_SHADOW_H
840 void user_update_from_pwent (User *user,
841 struct passwd *pwent,
844 +void user_update_from_pwent (User *user,
845 + struct passwd *pwent);
847 void user_update_from_keyfile (User *user,
849 void user_update_local_account_property (User *user,
852 [FILE:375:patches/patch-src_wtmp-helper.c]
853 --- src/wtmp-helper.c.orig 2019-04-23 15:16:09 UTC
854 +++ src/wtmp-helper.c
855 @@ -51,7 +51,7 @@ user_previous_login_free (UserPreviousLo
857 wtmp_helper_start (void)
859 -#if defined(HAVE_SETUTXDB)
860 +#if defined(HAVE_SETUTXDB) && !defined(__DragonFly__)
861 if (setutxdb (UTXDB_LOG, NULL) != 0) {
866 [FILE:358:patches/patch-src_wtmp-helper.h]
867 --- src/wtmp-helper.h.orig 2019-04-23 15:16:09 UTC
868 +++ src/wtmp-helper.h
873 +#ifdef HAVE_SHADOW_H
877 const gchar * wtmp_helper_get_path_for_monitor (void);
878 void wtmp_helper_update_login_frequencies (GHashTable *users);
881 [FILE:627:freebsd/patch-meson.build]
882 --- meson.build.orig 2019-04-23 17:16:09.000000000 +0200
883 +++ meson.build 2021-06-03 15:45:38.526501000 +0200
885 elif cc.has_header_symbol('paths.h', '_PATH_WTMPX')
886 config_h.set('PATH_WTMP', '_PATH_WTMPX')
888 - assert(run_command('test', '-e', '/var/log/utx.log').returncode() == 0, 'Do not know which filename to watch for wtmp changes')
889 - config_h.set_quoted('PATH_WTMP', '/var/log/utx.log')
890 + # Ugly hack for jails builders!
891 + _system = host_machine.system().to_lower()
892 + if _system.contains('freebsd')
893 + config_h.set_quoted('PATH_WTMP', '/var/log/utx.log')