Ravenports generated: 15 Feb 2023 23:13
[ravenports.git] / bucket_CA / accountsservice
1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
2
3 NAMEBASE=               accountsservice
4 VERSION=                0.6.55
5 KEYWORDS=               sysutils
6 VARIANTS=               standard
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]
10
11 DOWNLOAD_GROUPS=        main
12 SITES[main]=            https://www.freedesktop.org/software/accountsservice/
13 DISTFILE[1]=            accountsservice-0.6.55.tar.xz:main
14 DF_INDEX=               1
15 SPKGS[standard]=        complete
16                         primary
17                         nls
18                         docs
19
20 OPTIONS_AVAILABLE=      none
21 OPTIONS_STANDARD=       none
22
23 BUILD_DEPENDS=          xmlto:single:standard
24                         dbus:dev:standard
25 BUILDRUN_DEPENDS=       polkit:primary:standard
26
27 USES=                   cpe meson pkgconfig
28 GNOME_COMPONENTS=       glib introspection
29
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
35 LICENSE_SCHEME=         solo
36
37 CPE_VENDOR=             freedesktop
38 FPC_EQUIVALENT=         sysutils/accountsservice
39 MESON_ARGS=             -Dsystemd=false
40                         -Dsystemdsystemunitdir=no
41                         -Delogind=false
42                         -Dintrospection=true
43                         -Ddocbook=true
44                         -Dgtk_doc=false
45
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 
50 as well.
51
52
53 [FILE:108:distinfo]
54 ff2b2419a7e06bd9cb335ffe391c7409b49a0f0130b890bd54692a3986699c9b        97972 accountsservice-0.6.55.tar.xz
55
56
57 [FILE:646:manifests/plist.primary.standard]
58 etc/dbus-1/system.d/org.freedesktop.Accounts.conf
59 include/accountsservice-1.0/act/
60  act-user-enum-types.h
61  act-user-manager.h
62  act-user.h
63  act.h
64 lib/
65  libaccountsservice.so
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
79
80
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
156
157
158 [FILE:52:manifests/plist.docs.standard]
159 share/doc/accountsservice/spec/AccountsService.html
160
161
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
167
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
171
172 Fixes #97
173 ---
174  data/meson.build | 1 -
175  1 file changed, 1 deletion(-)
176
177 --- data/meson.build.orig
178 +++ data/meson.build
179 @@ -33,7 +33,6 @@ configure_file(
180  policy = act_namespace.to_lower() + '.policy'
181  
182  i18n.merge_file(
183 -  policy,
184    input: policy + '.in',
185    output: policy,
186    po_dir: po_dir,
187 -- 
188 GitLab
189
190
191
192 [FILE:424:patches/patch-meson.build]
193 --- meson.build.orig    2019-04-23 15:16:09 UTC
194 +++ meson.build
195 @@ -79,6 +79,8 @@ endforeach
196  
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')
203  else
204
205
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
209 @@ -9,8 +9,8 @@
210  # FIXME: meson will not track the creation of these directories
211  #        https://github.com/mesonbuild/meson/blob/master/mesonbuild/scripts/uninstall.py#L39
212  dst_dirs = [
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),
217  ]
218  
219  for (dst_dir, dst_dir_mode) in dst_dirs:
220
221
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
225 @@ -81,7 +81,11 @@
226          GHashTable *extension_ifaces;
227  } DaemonPrivate;
228  
229 +#ifdef HAVE_SHADOW_H
230  typedef struct passwd * (* EntryGeneratorFunc) (Daemon *, GHashTable *, gpointer *, struct spwd **shadow_entry);
231 +#else
232 +typedef struct passwd * (* EntryGeneratorFunc) (Daemon *, GHashTable *, gpointer *);
233 +#endif
234  
235  typedef struct {
236          Daemon *daemon;
237 @@ -165,17 +169,25 @@
238  }
239  
240  static struct passwd *
241 +#ifdef HAVE_SHADOW_H
242  entry_generator_fgetpwent (Daemon       *daemon,
243                             GHashTable   *users,
244                             gpointer     *state,
245                             struct spwd **spent)
246 +#else
247 +entry_generator_fgetpwent (Daemon       *daemon,
248 +                           GHashTable   *users,
249 +                           gpointer     *state)
250 +#endif
251  {
252          struct passwd *pwent;
253  
254 +#ifdef HAVE_SHADOW_H
255          struct {
256                  struct spwd spbuf;
257                  char buf[1024];
258          } *shadow_entry_buffers;
259 +#endif
260  
261          struct {
262                  FILE *fp;
263 @@ -186,6 +198,7 @@
264          if (*state == NULL) {
265                  GHashTable *shadow_users = NULL;
266                  FILE *fp;
267 +#ifdef HAVE_SHADOW_H
268                  struct spwd *shadow_entry;
269  
270                  fp = fopen (PATH_SHADOW, "r");
271 @@ -219,6 +232,7 @@
272                          g_clear_pointer (&shadow_users, g_hash_table_unref);
273                          return NULL;
274                  }
275 +#endif
276  
277                  fp = fopen (PATH_PASSWD, "r");
278                  if (fp == NULL) {
279 @@ -240,12 +254,17 @@
280          if (g_hash_table_size (users) < MAX_LOCAL_USERS) {
281                  pwent = fgetpwent (generator_state->fp);
282                  if (pwent != NULL) {
283 +#ifdef HAVE_SHADOW_H
284                          shadow_entry_buffers = g_hash_table_lookup (generator_state->users, pwent->pw_name);
285  
286                          if (shadow_entry_buffers != NULL) {
287                              *spent = &shadow_entry_buffers->spbuf;
288                          }
289                          return pwent;
290 +#else
291 +                        if (!generator_state->users || g_hash_table_lookup (generator_state->users, pwent->pw_name))
292 +                            return pwent;
293 +#endif
294                  }
295          }
296  
297 @@ -259,10 +278,16 @@
298  }
299  
300  static struct passwd *
301 +#ifdef HAVE_SHADOW_H
302  entry_generator_cachedir (Daemon       *daemon,
303                            GHashTable   *users,
304                            gpointer     *state,
305                            struct spwd **shadow_entry)
306 +#else
307 +entry_generator_cachedir (Daemon       *daemon,
308 +                          GHashTable   *users,
309 +                          gpointer     *state)
310 +#endif
311  {
312          struct passwd *pwent;
313          g_autoptr(GError) error = NULL;
314 @@ -304,7 +329,9 @@
315                          errno = 0;
316                          pwent = getpwnam (name);
317                          if (pwent != NULL) {
318 +#ifdef HAVE_SHADOW_H
319                                  *shadow_entry = getspnam (pwent->pw_name);
320 +#endif
321  
322                                  return pwent;
323                          } else if (errno == 0) {
324 @@ -340,10 +367,16 @@
325  }
326  
327  static struct passwd *
328 +#ifdef HAVE_SHADOW_H
329  entry_generator_requested_users (Daemon       *daemon,
330                                   GHashTable   *users,
331                                   gpointer     *state,
332                                   struct spwd **shadow_entry)
333 +#else
334 +entry_generator_requested_users (Daemon       *daemon,
335 +                                 GHashTable   *users,
336 +                                 gpointer     *state)
337 +#endif
338  {
339          DaemonPrivate *priv = daemon_get_instance_private (daemon);
340          struct passwd *pwent;
341 @@ -371,7 +404,9 @@
342                                  if (pwent == NULL) {
343                                          g_debug ("user '%s' requested previously but not present on system", name);
344                                  } else {
345 +#ifdef HAVE_SHADOW_H
346                                          *shadow_entry = getspnam (pwent->pw_name);
347 +#endif
348  
349                                          return pwent;
350                                  }
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;
357 +#endif
358          User *user = NULL;
359  
360          g_assert (entry_generator != NULL);
361  
362          for (;;) {
363 +#ifdef HAVE_SHADOW_H
364                  spent = NULL;
365                  pwent = entry_generator (daemon, users, &generator_state, &spent);
366 +#else
367 +                pwent = entry_generator (daemon, users, &generator_state);
368 +#endif
369                  if (pwent == NULL)
370                          break;
371  
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)) {
375 +#else
376 +                if (!explicitly_requested && !user_classify_is_human (pwent->pw_uid, pwent->pw_name, pwent->pw_shell, NULL)) {
377 +#endif
378                          g_debug ("skipping user: %s", pwent->pw_name);
379                          continue;
380                  }
381 @@ -428,7 +473,11 @@
382  
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);
387 +#else
388 +                        user_update_from_pwent (user, pwent);
389 +#endif
390  
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 @@
394  }
395  
396  static User *
397 +#ifdef HAVE_SHADOW_H
398  add_new_user_for_pwent (Daemon        *daemon,
399                          struct passwd *pwent,
400                          struct spwd   *spent)
401 +#else
402 +add_new_user_for_pwent (Daemon        *daemon,
403 +                        struct passwd *pwent)
404 +#endif
405  {
406          DaemonPrivate *priv = daemon_get_instance_private (daemon);
407          User *user;
408  
409          user = user_new (daemon, pwent->pw_uid);
410 +#ifdef HAVE_SHADOW_H
411          user_update_from_pwent (user, pwent, spent);
412 +#else
413 +        user_update_from_pwent (user, pwent);
414 +#endif
415          user_register (user);
416  
417          g_hash_table_insert (priv->users,
418 @@ -880,9 +938,13 @@
419          user = g_hash_table_lookup (priv->users, pwent->pw_name);
420  
421          if (user == NULL) {
422 +#ifdef HAVE_SHADOW_H
423                  struct spwd *spent;
424                  spent = getspnam (pwent->pw_name);
425                  user = add_new_user_for_pwent (daemon, pwent, spent);
426 +#else
427 +                user = add_new_user_for_pwent (daemon, pwent);
428 +#endif
429  
430                  priv->explicitly_requested_users = g_list_append (priv->explicitly_requested_users,
431                                                                    g_strdup (pwent->pw_name));
432 @@ -908,9 +970,13 @@
433          user = g_hash_table_lookup (priv->users, pwent->pw_name);
434  
435          if (user == NULL) {
436 +#ifdef HAVE_SHADOW_H
437                  struct spwd *spent;
438                  spent = getspnam (pwent->pw_name);
439                  user = add_new_user_for_pwent (daemon, pwent, spent);
440 +#else
441 +                user = add_new_user_for_pwent (daemon, pwent);
442 +#endif
443  
444                  priv->explicitly_requested_users = g_list_append (priv->explicitly_requested_users,
445                                                                    g_strdup (pwent->pw_name));
446 @@ -1106,10 +1172,12 @@
447  
448          sys_log (context, "create user '%s'", cd->user_name);
449  
450 -        argv[0] = "/usr/sbin/useradd";
451 -        argv[1] = "-m";
452 -        argv[2] = "-c";
453 -        argv[3] = cd->real_name;
454 +        argv[0] = "/usr/sbin/pw";
455 +        argv[1] = "useradd";
456 +        argv[2] = cd->user_name;
457 +        argv[3] = "-m";
458 +        argv[4] = "-c";
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 @@
464                  else
465                          admin_groups = g_strdup (ADMIN_GROUP);
466  
467 -                argv[4] = "-G";
468 -                argv[5] = admin_groups;
469 -                argv[6] = "--";
470 -                argv[7] = cd->user_name;
471 +                argv[6] = "-G";
472 +                argv[7] = admin_groups;
473                  argv[8] = NULL;
474          }
475          else if (cd->account_type == ACCOUNT_TYPE_STANDARD) {
476 -                argv[4] = "--";
477 -                argv[5] = cd->user_name;
478                  argv[6] = NULL;
479          }
480          else {
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];
487          User *user;
488  
489          pwent = getpwuid (ud->uid);
490 @@ -1318,19 +1382,16 @@
491  
492          user_set_saved (user, FALSE);
493  
494 -        argv[0] = "/usr/sbin/userdel";
495 +        argv[0] = "/usr/sbin/pw";
496 +        argv[1] = "userdel";
497          if (ud->remove_files) {
498 -                argv[1] = "-f";
499 -                argv[2] = "-r";
500 -                argv[3] = "--";
501 -                argv[4] = pwent->pw_name;
502 -                argv[5] = NULL;
503 +                argv[2] = pwent->pw_name;
504 +                argv[3] = "-r";
505 +                argv[4] = NULL;
506          }
507          else {
508 -                argv[1] = "-f";
509 -                argv[2] = "--";
510 -                argv[3] = pwent->pw_name;
511 -                argv[4] = NULL;
512 +                argv[2] = pwent->pw_name;
513 +                argv[3] = NULL;
514          }
515  
516          if (!spawn_with_login_uid (context, argv, &error)) {
517
518
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
522 @@ -26,7 +26,9 @@
523  #include <sys/stat.h>
524  #include <unistd.h>
525  
526 +#if defined(__linux__) || defined(__sun__)
527  #include <crypt.h>
528 +#endif
529  
530  #include <glib.h>
531  #include <glib/gi18n.h>
532
533
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
537 @@ -26,8 +26,8 @@
538  cflags = [
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')),
545  ]
546  
547  libaccounts_generated = static_library(
548
549
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
553 @@ -41,6 +41,7 @@
554          "uucp",
555          "nobody",
556          "postgres",
557 +        "pgsql",
558          "pvm",
559          "rpm",
560          "nfsnobody",
561 @@ -50,6 +51,7 @@
562          "games",
563          "man",
564          "at",
565 +        "saned",
566          "gdm",
567          "gnome-initial-setup"
568  };
569
570
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
574 @@ -138,9 +138,14 @@
575  }
576  
577  void
578 +#ifdef HAVE_SHADOW_H
579  user_update_from_pwent (User          *user,
580                          struct passwd *pwent,
581                          struct spwd   *spent)
582 +#else
583 +user_update_from_pwent (User          *user,
584 +                        struct passwd *pwent)
585 +#endif
586  {
587          g_autofree gchar *real_name = NULL;
588          gboolean is_system_account;
589 @@ -199,8 +204,10 @@
590          accounts_user_set_shell (ACCOUNTS_USER (user), pwent->pw_shell);
591  
592          passwd = NULL;
593 +#ifdef HAVE_SHADOW_H
594          if (spent)
595                  passwd = spent->sp_pwdp;
596 +#endif
597  
598          if (passwd && passwd[0] == '!') {
599                  locked = TRUE;
600 @@ -218,6 +225,7 @@
601                  mode = PASSWORD_MODE_NONE;
602          }
603  
604 +#ifdef HAVE_SHADOW_H
605          if (spent) {
606                  if (spent->sp_lstchg == 0) {
607                          mode = PASSWORD_MODE_SET_AT_LOGIN;
608 @@ -231,6 +239,9 @@
609                  user->days_after_expiration_until_lock = spent->sp_inact;
610                  user->account_expiration_policy_known = TRUE;
611          }
612 +#else
613 +        user->expiration_time = pwent->pw_expire;
614 +#endif
615  
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)),
620                           name);
621  
622 -                argv[0] = "/usr/sbin/usermod";
623 -                argv[1] = "-c";
624 -                argv[2] = name;
625 -                argv[3] = "--";
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));
630 +                argv[3] = "-c";
631 +                argv[4] = name;
632                  argv[5] = NULL;
633  
634                  if (!spawn_with_login_uid (context, argv, &error)) {
635 @@ -913,11 +924,11 @@
636                           accounts_user_get_uid (ACCOUNTS_USER (user)),
637                           name);
638  
639 -                argv[0] = "/usr/sbin/usermod";
640 -                argv[1] = "-l";
641 -                argv[2] = name;
642 -                argv[3] = "--";
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));
647 +                argv[3] = "-n";
648 +                argv[4] = name;
649                  argv[5] = NULL;
650  
651                  if (!spawn_with_login_uid (context, argv, &error)) {
652 @@ -1312,7 +1323,7 @@
653  {
654          gchar *home_dir = data;
655          g_autoptr(GError) error = NULL;
656 -        const gchar *argv[7];
657 +        const gchar *argv[6];
658  
659          if (g_strcmp0 (accounts_user_get_home_directory (ACCOUNTS_USER (user)), home_dir) != 0) {
660                  sys_log (context,
661 @@ -1321,13 +1332,12 @@
662                           accounts_user_get_uid (ACCOUNTS_USER (user)),
663                           home_dir);
664  
665 -                argv[0] = "/usr/sbin/usermod";
666 -                argv[1] = "-m";
667 -                argv[2] = "-d";
668 -                argv[3] = home_dir;
669 -                argv[4] = "--";
670 -                argv[5] = accounts_user_get_user_name (ACCOUNTS_USER (user));
671 -                argv[6] = NULL;
672 +                argv[0] = "/usr/sbin/pw";
673 +                argv[1] = "-d";
674 +                argv[2] = home_dir;
675 +                argv[3] = "-n";
676 +                argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user));
677 +                argv[5] = NULL;
678  
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)),
683                           shell);
684  
685 -                argv[0] = "/usr/sbin/usermod";
686 -                argv[1] = "-s";
687 -                argv[2] = shell;
688 -                argv[3] = "--";
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));
693 +                argv[3] = "-s";
694 +                argv[4] = shell;
695                  argv[5] = NULL;
696  
697                  if (!spawn_with_login_uid (context, argv, &error)) {
698 @@ -1593,7 +1603,7 @@
699  {
700          gboolean locked = GPOINTER_TO_INT (data);
701          g_autoptr(GError) error = NULL;
702 -        const gchar *argv[5];
703 +        const gchar *argv[4];
704  
705          if (accounts_user_get_locked (ACCOUNTS_USER (user)) != locked) {
706                  sys_log (context,
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";
713 -                argv[2] = "--";
714 -                argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user));
715 -                argv[4] = NULL;
716 +                argv[0] = "/usr/sbin/pw";
717 +                argv[1] = locked ? "lock" : "unlock";
718 +                argv[2] = accounts_user_get_user_name (ACCOUNTS_USER (user));
719 +                argv[3] = NULL;
720  
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 @@
724  
725                  g_free (groups);
726  
727 -                argv[0] = "/usr/sbin/usermod";
728 -                argv[1] = "-G";
729 -                argv[2] = str->str;
730 -                argv[3] = "--";
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));
735 +                argv[3] = "-G";
736 +                argv[4] = str->str;
737                  argv[5] = NULL;
738  
739                  if (!spawn_with_login_uid (context, argv, &error)) {
740 @@ -1780,7 +1789,7 @@
741  {
742          PasswordMode mode = GPOINTER_TO_INT (data);
743          g_autoptr(GError) error = NULL;
744 -        const gchar *argv[6];
745 +        const gchar *argv[5];
746  
747          if (((PasswordMode) accounts_user_get_password_mode (ACCOUNTS_USER (user))) != mode) {
748                  sys_log (context,
749 @@ -1795,10 +1804,8 @@
750                      mode == PASSWORD_MODE_NONE) {
751  
752                          argv[0] = "/usr/bin/passwd";
753 -                        argv[1] = "-d";
754 -                        argv[2] = "--";
755 -                        argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user));
756 -                        argv[4] = NULL;
757 +                        argv[1] = accounts_user_get_user_name (ACCOUNTS_USER (user));
758 +                        argv[2] = NULL;
759  
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 @@
763                          }
764  
765                          if (mode == PASSWORD_MODE_SET_AT_LOGIN) {
766 -                                argv[0] = "/usr/bin/chage";
767 -                                argv[1] = "-d";
768 +                                argv[0] = "/usr/bin/chpass";
769 +                                argv[1] = "-e";
770                                  argv[2] = "0";
771 -                                argv[3] = "--";
772 -                                argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user));
773 -                                argv[5] = NULL;
774 +                                argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user));
775 +                                argv[4] = NULL;
776  
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);
781                  }
782                  else if (accounts_user_get_locked (ACCOUNTS_USER (user))) {
783 -                        argv[0] = "/usr/sbin/usermod";
784 -                        argv[1] = "-U";
785 -                        argv[2] = "--";
786 -                        argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user));
787 -                        argv[4] = NULL;
788 +                        argv[0] = "/usr/sbin/pw";
789 +                        argv[1] = "unlock";
790 +                        argv[2] = accounts_user_get_user_name (ACCOUNTS_USER (user));
791 +                        argv[3] = NULL;
792  
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 @@
796  {
797          gchar **strings = data;
798          g_autoptr(GError) error = NULL;
799 -        const gchar *argv[6];
800 +        const gchar *argv[5];
801  
802          sys_log (context,
803                   "set password and hint of user '%s' (%d)",
804 @@ -1905,12 +1910,11 @@
805  
806          g_object_freeze_notify (G_OBJECT (user));
807  
808 -        argv[0] = "/usr/sbin/usermod";
809 +        argv[0] = "/usr/sbin/chpass";
810          argv[1] = "-p";
811          argv[2] = strings[0];
812 -        argv[3] = "--";
813 -        argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user));
814 -        argv[5] = NULL;
815 +        argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user));
816 +        argv[4] = NULL;
817  
818          if (!spawn_with_login_uid (context, argv, &error)) {
819                  throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message);
820
821
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
825 @@ -22,7 +22,9 @@
826  
827  #include <sys/types.h>
828  #include <pwd.h>
829 +#ifdef HAVE_SHADOW_H
830  #include <shadow.h>
831 +#endif
832  
833  #include <glib.h>
834  #include <gio/gio.h>
835 @@ -54,9 +56,14 @@
836  User *         user_new                     (Daemon        *daemon,
837                                               uid_t          uid);
838  
839 +#ifdef HAVE_SHADOW_H
840  void           user_update_from_pwent       (User          *user,
841                                               struct passwd *pwent,
842                                               struct spwd   *spent);
843 +#else
844 +void           user_update_from_pwent       (User          *user,
845 +                                             struct passwd *pwent);
846 +#endif
847  void           user_update_from_keyfile     (User          *user,
848                                               GKeyFile      *keyfile);
849  void           user_update_local_account_property (User          *user,
850
851
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
856  static gboolean
857  wtmp_helper_start (void)
858  {
859 -#if defined(HAVE_SETUTXDB)
860 +#if defined(HAVE_SETUTXDB) && !defined(__DragonFly__)
861                  if (setutxdb (UTXDB_LOG, NULL) != 0) {
862                          return FALSE;
863                  }
864
865
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
869 @@ -23,7 +23,9 @@
870  
871  #include <glib.h>
872  #include <pwd.h>
873 +#ifdef HAVE_SHADOW_H
874  #include <shadow.h>
875 +#endif
876  
877  const gchar *           wtmp_helper_get_path_for_monitor                (void);
878  void                    wtmp_helper_update_login_frequencies            (GHashTable *users);
879
880
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
884 @@ -82,8 +82,11 @@
885  elif cc.has_header_symbol('paths.h', '_PATH_WTMPX')
886    config_h.set('PATH_WTMP', '_PATH_WTMPX')
887  else
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')
894 +  endif
895  endif
896  
897  # compiler flags
898