diff --git abrt.spec abrt.spec
index 3efaa981e4..d003e87664 100644
--- abrt.spec
+++ abrt.spec
@@ -57,7 +57,7 @@
 Summary: Automatic bug detection and reporting tool
 Name: abrt
 Version: 2.17.6
-Release: 4%{?dist}
+Release: 5%{?dist}
 License: GPL-2.0-or-later
 URL: https://abrt.readthedocs.org/
 Source: https://github.com/abrt/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
@@ -469,6 +469,13 @@ to the shell
 %global __scm_apply_git(qp:m:) %{__git} am --exclude doc/design --exclude doc/project/abrt.tex
 %autosetup -S git -p 0
 
+# Create a sysusers.d config file
+#uidgid pair 173:173 reserved in setup rhbz#670231
+%global abrt_gid_uid 173
+cat >abrt.sysusers.conf <<EOF
+u abrt %{abrt_gid_uid} - /etc/abrt -
+EOF
+
 %build
 ./autogen.sh
 
@@ -538,6 +545,8 @@ rm -vf %{buildroot}%{python3_sitelib}/__pycache__/abrt_exception_handler3_contai
 # After everything is installed, remove info dir
 rm -f %{buildroot}%{_infodir}/dir
 
+install -m0644 -D abrt.sysusers.conf %{buildroot}%{_sysusersdir}/abrt.conf
+
 %check
 make check|| {
     # find and print the logs of failed test
@@ -547,13 +556,6 @@ make check|| {
     exit 1
 }
 
-%pre
-#uidgid pair 173:173 reserved in setup rhbz#670231
-%define abrt_gid_uid 173
-getent group abrt >/dev/null || groupadd -f -g %{abrt_gid_uid} --system abrt
-getent passwd abrt >/dev/null || useradd --system -g abrt -u %{abrt_gid_uid} -d /etc/abrt -s /sbin/nologin abrt
-exit 0
-
 %post
 # $1 == 1 if install; 2 if upgrade
 %systemd_post abrtd.service
@@ -753,6 +755,7 @@ killall abrt-dbus >/dev/null 2>&1 || :
 %{_mandir}/man5/abrt-action-save-package-data.conf.5*
 %{_mandir}/man5/gpg_keys.conf.5*
 %{_mandir}/man8/abrtd.8*
+%{_sysusersdir}/abrt.conf
 
 %files libs
 %{_libdir}/libabrt.so.*
@@ -986,6 +989,9 @@ killall abrt-dbus >/dev/null 2>&1 || :
 %config(noreplace) %{_sysconfdir}/profile.d/abrt-console-notification.sh
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.17.6-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.17.6-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git avahi.spec avahi.spec
index 2a3f7af778..5041c941a8 100644
--- avahi.spec
+++ avahi.spec
@@ -60,7 +60,7 @@
 
 Name:             avahi
 Version:          0.9%{?rc:~%{rc}}
-Release:          2%{?dist}
+Release:          3%{?dist}
 Summary:          Local network service discovery
 License:          LGPL-2.1-or-later AND LGPL-2.0-or-later AND BSD-2-Clause-Views AND MIT
 URL:              http://avahi.org
@@ -69,7 +69,6 @@ Requires:         expat
 Requires:         libdaemon >= 0.11
 # For /usr/bin/dbus-send
 Requires(post):   dbus
-Requires(pre):    shadow-utils
 Requires(pre):    coreutils
 Requires:         %{name}-libs%{?_isa} = %{version}-%{release}
 BuildRequires:    automake
@@ -397,7 +396,6 @@ libraries.
 
 %package autoipd
 Summary:          Link-local IPv4 address automatic configuration daemon (IPv4LL)
-Requires(pre):    shadow-utils
 Requires:         %{name}-libs%{?_isa} = %{version}-%{release}
 
 %description autoipd
@@ -444,6 +442,12 @@ Requires:         %{name}-libs%{?_isa} = %{version}-%{release}
 
 rm -fv docs/INSTALL
 
+# Create a sysusers.d config file
+cat >avahi.sysusers.conf <<EOF
+u avahi 70 'Avahi mDNS/DNS-SD Stack' %{_localstatedir}/run/avahi-daemon -
+u avahi - 'Avahi mDNS/DNS-SD Stack' %{_localstatedir}/run/avahi-daemon -
+EOF
+
 
 %build
 ## why autogen?
@@ -555,6 +559,8 @@ rm -fv %{buildroot}%{_sysconfdir}/rc.d/init.d/avahi-dnsconfd
 
 %find_lang %{name}
 
+install -m0644 -D avahi.sysusers.conf %{buildroot}%{_sysusersdir}/avahi.conf
+
 
 %check
 %if %{with check}
@@ -570,17 +576,6 @@ rm -fv %{buildroot}%{_sysconfdir}/rc.d/init.d/avahi-dnsconfd
 %endif
 
 
-%pre
-getent group avahi >/dev/null || groupadd -f -g 70 -r avahi
-if ! getent passwd avahi > /dev/null ; then
-  if ! getent passwd 70 > /dev/null ; then
-    useradd -r -l -u 70 -g avahi -d %{_localstatedir}/run/avahi-daemon -s /sbin/nologin -c "Avahi mDNS/DNS-SD Stack" avahi
-  else
-    useradd -r -l -g avahi -d %{_localstatedir}/run/avahi-daemon -s /sbin/nologin -c "Avahi mDNS/DNS-SD Stack" avahi
-  fi
-fi
-exit 0
-
 %post
 %{?ldconfig}
 /usr/bin/dbus-send --system --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ReloadConfig >/dev/null 2>&1 || :
@@ -654,6 +649,7 @@ exit 0
 %{_datadir}/dbus-1/interfaces/*.xml
 %{_datadir}/dbus-1/system-services/org.freedesktop.Avahi.service
 %{_libdir}/libavahi-core.so.*
+%{_sysusersdir}/avahi.conf
 
 %files autoipd
 %{_sbindir}/avahi-autoipd
@@ -855,6 +851,9 @@ exit 0
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.9~rc2-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Michal Sekletar <msekleta@redhat.com> - 0.9~rc2-2
 - Fix previous changelog entry
 
diff --git bind9-next.spec bind9-next.spec
index b840b44cc6..ffb54beb14 100644
--- bind9-next.spec
+++ bind9-next.spec
@@ -96,7 +96,6 @@ Patch3: bind-9.21-unittest-isc_rwlock-s390x.patch
 
 %{?systemd_ordering}
 Requires:       coreutils
-Requires(pre):  shadow-utils
 Requires(post): shadow-utils
 Requires(post): glibc-common
 Requires(post): grep
@@ -314,6 +313,12 @@ done
 
 :;
 
+# Create a sysusers.d config file
+cat >bind9-next.sysusers.conf <<EOF
+g named %{bind_gid}
+u named %{bind_uid} 'Named' /var/named -
+EOF
+
 
 %build
 ## We use out of tree configure/build for export libs
@@ -608,12 +613,7 @@ install -m 644 %{SOURCE35} ${RPM_BUILD_ROOT}%{_tmpfilesdir}/named.conf
 mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/rwtab.d
 install -m 644 %{SOURCE43} ${RPM_BUILD_ROOT}%{_sysconfdir}/rwtab.d/named
 
-%pre
-if [ "$1" -eq 1 ]; then
-  /usr/sbin/groupadd -g %{bind_gid} -f -r named >/dev/null 2>&1 || :;
-  /usr/sbin/useradd  -u %{bind_uid} -r -N -M -g named -s /sbin/nologin -d /var/named -c Named named >/dev/null 2>&1 || :;
-fi;
-:;
+install -m0644 -D bind9-next.sysusers.conf %{buildroot}%{_sysusersdir}/bind9-next.conf
 
 %post
 %?ldconfig
@@ -711,6 +711,7 @@ fi;
 %config(noreplace) %attr(0644,root,named) %{_sysconfdir}/named.root.key
 %config(noreplace) %{_sysconfdir}/logrotate.d/named
 %{_tmpfilesdir}/named.conf
+%{_sysusersdir}/bind9-next.conf
 %{_sysconfdir}/rwtab.d/named
 %{_unitdir}/named.service
 %{_unitdir}/named-setup-rndc.service
diff --git bind.spec bind.spec
index a09cf38e42..babe34e15e 100644
--- bind.spec
+++ bind.spec
@@ -88,7 +88,7 @@ License:  MPL-2.0 AND ISC AND MIT AND BSD-3-Clause AND BSD-2-Clause
 # Before rebasing bind, ensure bind-dyndb-ldap is ready to be rebuild and use side-tag with it.
 # Updating just bind will cause freeipa-dns-server package to be uninstallable.
 Version:  9.18.32
-Release:  6%{?dist}
+Release:  7%{?dist}
 Epoch:    32
 Url:      https://www.isc.org/downloads/bind/
 #
@@ -137,7 +137,6 @@ Patch30: bind-9.20-nsupdate-tls-test.patch
 
 %{?systemd_ordering}
 Requires:       coreutils
-Requires(pre):  shadow-utils
 Requires(post): shadow-utils
 Requires(post): glibc-common
 Requires(post): grep
@@ -381,6 +380,12 @@ done
 
 :;
 
+# Create a sysusers.d config file
+cat >named.sysusers.conf <<EOF
+g named %{bind_gid}
+u named %{bind_uid} 'Named' /var/named -
+EOF
+
 
 %build
 ## We use out of tree configure/build for export libs
@@ -704,12 +709,7 @@ install -m 644 %{SOURCE35} ${RPM_BUILD_ROOT}%{_tmpfilesdir}/named.conf
 mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/rwtab.d
 install -m 644 %{SOURCE43} ${RPM_BUILD_ROOT}%{_sysconfdir}/rwtab.d/named
 
-%pre
-if [ "$1" -eq 1 ]; then
-  /usr/sbin/groupadd -g %{bind_gid} -f -r named >/dev/null 2>&1 || :;
-  /usr/sbin/useradd  -u %{bind_uid} -r -N -M -g named -s /sbin/nologin -d /var/named -c Named named >/dev/null 2>&1 || :;
-fi;
-:;
+install -m0644 -D named.sysusers.conf %{buildroot}%{_sysusersdir}/named.conf
 
 %post
 %?ldconfig
@@ -803,6 +803,7 @@ fi;
 %config(noreplace) %attr(0644,root,named) %{_sysconfdir}/named.root.key
 %config(noreplace) %{_sysconfdir}/logrotate.d/named
 %{_tmpfilesdir}/named.conf
+%{_sysusersdir}/named.conf
 %{_sysconfdir}/rwtab.d/named
 %{_unitdir}/named.service
 %{_unitdir}/named-setup-rndc.service
@@ -994,6 +995,9 @@ fi;
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 32:9.18.32-7
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Adam Williamson <awilliam@redhat.com> - 32:9.18.32-6
 - Rebuild again on mass rebuild tag so -4 doesn't override -5
 
diff --git bsd-games.spec bsd-games.spec
index 2a5f56aace..8f60146ef6 100644
--- bsd-games.spec
+++ bsd-games.spec
@@ -6,7 +6,7 @@
 Summary: Collection of text-based games
 Name: bsd-games
 Version: 2.17
-Release: 80%{?dist}
+Release: 81%{?dist}
 # Automatically converted from old format: BSD and BSD with advertising - review is highly recommended.
 License: LicenseRef-Callaway-BSD AND LicenseRef-Callaway-BSD-with-advertising
 URL: ftp://metalab.unc.edu/pub/Linux/games/
@@ -57,7 +57,6 @@ BuildRequires: libfl-static
 BuildRequires: flex-devel
 %endif
 BuildRequires: bison
-Requires(pre): shadow-utils
 
 %description
 Bsd-games includes adventure, arithmetic, atc, backgammon, battlestar,
@@ -99,6 +98,13 @@ popd
 %patch -P26 -p1 -b .atc
 %patch -P27 -p1 -b .fread_chk
 
+# Create a sysusers.d config file
+cat >bsd-games.sysusers.conf <<EOF
+g gamehack -
+g gamesail -
+g gamephant -
+EOF
+
 %build
 # We include a templatized configuration settings file to set
 # reasonable defaults, and to tell the configure script not to
@@ -153,11 +159,7 @@ install -p -m 0644 acronyms* $RPM_BUILD_ROOT%{_datadir}/misc/
 mv $RPM_BUILD_ROOT%{_datadir}/misc/acronyms-o.real $RPM_BUILD_ROOT%{_datadir}/misc/acronyms-o
 popd
 
-%pre
-for group in gamehack gamesail gamephant; do
-    getent group $group >/dev/null || groupadd -r $group
-done
-exit 0
+install -m0644 -D bsd-games.sysusers.conf %{buildroot}%{_sysusersdir}/bsd-games.conf
 
 %files
 %{_bindir}/adventure
@@ -224,8 +226,12 @@ exit 0
 %config(noreplace) %attr(664,root,games) %{_var}/games/snakerawscores
 %config(noreplace) %attr(664,root,games) %{_var}/games/bsd-fbg.scores
 %doc AUTHORS COPYING ChangeLog ChangeLog.0 THANKS YEAR2000 README.hunt trek/USD.doc/trek.me
+%{_sysusersdir}/bsd-games.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.17-81
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.17-80
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git bzflag.spec bzflag.spec
index 4bb7245ec4..d965996113 100644
--- bzflag.spec
+++ bzflag.spec
@@ -1,7 +1,7 @@
 Summary: 3D multi-player tank battle game
 Name: bzflag
 Version: 2.4.26
-Release: 7%{?dist}
+Release: 8%{?dist}
 # Automatically converted from old format: LGPLv2 - review is highly recommended.
 License: LicenseRef-Callaway-LGPLv2
 URL: http://bzflag.org
@@ -27,7 +27,6 @@ BuildRequires: zlib-devel
 BuildRequires: sed
 BuildRequires: systemd
 Requires: opengl-games-utils
-Requires(pre): shadow-utils
 
 %description
 BZFlag is a 3D multi-player tank battle game  that  allows users to play
@@ -49,6 +48,11 @@ This package contains sample world maps for bzflag.
 %prep
 %setup -q -n %{name}-%{version}
 
+# Create a sysusers.d config file
+cat >bzflag.sysusers.conf <<EOF
+u bzflag - 'BZFlag game server' %{_datadir}/bzflag -
+EOF
+
 %build
 # Use PIE because bzflag/bzfs are networked server applications
 CFLAGS='-fPIC %{optflags} -fno-strict-aliasing' \
@@ -112,19 +116,7 @@ EOF
 
 install -Dp -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/bzflag
 install -Dp -m 0644 %{SOURCE3} %{buildroot}%{_unitdir}/bzflag.service
-
-%pre
-getent group bzflag >/dev/null || groupadd -r bzflag
-if getent passwd bzflag >/dev/null; then
-    # provide a more meaningful GECOS field than the one introduced in 2.4.6-3
-    if [ "x`getent passwd bzflag | cut -d: -f5`" = 'xUseful comment about the purpose of this account' ]; then
-        usermod -c 'BZFlag game server' bzflag
-    fi
-else
-    useradd -r -g bzflag -d %{_datadir}/bzflag -s /sbin/nologin \
-    -c 'BZFlag game server' bzflag
-fi
-exit 0
+install -D -m0644 bzflag.sysusers.conf %{buildroot}%{_sysusersdir}/bzflag.conf
 
 %post
 %systemd_post bzflag.service
@@ -153,11 +145,15 @@ exit 0
 %{_mandir}/man*/*
 %{_sysconfdir}/sysconfig/bzflag
 %{_unitdir}/bzflag.service
+%{_sysusersdir}/bzflag.conf
 
 %files maps-sample
 %{_datadir}/bzflag/maps/*
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.4.26-8
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.26-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git ceph.spec ceph.spec
index 986684a30e..b0ec2e7e4d 100644
--- ceph.spec
+++ ceph.spec
@@ -185,7 +185,7 @@
 #################################################################################
 Name:		ceph
 Version:	19.2.0
-Release:	9%{?dist}
+Release:	10%{?dist}
 %if 0%{?fedora} || 0%{?rhel}
 Epoch:		2
 %endif
@@ -1390,6 +1390,11 @@ This package provides a Ceph hardware monitoring agent.
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >ceph.sysusers.conf <<EOF
+u cephadm - 'cephadm user for mgr/cephadm' %{_sharedstatedir}/cephadm /bin/bash
+EOF
+
 %build
 
 %if 0%{with cephfs_java}
@@ -1587,6 +1592,8 @@ install -m 0644 -D COPYING %{buildroot}%{_docdir}/ceph/COPYING
 install -m 0644 -D etc/sysctl/90-ceph-osd.conf %{buildroot}%{_sysctldir}/90-ceph-osd.conf
 install -m 0755 -D src/tools/rbd_nbd/rbd-nbd_quiesce %{buildroot}%{_libexecdir}/rbd-nbd/rbd-nbd_quiesce
 
+install -m 0644 -D ceph.sysusers.conf %{buildroot}%{_sysusersdir}/ceph.conf
+
 mkdir -p %{buildroot}%{_sharedstatedir}/cephadm
 chmod 0700 %{buildroot}%{_sharedstatedir}/cephadm
 mkdir -p %{buildroot}%{_sharedstatedir}/cephadm/.ssh
@@ -1735,22 +1742,13 @@ fi
 %{?ldconfig}
 %systemd_postun ceph.target
 
-%pre -n cephadm
-getent group cephadm >/dev/null || groupadd -r cephadm
-getent passwd cephadm >/dev/null || useradd -r -g cephadm -s /bin/bash -c "cephadm user for mgr/cephadm" -d %{_sharedstatedir}/cephadm cephadm
-exit 0
-
-%if ! 0%{?suse_version}
-%postun -n cephadm
-[ $1 -ne 0 ] || userdel cephadm || :
-%endif
-
 %files -n cephadm
 %{_exec_prefix}/sbin/cephadm
 %{_mandir}/man8/cephadm.8*
 %attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm
 %attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm/.ssh
 %config(noreplace) %attr(0600,cephadm,cephadm) %{_sharedstatedir}/cephadm/.ssh/authorized_keys
+%{_sysusersdir}/ceph.conf
 
 %files common
 %dir %{_docdir}/ceph
@@ -2720,6 +2718,9 @@ exit 0
 %{python3_sitelib}/ceph_node_proxy-*
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2:19.2.0-10
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2:19.2.0-9
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git clamav.spec clamav.spec
index 5dcbd9d438..be593b7aac 100644
--- clamav.spec
+++ clamav.spec
@@ -26,7 +26,7 @@
 Summary:    End-user tools for the Clam Antivirus scanner
 Name:       clamav
 Version:    1.4.1
-Release:    2%{?dist}
+Release:    3%{?dist}
 License:    %{?with_unrar:proprietary}%{!?with_unrar:GPL-2.0-only}
 URL:        https://www.clamav.net/
 %if %{with unrar}
@@ -161,7 +161,6 @@ Summary:    Filesystem structure for clamav
 # Prevent version mix
 Conflicts:  %{name} < %{version}-%{release}
 Conflicts:  %{name} > %{version}-%{release}
-Requires(pre):  shadow-utils
 BuildArch:  noarch
 
 %description filesystem
@@ -295,7 +294,6 @@ Requires:   data(clamav)
 Requires:   clamav-filesystem = %{version}-%{release}
 Requires:   clamav-lib        = %{version}-%{release}
 Requires:   coreutils
-Requires(pre):  shadow-utils
 # This is still used by clamsmtp and exim-clamav
 Provides: clamav-server = %{version}-%{release}
 Provides: clamav-scanner-systemd = %{version}-%{release}
@@ -316,7 +314,6 @@ Summary:    Milter module for the Clam Antivirus scanner
 #Requires: clamd = %%{version}-%%{release}
 #Requires: /usr/sbin/sendmail
 Requires:   clamav-filesystem = %{version}-%{release}
-Requires(pre):  shadow-utils
 Provides: clamav-milter-systemd = %{version}-%{release}
 Obsoletes: clamav-milter-systemd < %{version}-%{release}
 
@@ -365,6 +362,20 @@ cd libclamav_rust
 %cargo_generate_buildrequires
 %endif
 
+# Create sysusers.d config files
+cat >clamav.sysusers.conf <<EOF
+g virusgroup -
+u clamupdate - 'Clamav database update user' %{homedir} -
+m clamupdate virusgroup
+EOF
+cat >clamd.sysusers.conf <<EOF
+u clamscan - 'Clamav scanner user' / -
+m clamscan virusgroup
+EOF
+cat >clamav-milter.sysusers.conf <<EOF
+u clamilt - 'Clamav milter user' %{_rundir}/clamav-milter -
+m clamilt virusgroup
+EOF
 
 %build
 # add -Wl,--as-needed if not exist
@@ -483,6 +494,9 @@ install -m 0644 %SOURCE1 %{buildroot}%{_includedir}/clamav-types.h
 # TODO: Evaluate using upstream's unit with clamav-daemon.socket
 rm %{buildroot}%{_unitdir}/clamav-daemon.*
 
+install -m0644 -D clamav.sysusers.conf %{buildroot}%{_sysusersdir}/clamav.conf
+install -m0644 -D clamd.sysusers.conf %{buildroot}%{_sysusersdir}/clamd.conf
+
 
 %check
 %ifarch s390x
@@ -516,25 +530,6 @@ do
     [ -f $f -a $f -nt $cvd ] && rm -f $cvd || :
 done
 
-
-%pre filesystem
-getent group %{updateuser} >/dev/null || groupadd -r %{updateuser}
-getent passwd %{updateuser} >/dev/null || \
-    useradd -r -g %{updateuser} -d %{homedir} -s /sbin/nologin \
-    -c "Clamav database update user" %{updateuser}
-getent group virusgroup >/dev/null || groupadd -r virusgroup
-usermod %{updateuser} -a -G virusgroup
-exit 0
-
-
-%pre -n clamd
-getent group %{scanuser} >/dev/null || groupadd -r %{scanuser}
-getent passwd %{scanuser} >/dev/null || \
-    useradd -r -g %{scanuser} -d / -s /sbin/nologin \
-    -c "Clamav scanner user" %{scanuser}
-usermod %{scanuser} -a -G virusgroup
-exit 0
-
 %post -n clamd
 # Point to the new service unit
 [ -L /etc/systemd/system/multi-user.target.wants/clamd@scan.service ] &&
@@ -553,14 +548,6 @@ exit 0
 # milter and clamd communicate through local sockets
 /usr/sbin/groupmems -g %{scanuser} -a %{milteruser} &>/dev/null || :
 
-%pre milter
-getent group %{milteruser} >/dev/null || groupadd -r %{milteruser}
-getent passwd %{milteruser} >/dev/null || \
-    useradd -r -g %{milteruser} -d %{_rundir}/clamav-milter -s /sbin/nologin \
-    -c "Clamav Milter user" %{milteruser}
-usermod %{milteruser} -a -G virusgroup
-exit 0
-
 %post milter
 %systemd_post clamav-milter.service
 
@@ -627,6 +614,7 @@ exit 0
 %dir %{_sysconfdir}/clamd.d
 # Used by both clamd, clamdscan, and clamonacc
 %config(noreplace) %{_sysconfdir}/clamd.d/scan.conf
+%{_sysusersdir}/clamav.conf
 
 
 %files data
@@ -666,6 +654,7 @@ exit 0
 %{_sbindir}/clamd
 %{_unitdir}/clamd@.service
 %{_tmpfilesdir}/clamd.scan.conf
+%{_sysusersdir}/clamd.conf
 
 
 %files milter
@@ -679,6 +668,9 @@ exit 0
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.4.1-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.1-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git dogtag-pki.spec dogtag-pki.spec
index ad0237ee2d..695dec3f57 100644
--- dogtag-pki.spec
+++ dogtag-pki.spec
@@ -30,7 +30,7 @@ URL:              https://www.dogtagpki.org
 # The entire source code is GPLv2 except for 'pki-tps' which is LGPLv2
 License:          GPL-2.0-only AND LGPL-2.0-only
 Version:          %{major_version}.%{minor_version}.%{update_version}
-Release:          %{release_number}%{?phase:.}%{?phase}%{?timestamp:.}%{?timestamp}%{?commit_id:.}%{?commit_id}%{?dist}
+Release:          %{release_number}%{?phase:.}%{?phase}%{?timestamp:.}%{?timestamp}%{?commit_id:.}%{?commit_id}%{?dist}.1
 
 # To create a tarball from a version tag:
 # $ git archive \
@@ -638,7 +638,6 @@ Requires:         mvn(org.dogtagpki.jss:jss-tomcat) >= 5.5.0
 Requires:         systemd
 Requires(post):   systemd-units
 Requires(postun): systemd-units
-Requires(pre):    shadow-utils
 
 # pki-healthcheck depends on the following library
 %if 0%{?rhel}
@@ -1196,6 +1195,12 @@ fi
 %mvn_package org.dogtagpki.pki:pki-console        pki-console
 %endif
 
+# Create a sysusers.d config file
+cat >dogtag-pki.sysusers.conf <<EOF
+g pkiuser %{pki_gid}
+u pkiuser %{pki_uid} 'Certificate System' %{pki_homedir} -
+EOF
+
 ################################################################################
 %build
 ################################################################################
@@ -1538,16 +1543,9 @@ xmlstarlet edit --inplace \
 
 %if %{with server}
 
+install -m0644 -D dogtag-pki.sysusers.conf %{buildroot}%{_sysusersdir}/dogtag-pki.conf
+
 %pre -n %{product_id}-server
-
-# create PKI group if it doesn't exist
-getent group %{pki_groupname} >/dev/null || groupadd -f -g %{pki_gid} -r %{pki_groupname}
-
-# create PKI user if it doesn't exist
-if ! getent passwd %{pki_username} >/dev/null ; then
-    useradd -r -u %{pki_uid} -g %{pki_groupname} -d %{pki_homedir} -s /sbin/nologin -c "Certificate System" %{pki_username}
-fi
-
 # create PKI home directory if it doesn't exist
 if [ ! -d %{pki_homedir} ] ; then
     cp -ar /etc/skel %{pki_homedir}
@@ -1817,6 +1815,7 @@ fi
 %{_mandir}/man8/pki-healthcheck.8.gz
 %{_datadir}/pki/setup/
 %{_datadir}/pki/server/
+%{_sysusersdir}/dogtag-pki.conf
 
 %if %{without maven}
 %{_datadir}/java/pki/pki-server.jar
@@ -2008,6 +2007,9 @@ fi
 
 ################################################################################
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 11.6.0-0.3.alpha1.1
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Adam Williamson <awilliam@redhat.com> - 11.6.0-0.3.alpha1
 - Rebuild on mass rebuild tag to make that process happy
 
diff --git gnokii.spec gnokii.spec
index a1b4a97c5e..e824fd3e41 100644
--- gnokii.spec
+++ gnokii.spec
@@ -3,7 +3,7 @@
 
 Name:           gnokii
 Version:        0.6.31
-Release:        44%{?dist}
+Release:        45%{?dist}
 Summary:        Linux/Unix tool suite for various mobile phones
 
 License:        GPL-2.0-or-later
@@ -53,7 +53,6 @@ BuildRequires:  readline-devel
 BuildRequires:  perl(XML::Parser) intltool
 BuildRequires:  make
 BuildRequires:  chrpath
-Requires(pre):  %{_sbindir}/groupadd
 
 %description
 Gnokii provides tools and a user space driver for use with mobile
@@ -74,7 +73,6 @@ from/in computer and more other features.
 %package        smsd
 Summary:        Gnokii SMS daemon
 Requires:       %{name}%{?_isa} = %{version}-%{release}
-Requires(pre):  %{_sbindir}/useradd
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
@@ -125,6 +123,14 @@ Requires:       pkgconfig
 install -pm 644 %{SOURCE5} smsd2mail.sh
 install -pm 644 %{SOURCE6} README.smsd2mail
 
+# Create sysusers.d config files
+cat >gnokii.sysusers.conf <<EOF
+g gnokii -
+EOF
+cat >gnokii-smsd.sysusers.conf <<EOF
+u gnokii - "Gnokii system user" / -
+EOF
+
 %build
 %configure --enable-security --disable-static --disable-rpath
 sed -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' -i libtool
@@ -179,15 +185,11 @@ mv $RPM_BUILD_ROOT%{_datadir}/doc/gnokii/ temporary-gnokii-docs/
 # Use last resort to remove -rpath usage that can't be removed from Makefiles
 chrpath --delete $RPM_BUILD_ROOT%{_bindir}/{gnokii,gnokiid,gnokii-smsd,xgnokii}
 
+install -m0644 -D gnokii.sysusers.conf %{buildroot}%{_sysusersdir}/gnokii.conf
+install -m0644 -D gnokii-smsd.sysusers.conf %{buildroot}%{_sysusersdir}/gnokii-smsd.conf
+
 %find_lang %{name}
 
-%pre
-getent group %{name} > /dev/null || %{_sbindir}/groupadd -r %{name}
-
-%pre smsd
-getent passwd %{name} > /dev/null || %{_sbindir}/useradd -r -M -d / \
-  -g %{name} -s /sbin/nologin -c "Gnokii system user" %{name}
-
 %ldconfig_scriptlets
 
 %post smsd
@@ -212,6 +214,7 @@ getent passwd %{name} > /dev/null || %{_sbindir}/useradd -r -M -d / \
 %{_mandir}/man1/sendsms.1*
 %{_mandir}/man8/gnokiid.8*
 %{_mandir}/man8/mgnokiidev.8*
+%{_sysusersdir}/gnokii.conf
 
 %files -n xgnokii
 %doc xgnokii/ChangeLog xgnokii/README.vcard
@@ -229,6 +232,7 @@ getent passwd %{name} > /dev/null || %{_sbindir}/useradd -r -M -d / \
 %{_mandir}/man8/gnokii-smsd.8*
 %dir %{_libdir}/smsd/
 %{_libdir}/smsd/libsmsd_file.so
+%{_sysusersdir}/gnokii-smsd.conf
 
 %files smsd-pgsql
 %doc smsd/sms.tables.pq.sql
@@ -249,6 +253,9 @@ getent passwd %{name} > /dev/null || %{_sbindir}/useradd -r -M -d / \
 %{_libdir}/pkgconfig/xgnokii.pc
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.6.31-45
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.31-44
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git groonga.spec groonga.spec
index a9fca76061..9f1189c7f4 100644
--- groonga.spec
+++ groonga.spec
@@ -67,7 +67,6 @@ This package contains libraries and header files for Groonga.
 Summary:        Common files for the Groonga server and the Groonga HTTP server
 License:        LGPL-2.1-only
 Requires:       %{name}%{?isa} = %{version}-%{release}
-Requires(pre):  shadow-utils
 
 %description    server-common
 This package provides common settings for server use.
@@ -76,7 +75,6 @@ This package provides common settings for server use.
 Summary:        Groonga GQTP server
 License:        LGPL-2.1-only
 Requires:       %{name}-server-common%{?isa} = %{version}-%{release}
-Requires(pre):  shadow-utils
 Requires(post): systemd
 Requires(preun):systemd
 
@@ -87,7 +85,6 @@ This package contains the Groonga GQTP server.
 Summary:        Groonga HTTP server
 License:        LGPL-2.1-only AND BSD-3-Clause
 Requires:       %{name}-server-common%{?isa} = %{version}-%{release}
-Requires(pre):  shadow-utils
 Requires(post): systemd
 Requires(preun):systemd
 
@@ -162,6 +159,11 @@ rm vendor/*.tar.gz
 rm vendor/*.rb
 rm -rf vendor/{lz4,rapidjson-1.1.0}
 
+# Create a sysusers.d config file
+cat >groonga.sysusers.conf <<EOF
+u groonga - 'groonga' %{_localstatedir}/lib/groonga -
+EOF
+
 %build
 %cmake \
   -GNinja \
@@ -233,15 +235,13 @@ cat <<EOC > %{buildroot}%{_sysconfdir}/munin/plugin-conf.d/groonga
   env.gqtp_query_log_path %{_localstatedir}/log/groonga/query-gqtp.log
 EOC
 
+install -m0644 -D groonga.sysusers.conf %{buildroot}%{_sysusersdir}/groonga.conf
+
 %post munin-plugins
 %{_sbindir}/munin-node-configure --shell --remove-also | grep -e 'groonga_' | sh
 %systemd_postun munin-node
 
 %pre server-common
-getent group groonga >/dev/null || groupadd -r groonga
-getent passwd groonga >/dev/null || \
-       useradd -r -g groonga -d %{_localstatedir}/lib/groonga -s /sbin/nologin \
-    -c 'groonga' groonga
 if [ $1 = 1 ] ; then
   mkdir -p %{_localstatedir}/log/groonga
   mkdir -p %{_localstatedir}/lib/groonga/db
@@ -316,6 +316,7 @@ fi
 
 %files server-common
 %config(noreplace) %{_sysconfdir}/tmpfiles.d/groonga.conf
+%{_sysusersdir}/groonga.conf
 
 %files server-gqtp
 %config(noreplace) %{_sysconfdir}/groonga/
diff --git jetty.spec jetty.spec
index 8a785fd843..aa09add3e1 100644
--- jetty.spec
+++ jetty.spec
@@ -50,7 +50,7 @@
 
 Name:           jetty
 Version:        9.4.40
-Release:        14%{?dist}
+Release:        15%{?dist}
 Summary:        Java Webserver and Servlet Container
 
 # Jetty is dual licensed under both ASL 2.0 and EPL 1.0, see NOTICE.txt
@@ -192,7 +192,6 @@ Requires:       %{name}-http2-hpack = %{version}-%{release}
 Requires:       %{name}-http2-http-client-transport = %{version}-%{release}
 Requires:       %{name}-http2-server = %{version}-%{release}
 
-Requires(pre):    shadow-utils
 %{?systemd_ordering}
 
 
@@ -740,6 +739,11 @@ sed -i '/<SystemProperty name="jetty.state"/d' \
 
 %endif
 
+# Create a sysusers.d config file
+cat >jetty.sysusers.conf <<EOF
+u jetty %jtuid 'Jetty web server' %homedir -
+EOF
+
 %build
 %mvn_package :jetty-home __noinstall
 %mvn_package :jetty-distribution __noinstall
@@ -867,19 +871,7 @@ cp -p %{SOURCE1} %{buildroot}%{homedir}/bin/jetty.sh
 
 # NOTE: %if %{without jp_minimal} still in effect
 
-%pre
-# Add the "jetty" user and group
-getent group %username >/dev/null || groupadd -f -g %jtuid -r %username
-if ! getent passwd %username >/dev/null ; then
-    if ! getent passwd %jtuid >/dev/null ; then
-      useradd -r -u %jtuid -g %username -d %homedir -s /sbin/nologin \
-      -c "Jetty web server" %username
-    else
-      useradd -r -g %username -d %homedir -s /sbin/nologin \
-      -c "Jetty web server" %username
-    fi
-fi
-exit 0
+install -m0644 -D jetty.sysusers.conf %{buildroot}%{_sysusersdir}/jetty.conf
 
 %post
 %systemd_post jetty.service
@@ -912,6 +904,7 @@ exit 0
 %files
 # Empty metapackage in minimal mode
 %endif
+%{_sysusersdir}/jetty.conf
 
 %if %{without jp_minimal}
 %files -f .mfiles
@@ -973,6 +966,9 @@ exit 0
 %license LICENSE NOTICE.txt LICENSE-MIT
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 9.4.40-15
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 9.4.40-14
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git knot.spec knot.spec
index 2b60057e47..75ed60f004 100644
--- knot.spec
+++ knot.spec
@@ -8,7 +8,7 @@
 Summary:	High-performance authoritative DNS server
 Name:		knot
 Version:	3.4.4
-Release:	1%{?dist}
+Release:	2%{?dist}
 License:	GPL-3.0-or-later
 URL:		https://www.knot-dns.cz
 Source0:	https://secure.nic.cz/files/knot-dns/%{name}-%{version}.tar.xz
@@ -148,6 +148,11 @@ gpg2 --verify %{SOURCE1} %{SOURCE0}
 %endif
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >knot.sysusers.conf <<EOF
+u knot - 'Knot DNS server' %{_sharedstatedir}/knot -
+EOF
+
 %build
 # disable debug code (causes unused warnings)
 CFLAGS="%{optflags} -DNDEBUG -Wno-unused"
@@ -205,14 +210,12 @@ install -d -m 0770 -D %{buildroot}%{_sharedstatedir}/knot
 # remove libarchive files
 find %{buildroot} -type f -name "*.la" -delete -print
 
+install -m0644 -D knot.sysusers.conf %{buildroot}%{_sysusersdir}/knot.conf
+
 %check
 V=1 make check
 
 %pre
-getent group knot >/dev/null || groupadd -r knot
-getent passwd knot >/dev/null || \
-  useradd -r -g knot -d %{_sharedstatedir}/knot -s /sbin/nologin \
-  -c "Knot DNS server" knot
 %if 0%{?suse_version}
 %service_add_pre knot.service
 %endif
@@ -273,6 +276,7 @@ getent passwd knot >/dev/null || \
 %{_mandir}/man8/knotc.*
 %{_mandir}/man8/knotd.*
 %ghost %attr(770,root,knot) %dir %{_rundir}/knot
+%{_sysusersdir}/knot.conf
 
 %files utils
 %{_bindir}/kdig
@@ -324,6 +328,9 @@ getent passwd knot >/dev/null || \
 %doc %{_pkgdocdir}/html
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.4.4-2
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 23 2025 Jakub Ružička <jakub.ruzicka@nic.cz> - 3.4.4-1
 - Update to 3.4.4
 
diff --git openarc.spec openarc.spec
index 7869aebb2e..d3de446bac 100644
--- openarc.spec
+++ openarc.spec
@@ -4,7 +4,7 @@
 %global systemd_runtimedir (0%{?fedora} >= 21) || (0%{?rhel} >= 8)
 %global tmpfiles ((0%{?fedora} >= 15) || (0%{?rhel} == 7)) && !%{systemd_runtimedir}
 
-%global baserelease 21
+%global baserelease 22
 %global pre_rel Beta3
 
 Summary: An open source library and milter for providing ARC service
@@ -39,7 +39,6 @@ BuildRequires: automake
 
 Requires: lib%{name}%{?_isa} = %{version}-%{release}
 Requires: libopenarc = %{version}-%{release}
-Requires(pre): shadow-utils
 %if %systemd
 # Required for systemd
 %{?systemd_requires}
@@ -74,6 +73,13 @@ required for developing applications against libopenarc.
 %prep
 %autosetup -n OpenARC-rel-openarc-1-0-0-Beta3 -p1
 
+# Previously, a non-system group was created :(, sysusers does not support this
+# Create a sysusers.d config file
+cat >openarc.sysusers.conf <<EOF
+u openarc - - %{_localstatedir}/lib/%{name} -
+m openarc mail
+EOF
+
 
 %build
 autoreconf --install
@@ -157,19 +163,7 @@ D %{_rundir}/%{name} 0750 %{name} %{name} -
 EOF
 %endif
 
-%pre
-if ! getent passwd %{name} >/dev/null 2>&1; then
-    %{_sbindir}/useradd -M -d %{_localstatedir}/lib/%{name} -r -s /sbin/nologin %{name}
-    if ! getent group %{name} >/dev/null; then
-        %{_sbindir}/groupadd %{name}
-        %{_sbindir}/usermod -g %{name} %{name}
-    fi
-    if getent group mail >/dev/null; then
-        %{_sbindir}/usermod -G mail %{name}
-    fi
-fi
-exit 0
-
+install -m0644 -D openarc.sysusers.conf %{buildroot}%{_sysusersdir}/openarc.conf
 
 %post
 
@@ -219,6 +213,7 @@ exit 0
 %endif
 %{_mandir}/*/*
 %{_sbindir}/*
+%{_sysusersdir}/openarc.conf
 
 
 %files -n libopenarc
@@ -232,6 +227,9 @@ exit 0
 %{_libdir}/pkgconfig/*.pc
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.0.0-0.22.Beta3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.0-0.21.Beta3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git pcp.spec pcp.spec
index 11053234d9..4c18f5e662 100644
--- pcp.spec
+++ pcp.spec
@@ -1,6 +1,6 @@
 Name:    pcp
 Version: 6.3.2
-Release: 4%{?dist}
+Release: 5%{?dist}
 Summary: System-level performance monitoring and performance management
 License: GPL-2.0-or-later AND LGPL-2.1-or-later AND CC-BY-3.0
 URL:     https://pcp.io
@@ -2481,6 +2481,11 @@ updated policy package.
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >pcp.sysusers.conf <<EOF
+u pcpqa - 'PCP Quality Assurance' %{_testsdir} /bin/bash
+EOF
+
 %build
 # the buildsubdir macro gets defined in %%setup and is apparently only available in the next step (i.e. the %%build step)
 %global __strip %{_builddir}/%{?buildsubdir}/build/rpm/custom-strip
@@ -2877,11 +2882,13 @@ do \
 done
 %endif
 
+install -m0644 -D pcp.sysusers.conf %{buildroot}%{_sysusersdir}/pcp.conf
+
 %pre testsuite
 %if !%{disable_selinux}
 %selinux_relabel_pre -s targeted
 %endif
-%if 0%{?fedora} >= 32 || 0%{?rhel} >= 9
+%if ( 0%{?fedora} && 0%{fedora} < 42 ) || 0%{?rhel} >= 9
 echo u pcpqa - \"PCP Quality Assurance\" %{_testsdir} /bin/bash | \
   systemd-sysusers --replace=/usr/lib/sysusers.d/pcp-testsuite.conf -
 %else
@@ -3330,6 +3337,7 @@ fi
 %endif
 
 %files testsuite -f pcp-testsuite-files.rpm
+%{_sysusersdir}/pcp.conf
 
 %if !%{disable_infiniband}
 %files pmda-infiniband -f pcp-pmda-infiniband-files.rpm
@@ -3605,6 +3613,9 @@ fi
 %files zeroconf -f pcp-zeroconf-files.rpm
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 6.3.2-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 6.3.2-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git pulseaudio.spec pulseaudio.spec
index 489cec30e5..a41640572b 100644
--- pulseaudio.spec
+++ pulseaudio.spec
@@ -34,7 +34,7 @@
 Name:           pulseaudio
 Summary:        Improved Linux Sound Server
 Version:        %{pa_major}%{?pa_minor:.%{pa_minor}}
-Release:        5%{?snap:.%{snap}git%{shortcommit}}%{?dist}
+Release:        6%{?snap:.%{snap}git%{shortcommit}}%{?dist}
 License:        LGPL-2.1-or-later
 URL:            http://www.freedesktop.org/wiki/Software/PulseAudio
 %if 0%{?gitrel}
@@ -126,7 +126,6 @@ BuildRequires:  pkgconfig(gstreamer-rtp-1.0) >= 1.16.0
 
 # retired along with -libs-zeroconf, add Obsoletes here for lack of anything better
 Obsoletes:      padevchooser < 1.0
-Requires(pre):  shadow-utils
 Requires:       %{name}-libs%{?_isa} = %{version}-%{release}
 Requires:       rtkit
 
@@ -278,6 +277,13 @@ sed -i.PACKAGE_VERSION -e "s|^PACKAGE_VERSION=.*|PACKAGE_VERSION=\'%{version}\'|
 #endif
 %endif
 
+# Create a sysusers.d config file
+cat >pulseaudio.sysusers.conf <<EOF
+g pulse-access -
+g pulse-rt -
+u pulse 171 'PulseAudio System Daemon' %{_localstatedir}/run/pulse -
+EOF
+
 
 %build
 %meson \
@@ -352,6 +358,8 @@ rm -fv $RPM_BUILD_ROOT%{_bindir}/pa-info
 
 %find_lang %{name}
 
+install -m0644 -D pulseaudio.sysusers.conf %{buildroot}%{_sysusersdir}/pulseaudio.conf
+
 
 %check
 %if 0%{?tests}
@@ -374,19 +382,6 @@ fi
 
 %if 0%{?enable_daemon}
 
-%pre
-getent group pulse-access >/dev/null || groupadd -r pulse-access
-getent group pulse-rt >/dev/null || groupadd -r pulse-rt
-getent group pulse >/dev/null || groupadd -f -g 171 -r pulse
-if ! getent passwd pulse >/dev/null ; then
-    if ! getent passwd 171 >/dev/null ; then
-      useradd -r -u 171 -g pulse -d %{_localstatedir}/run/pulse -s /sbin/nologin -c "PulseAudio System Daemon" pulse
-    else
-      useradd -r -g pulse -d %{_localstatedir}/run/pulse -s /sbin/nologin -c "PulseAudio System Daemon" pulse
-    fi
-fi
-exit 0
-
 %posttrans
 # handle renamed module-cork-music-on-phone => module-role-cork
 (grep '^load-module module-cork-music-on-phone$' %{_sysconfdir}/pulse/default.pa > /dev/null && \
@@ -529,6 +524,7 @@ systemctl --no-reload preset --global pulseaudio.socket >/dev/null 2>&1 || :
 %dir %{_datadir}/zsh/
 %dir %{_datadir}/zsh/site-functions/
 %{_datadir}/zsh/site-functions/_pulseaudio
+%{_sysusersdir}/pulseaudio.conf
 
 %files qpaeq
 %{_bindir}/qpaeq
@@ -668,6 +664,9 @@ systemctl --no-reload preset --global pulseaudio.socket >/dev/null 2>&1 || :
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 17.0-6
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 17.0-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git puppet.spec puppet.spec
index fa29cbacb2..d9c081c86f 100644
--- puppet.spec
+++ puppet.spec
@@ -4,7 +4,7 @@
 
 Name:           puppet
 Version:        8.6.0
-Release:        3%{?dist}
+Release:        4%{?dist}
 Summary:        Network tool for managing many disparate systems
 License:        Apache-2.0
 URL:            https://puppet.com
@@ -83,6 +83,11 @@ find -type f -exec \
     -e 's|/var/log/puppetlabs/puppet|%{_localstatedir}/log/%{name}|' \
   '{}' +
 
+# Create a sysusers.d config file
+cat >puppet.sysusers.conf <<EOF
+u puppet 52 'Puppet' None -
+EOF
+
 %install
 ruby install.rb --destdir=%{buildroot} \
  --bindir=%{_bindir} \
@@ -106,6 +111,7 @@ install -Dp -m0644 %{SOURCE15} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
 
 %{__install} -d -m0755 %{buildroot}%{_unitdir}
 install -Dp -m0644 ext/systemd/puppet.service %{buildroot}%{_unitdir}/%{name}.service
+install -D -m0644 puppet.sysusers.conf %{buildroot}%{_sysusersdir}/puppet.conf
 
 # Note(hguemar): Conflicts with config file from hiera package
 rm %{buildroot}%{_sysconfdir}/%{name}/hiera.yaml
@@ -196,12 +202,8 @@ rm %{buildroot}%{_datadir}/%{name}/ext/{build_defaults.yaml,project_data.yaml}
 %config(noreplace) %attr(644, root, root) %{_sysconfdir}/logrotate.d/%{name}
 
 %ghost %attr(755, puppet, puppet) %{_rundir}/%{name}
+%{_sysusersdir}/puppet.conf
 
-%pre
-getent group puppet &>/dev/null || groupadd -r puppet -g 52 &>/dev/null
-getent passwd puppet &>/dev/null || \
-useradd -r -u 52 -g puppet -s /sbin/nologin \
- -c "Puppet" puppet &>/dev/null
 
 %post
 %systemd_post %{name}.service
@@ -210,6 +212,9 @@ useradd -r -u 52 -g puppet -s /sbin/nologin \
 %systemd_postun_with_restart %{name}.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 8.6.0-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 8.6.0-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git sblim-sfcb.spec sblim-sfcb.spec
index fe9509ede3..40a5605849 100644
--- sblim-sfcb.spec
+++ sblim-sfcb.spec
@@ -8,7 +8,7 @@ Name: sblim-sfcb
 Summary: Small Footprint CIM Broker
 URL: http://sblim.wiki.sourceforge.net/
 Version: 1.4.9
-Release: 33%{?dist}
+Release: 34%{?dist}
 License: EPL-1.0
 Source0: http://downloads.sourceforge.net/sblim/%{name}-%{version}.tar.bz2
 Source1: sfcb.service
@@ -83,6 +83,12 @@ Programming Interface (CMPI).
 %patch -P9 -p1 -b .fix-ppc-optimization-level
 %patch -P10 -p1 -b .docdir-license
 
+# Create a sysusers.d config file
+cat >sblim-sfcb.sysusers.conf <<EOF
+g sfcb -
+m root sfcb
+EOF
+
 %build
 %configure --enable-debug --enable-uds --enable-ssl --enable-pam --enable-ipv6 \
     --enable-slp --enable-large_volume_support --enable-optimized-enumeration --enable-relax-mofsyntax \
@@ -117,9 +123,7 @@ echo "%{_libdir}/sfcb/*.so" >> _pkg_list
 
 cat _pkg_list
 
-%pre
-/usr/bin/getent group sfcb >/dev/null || /usr/sbin/groupadd -r sfcb
-/usr/sbin/usermod -a -G sfcb root > /dev/null 2>&1 || :
+install -m0644 -D sblim-sfcb.sysusers.conf %{buildroot}%{_sysusersdir}/sblim-sfcb.conf
 
 %post 
 %{_datadir}/sfcb/genSslCert.sh %{_sysconfdir}/sfcb &>/dev/null || :
@@ -133,13 +137,14 @@ cat _pkg_list
 %postun
 /sbin/ldconfig
 %systemd_postun_with_restart sblim-sfcb.service
-if [ $1 -eq 0 ]; then
-        /usr/sbin/groupdel sfcb > /dev/null 2>&1 || :;
-fi;
 
 %files -f _pkg_list
+%{_sysusersdir}/sblim-sfcb.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.4.9-34
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.9-33
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git teeworlds.spec teeworlds.spec
index c3e09a1365..fc61da42b4 100644
--- teeworlds.spec
+++ teeworlds.spec
@@ -1,6 +1,6 @@
 Name:           teeworlds
 Version:        0.7.5
-Release:        16%{?dist}
+Release:        17%{?dist}
 Summary:        Online multi-player platform 2D shooter
 
 # zlib: src/engine/externals/md5/*
@@ -47,7 +47,6 @@ The controls are heavily inspired by the FPS genre of computer games.
 Summary:        Server for %{name}
 Requires:       %{name}-data = %{version}
 Provides:       bundled(md5)
-Requires(pre):  shadow-utils
 %{?systemd_requires}
 BuildRequires:  systemd
 
@@ -75,6 +74,11 @@ sed -i -e "/_mm_pause/d" src/engine/client/client.cpp
 %endif
 sed -i "s/\/usr/\%{_prefix}/g" src/engine/shared/storage.cpp
 
+# Create a sysusers.d config file
+cat >teeworlds.sysusers.conf <<EOF
+u teeworlds - '%{name} server daemon account' %{_sysconfdir}/%{name} -
+EOF
+
 %build
 %cmake . -B%{_vpath_builddir} -GNinja -DCMAKE_BUILD_TYPE=RELEASE \
   -DPREFER_BUNDLED_LIBS=OFF \
@@ -95,13 +99,7 @@ install -Dpm0664 %{S:6} %{buildroot}%{_sysconfdir}/%{name}/tdm.cfg
 install -Dpm0664 %{S:7} %{buildroot}%{_sysconfdir}/%{name}/ctf.cfg
 ln -sf %{_datadir}/fonts/dejavu-sans-fonts/DejaVuSans.ttf %{buildroot}%{_datadir}/%{name}/data/fonts/DejaVuSans.ttf
 
-%pre server
-getent group teeworlds >/dev/null || groupadd -f -r teeworlds
-if ! getent passwd teeworlds >/dev/null ; then
-      useradd -r -g teeworlds -d %{_sysconfdir}/%{name} -s /sbin/nologin \
-              -c "%{name} server daemon account" teeworlds
-fi
-exit 0
+install -m0644 -D teeworlds.sysusers.conf %{buildroot}%{_sysusersdir}/teeworlds.conf
 
 %post server
 %systemd_post %{name}-server@dm.service
@@ -137,8 +135,12 @@ exit 0
 %{_bindir}/%{name}-srv
 %{_unitdir}/%{name}-server@.service
 %attr(-,teeworlds,teeworlds)%{_sysconfdir}/%{name}/
+%{_sysusersdir}/teeworlds.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.7.5-17
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.5-16
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git tomcat.spec tomcat.spec
index 2d36335d02..8689ef0cd1 100644
--- tomcat.spec
+++ tomcat.spec
@@ -102,7 +102,6 @@ Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
 %if 0%{?fedora} || 0%{?rhel} > 7
 Recommends:    tomcat-native >= %{native_version}
 %endif
-Requires(pre):    shadow-utils
 Requires(post):   systemd
 Requires(preun):  systemd
 Requires(postun): systemd
@@ -203,6 +202,11 @@ find . -type f \( -name "*.bat" -o -name "*.class" -o -name Thumbs.db -o -name "
 %mvn_alias "org.apache.tomcat:tomcat-jsp-api" "jakarta.servlet:jakarta.servlet.jsp"
 %mvn_package ":tomcat-servlet-api" tomcat-servlet-api
 
+# Create a sysusers.d config file
+cat >tomcat.sysusers.conf <<EOF
+u tomcat %{tcuid} 'Apache Tomcat' %{homedir} -
+EOF
+
 
 %build
 # we don't care about the tarballs and we're going to replace jars
@@ -401,16 +405,7 @@ popd
 
 %mvn_install
 
-%pre
-# add the tomcat user and group
-getent group tomcat >/dev/null || %{_sbindir}/groupadd -f -g %{tcuid} -r tomcat
-if ! getent passwd tomcat >/dev/null ; then
-    if ! getent passwd %{tcuid} >/dev/null ; then
-        %{_sbindir}/useradd -r -u %{tcuid} -g tomcat -d %{homedir} -s /sbin/nologin -c "Apache Tomcat" tomcat
-        # Tomcat uses a reserved ID, so there should never be an else
-    fi
-fi
-exit 0
+install -m0644 -D tomcat.sysusers.conf %{buildroot}%{_sysusersdir}/tomcat.conf
 
 %post
 # install but don't activate
@@ -476,6 +471,7 @@ exit 0
 %{homedir}/work
 %{homedir}/logs
 %{homedir}/conf
+%{_sysusersdir}/tomcat.conf
 
 %files admin-webapps
 %defattr(0664,root,tomcat,0755)
diff --git trousers.spec trousers.spec
index 0e0d206c5c..af678a2361 100644
--- trousers.spec
+++ trousers.spec
@@ -1,7 +1,7 @@
 Name: trousers
 Summary: TCG's Software Stack v1.2
 Version: 0.3.15
-Release: 13%{?dist}
+Release: 14%{?dist}
 # Automatically converted from old format: BSD - review is highly recommended.
 License: LicenseRef-Callaway-BSD
 Url: http://trousers.sourceforge.net
@@ -17,7 +17,6 @@ Patch4: trousers-0.3.14-fix-indent-tspi_key.patch
 BuildRequires: make
 BuildRequires: libtool openssl-devel gettext-devel autoconf automake
 BuildRequires: systemd
-Requires(pre): shadow-utils
 # remove systemd dependency for flatpak builds
 %if ! 0%{?flatpak}
 Requires(post): systemd-units
@@ -64,6 +63,11 @@ applications.
 # fix man page paths
 sed -i -e 's|/var/tpm|/var/lib/tpm|g' -e 's|/usr/local/var|/var|g' man/man5/tcsd.conf.5.in man/man8/tcsd.8.in
 
+# Create a sysusers.d config file
+cat >trousers.sysusers.conf <<EOF
+u tss 59 'Account used for TPM access' /dev/null -
+EOF
+
 %build
 chmod +x ./bootstrap.sh
 ./bootstrap.sh
@@ -77,16 +81,7 @@ find %{buildroot} -type f -name '*.la' -print -delete
 mkdir -p %{buildroot}%{_unitdir}
 install -Dpm0644 %{SOURCE1} %{buildroot}%{_unitdir}/
 
-%pre
-getent group tss >/dev/null || groupadd -f -g 59 -r tss
-if ! getent passwd tss >/dev/null ; then
-    if ! getent passwd 59 >/dev/null ; then
-      useradd -r -u 59 -g tss -d /dev/null -s /sbin/nologin -c "Account used for TPM access" tss
-    else
-      useradd -r -g tss -d /dev/null -s /sbin/nologin -c "Account used for TPM access" tss
-    fi
-fi
-exit 0
+install -m0644 -D trousers.sysusers.conf %{buildroot}%{_sysusersdir}/trousers.conf
 
 %post
 %systemd_post tcsd.service
@@ -105,6 +100,7 @@ exit 0
 %{_mandir}/man8/*
 %attr(644,root,root) %{_unitdir}/tcsd.service
 %attr(0700, tss, tss) %{_localstatedir}/lib/tpm/
+%{_sysusersdir}/trousers.conf
 
 %files lib
 %license LICENSE
@@ -123,6 +119,9 @@ exit 0
 %{_libdir}/libtddl.a
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.3.15-14
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.15-13
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git tuptime.spec tuptime.spec
index ac6e26c68b..82df4bd2e0 100644
--- tuptime.spec
+++ tuptime.spec
@@ -1,6 +1,6 @@
 Name:		tuptime
 Version:	5.2.4
-Release:	2%{?dist}
+Release:	3%{?dist}
 Summary:	Report historical system real time
 
 License:	GPL-2.0-or-later
@@ -21,7 +21,6 @@ BuildRequires:	systemd
 BuildRequires:	systemd-rpm-macros
 %endif
 Requires:	systemd
-Requires(pre):	shadow-utils
 
 
 %description
@@ -39,13 +38,10 @@ system, keeping the uptime and downtime between shutdowns.
 /usr/bin/pathfix.py -pni "%{__python3} -s" src/tuptime
 %endif
 
-
-%pre
-# Conversion to new group and usernames for previously installed version
-getent group tuptime >/dev/null && groupmod --new-name _tuptime tuptime
-getent passwd tuptime >/dev/null && usermod --login _tuptime tuptime
-getent group _tuptime >/dev/null || groupadd --system _tuptime
-getent passwd _tuptime >/dev/null || useradd --system --gid _tuptime --home-dir "/var/lib/tuptime" --shell '/sbin/nologin' --comment 'Tuptime execution user' _tuptime > /dev/null
+# Create a sysusers.d config file
+cat >tuptime.sysusers.conf <<EOF
+u _tuptime - 'Tuptime execution user' /var/lib/tuptime -
+EOF
 
 
 %build
@@ -66,6 +62,8 @@ cp misc/scripts/* %{buildroot}%{_datadir}/tuptime/
 chmod +x %{buildroot}%{_datadir}/tuptime/*.sh
 chmod +x %{buildroot}%{_datadir}/tuptime/*.py
 
+install -m0644 -D tuptime.sysusers.conf %{buildroot}%{_sysusersdir}/tuptime.conf
+
 
 %post
 # Create and initialise the tuptime DB with consistent permissions, etc.
@@ -99,9 +97,13 @@ su -s /bin/sh _tuptime -c "(umask 0022 && /usr/bin/tuptime -q)"
 %{_mandir}/man1/tuptime.1.*
 %dir %{_datadir}/tuptime
 %{_datadir}/tuptime/*
+%{_sysusersdir}/tuptime.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 5.2.4-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.4-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git uucp.spec uucp.spec
index bd16b90de9..3ef5eab838 100644
--- uucp.spec
+++ uucp.spec
@@ -63,7 +63,6 @@ Requires(preun): /sbin/install-info
 Requires(post): /sbin/install-info
 %endif
 Requires: lockdev >= 1.0.0-14
-Requires(pre): shadow-utils
 Requires(post): systemd-units
 Requires(preun): systemd-units
 Requires(postun): systemd-units
@@ -96,6 +95,12 @@ because it can be useful even if you do not do uucp.
 %patch -P12 -p1 -b .configure-c99
 %patch -P13 -p1 -b .fix-types
 
+# Create a sysusers.d config file
+cat >uucp.sysusers.conf <<EOF
+g uucp 14
+u uucp 10 'Uucp user' /var/spool/uucp -
+EOF
+
 %build
 # enable hardening because uucp contains setuid binaries
 %if ! 0%{?fedora}%{?rhel} || 0%{?fedora} >= 16 || 0%{?rhel} >= 7
@@ -171,18 +176,7 @@ EOF
 
 find "${RPM_BUILD_ROOT}%_datadir/uucp/contrib" -type f -exec chmod a-x {} +
 
-
-%pre
-getent group uucp >/dev/null || groupadd -g 14 -r uucp
-if ! getent passwd uucp >/dev/null ; then
-  if ! getent passwd 10 >/dev/null ; then
-     useradd -r -u 10 -g uucp -d /var/spool/uucp  -c "Uucp user" uucp
-  else
-     useradd -r -g uucp -d /var/spool/uucp  -c "Uucp user" uucp
-  fi
-fi
-exit 0
-
+install -m0644 -D uucp.sysusers.conf %{buildroot}%{_sysusersdir}/uucp.conf
 
 %post
 %if %{with systemd_macros}
@@ -296,6 +290,7 @@ fi
 %config(noreplace) %{_newconfigdir}/port
 %config(noreplace) %{_newconfigdir}/sys
 %attr(755,uucp,uucp) /var/spool/uucp
+%{_sysusersdir}/uucp.conf
 
 %files -n cu
 %doc README COPYING ChangeLog NEWS TODO
diff --git addrwatch/addrwatch.spec addrwatch/addrwatch.spec.tmp
index 93499f7835..07d2ee9eda 100644
--- addrwatch/addrwatch.spec
+++ addrwatch/addrwatch.spec.tmp
@@ -1,26 +1,25 @@
 %global _hardened_build 1
 
 Name:		addrwatch
 Version:	1.0.2
-Release:	12%{?dist}
+Release:	13%{?dist}
 Summary:	Monitoring IPv4/IPv6 and Ethernet address pairings
 
 License:	GPL-3.0-only
 URL:		https://github.com/fln/addrwatch
 Source0:	%{url}/releases/download/v%{version}/%{name}-%{version}.tar.gz
 Source1:	%{name}.service
 Source2:	%{name}.sysconfig
 
 %{?systemd_requires}
 BuildRequires:	libpcap-devel, libevent-devel, systemd, mariadb-connector-c-devel, sqlite-devel, gcc
 BuildRequires:	autoconf automake
 BuildRequires: make
-Requires(pre):	shadow-utils
 
 
 %description
 It main purpose is to monitor network and log discovered Ethernet/IP pairings.
 
 Main features of addrwatch:
 
  * IPv4 and IPv6 address monitoring
@@ -31,57 +30,62 @@ Main features of addrwatch:
 
 Addrwatch is extremely useful in networks with IPv6 auto configuration (RFC4862)
 enabled. It allows to track IPv6 addresses of hosts using IPv6 privacy
 extensions (RFC4941).
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >addrwatch.sysusers.conf <<EOF
+u addrwatch - 'network neighborhoud watch' /var/lib/%{name} -
+EOF
+
 %build
 autoreconf -fiv
 %configure --enable-sqlite3 --enable-mysql LDFLAGS="-I/usr/include/mysql -L/usr/lib64/mysql"
 %make_build
 
 %install
 %make_install
 mkdir -p %{buildroot}%{_unitdir}/
 install -p -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/
 mkdir -p %{buildroot}%{_sysconfdir}/sysconfig/
 install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/addrwatch
 mkdir -p %{buildroot}/var/lib/addrwatch
 
+install -m0644 -D addrwatch.sysusers.conf %{buildroot}%{_sysusersdir}/addrwatch.conf
+
 %files
 %{_bindir}/addrwatch
 %{_bindir}/addrwatch_stdout
 %{_bindir}/addrwatch_mysql
 %{_bindir}/addrwatch_syslog
 %{_mandir}/man8/addrwatch.8*
 %{_unitdir}/addrwatch.service
 %config(noreplace) %{_sysconfdir}/sysconfig/addrwatch
 %license COPYING
 %attr(-, addrwatch, addrwatch) /var/lib/addrwatch
+%{_sysusersdir}/addrwatch.conf
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-    useradd -r -g %{name} -d /var/lib/%{name} -s /sbin/nologin \
-    -c "network neighborhoud watch" %{name}
-exit 0
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %postun
 %systemd_postun_with_restart %{name}.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.0.2-13
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.2-12
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.2-11
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.2-10
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git akmods/akmods.spec akmods/akmods.spec.tmp
index e3de8229dc..6ed6a9acd8 100644
--- akmods/akmods.spec
+++ akmods/akmods.spec.tmp
@@ -63,17 +63,16 @@ Requires:       (kernel-debug-devel-matched if kernel-debug-core)
 Requires:       (kernel-devel-matched if kernel-core)
 %else
 Suggests:       (kernel-debug-devel if kernel-debug-core)
 Suggests:       (kernel-devel if kernel-core)
 %endif
 Suggests:       (kernel-rt-devel if kernel-rt)
 
 # we create a special user that used by akmods to build kmod packages
-Requires(pre):  shadow-utils
 
 # systemd unit requirements.
 BuildRequires:  systemd
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 # Optional but good to have on recent kernel
 Requires: pkgconfig(libelf)
@@ -89,16 +88,21 @@ Akmods startup script will rebuild akmod packages during system
 boot, while its background daemon will build them for kernels right
 after they were installed.
 
 
 %prep
 %setup -q -c -T
 cp -p %{SOURCE9} %{SOURCE10} %{SOURCE15} .
 
+# Create a sysusers.d config file
+cat >akmods.sysusers.conf <<EOF
+u akmods - 'User is used by akmods to build akmod packages' /var/cache/akmods/ -
+EOF
+
 
 %build
 # Nothing to build
 
 
 %install
 mkdir -p %{buildroot}%{_usrsrc}/%{name} \
          %{buildroot}%{_sbindir} \
@@ -138,23 +142,19 @@ install -pm 0644 %{SOURCE19} %{buildroot}%{_unitdir}/
 mkdir -p %{buildroot}%{_mandir}/man1
 help2man -N -i %{SOURCE3} -s 1 \
     -o %{buildroot}%{_mandir}/man1/akmods.1 \
        %{buildroot}%{_sbindir}/akmods
 help2man -N -i %{SOURCE3} -s 1 \
     -o %{buildroot}%{_mandir}/man1/akmodsbuild.1 \
        %{buildroot}%{_sbindir}/akmodsbuild
 
+install -m0644 -D akmods.sysusers.conf %{buildroot}%{_sysusersdir}/akmods.conf
+
 
-%pre
-# create group and user
-getent group akmods >/dev/null || groupadd -r akmods
-getent passwd akmods >/dev/null || \
-useradd -r -g akmods -d /var/cache/akmods/ -s /sbin/nologin \
-    -c "User is used by akmods to build akmod packages" akmods
 
 %post
 %systemd_post akmods.service
 %systemd_post akmods@.service
 %systemd_post akmods-shutdown.service
 
 %preun
 %systemd_preun akmods.service
@@ -192,12 +192,13 @@ useradd -r -g akmods -d /var/cache/akmods/ -s /sbin/nologin \
 %{_presetdir}/95-akmods.preset
 %else
 %exclude %{_presetdir}/95-akmods.preset
 %endif
 %{_usrsrc}/akmods
 %dir %attr(-,akmods,akmods) %{_localstatedir}/cache/akmods
 %dir %attr(0775,root,akmods) %{_localstatedir}/log/%{name}
 %{_mandir}/man1/*
+%{_sysusersdir}/akmods.conf
 
 
 %changelog
 %autochangelog
diff --git anyterm/anyterm.spec anyterm/anyterm.spec.tmp
index cd28759bfa..d88a7cb527 100644
--- anyterm/anyterm.spec
+++ anyterm/anyterm.spec.tmp
@@ -1,11 +1,11 @@
 Name: anyterm
 Version: 1.2.3
-Release: 22%{?dist}
+Release: 23%{?dist}
 Summary: A web-based terminal emulator
 
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License: GPL-2.0-or-later
 URL: http://anyterm.org
 
 # The source for this package was pulled from upstream's vcs.  Use the
 # following commands to generate the tarball:
@@ -45,16 +45,21 @@ and from any javascript-enabled web browser in real time.
 
 %description httpd
 The httpd configuration necessary to proxy anyterm.
 
 %prep
 %setup -q
 %patch -P0 -p0
 
+# Create a sysusers.d config file
+cat >anyterm.sysusers.conf <<EOF
+u anyterm - 'Anyterm service' %{_localstatedir}/run/%{name} -
+EOF
+
 %build
 export CFLAGS="$RPM_OPT_FLAGS"
 export CXXFLAGS="$RPM_OPT_FLAGS -std=c++17"
 make %{?_smp_mflags} CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" OPTIMISE_FLAGS="$CXXFLAGS"
 gzip anytermd.1
 
 %install
 install -Dp -m0755 anytermd %{buildroot}%{_sbindir}/anytermd
@@ -70,24 +75,20 @@ done
 
 # Create a home directory for the user.
 mkdir -p -m755 %{buildroot}%{_localstatedir}/run/%{name}
 mkdir -p %{buildroot}%{_sysconfdir}/tmpfiles.d
 cat <<EOF > %{buildroot}%{_sysconfdir}/tmpfiles.d/%{name}.conf
 d %{_localstatedir}/run/%{name} 0755 root %{name}
 EOF
 
+install -m0644 -D anyterm.sysusers.conf %{buildroot}%{_sysusersdir}/anyterm.conf
+
 
 %pre
-# create anyterm group / user
-getent group %{name} >/dev/null 2>&1 || \
-   groupadd -r %{name}
-getent passwd %{name} >/dev/null 2>&1 || \
-  useradd -r -l -g %{name} -s /sbin/nologin \
-  -d %{_localstatedir}/run/%{name} -c "Anyterm service" %{name}
 if [[ ! -d %{_localstatedir}/run/%{name} ]]; then
   mkdir -m755 %{_localstatedir}/run/%{name}
   chown %{name}:%{name} %{_localstatedir}/run/%{name}
 fi
 if [[ $(getent passwd %{name} | cut -d: -f6) == /dev/null ]]; then
   usermod -d %{_localstatedir}/run/%{name} %{name}
 fi
 exit 0
@@ -105,21 +106,25 @@ exit 0
 %{_sbindir}/anytermd
 %{_libexecdir}/anyterm/
 %{_mandir}/man1/anytermd.1.gz
 %{_datadir}/anyterm/
 %{_unitdir}/anyterm.service
 %ghost %attr(0755,%{name},%{name}) %dir %{_localstatedir}/run/%{name}
 %{_sysconfdir}/tmpfiles.d/%{name}.conf
 %doc LICENSE
+%{_sysusersdir}/anyterm.conf
 
 %files httpd
 %config(noreplace) %{_sysconfdir}/httpd/conf.d/anyterm.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.2.3-23
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.3-22
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul  25 2024 Miroslav Suchý <msuchy@redhat.com> - 1.2.3-21
 - convert license to SPDX
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.3-20
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git apt/apt.spec apt/apt.spec.tmp
index ce185bed0e..0e732ab402 100644
--- apt/apt.spec
+++ apt/apt.spec.tmp
@@ -9,17 +9,17 @@
 
 # Disable integration tests by default,
 # as there is a bunch of failures on non-Debian systems currently.
 # Additionally, these tests take a long time to run.
 %bcond_with check_integration
 
 Name:           apt
 Version:        2.9.8
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        Command-line package manager for Debian packages
 
 License:        GPL-2.0-or-later
 URL:            https://tracker.debian.org/pkg/apt
 Source0:        https://salsa.debian.org/apt-team/%{name}/-/archive/%{version}/%{name}-%{version}.tar.gz
 Patch1:         apt_include_cstdint.patch
 
 BuildRequires:  gcc
@@ -64,17 +64,16 @@ BuildRequires:  gnupg, gnupg2
 BuildRequires:  perl(File::FcntlLock)
 BuildRequires:  perl(Digest::SHA)
 BuildRequires:  debhelper >= 9
 # Unbreak running tests in non-interactive terminals
 BuildRequires:  expect
 %endif
 
 # For ensuring the user is created
-Requires(pre):  shadow-utils
 
 # Apt is essentially broken without dpkg
 Requires:       dpkg >= 1.17.14
 
 # To ensure matching apt libs are installed
 Requires:       %{name}-libs%{?_isa} = %{version}-%{release}
 
 # These is one optional script in apt that still requires perl, so let's make
@@ -167,16 +166,21 @@ to package management with APT.
     questions before installation.
   * apt-ftparchive is used to create Packages and other index files
     needed to publish an archive of Debian packages
   * apt-sortpkgs is a Packages/Sources file normalizer.
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >apt.sysusers.conf <<EOF
+u _apt - 'APT account for owning persistent & cache data' %{_sharedstatedir}/apt -
+EOF
+
 %build
 %cmake -GNinja
 %cmake_build
 
 %install
 %cmake_install
 
 %find_lang %{name}
@@ -203,30 +207,26 @@ cat > %{buildroot}%{_sysconfdir}/logrotate.d/apt <<EOF
   rotate 12
   monthly
   compress
   missingok
   notifempty
 }
 EOF
 
+install -m0644 -D apt.sysusers.conf %{buildroot}%{_sysusersdir}/apt.conf
+
 
 %check
 %ctest
 %if %{with check_integration}
 unbuffer ./test/integration/run-tests -q %{?jobs:-j %{jobs}}
 %endif
 
 # Create the _apt user+group for apt data
-%pre
-getent group _apt >/dev/null || groupadd -r _apt
-getent passwd _apt >/dev/null || \
-    useradd -r -g _apt -d %{_sharedstatedir}/apt -s /sbin/nologin \
-    -c "APT account for owning persistent & cache data" _apt
-exit 0
 
 %ldconfig_scriptlets libs
 
 %files -f %{name}.lang
 %license COPYING*
 %doc README.* AUTHORS
 %{_bindir}/apt
 %{_bindir}/apt-cache
@@ -278,16 +278,17 @@ exit 0
 %{_mandir}/*/apt-secure.*
 %{_mandir}/*/apt-transport-http.*
 %{_mandir}/*/apt-transport-https.*
 %{_mandir}/*/apt-transport-mirror.*
 %{_mandir}/*/apt_auth.*
 %{_mandir}/*/apt_preferences.*
 %{_mandir}/*/sources.list.*
 %doc %{_docdir}/%{name}/*
+%{_sysusersdir}/apt.conf
 
 %files libs -f %{name}-libs.lang
 %license COPYING*
 %{_libdir}/libapt-pkg.so.%{libsomajor}{,.*}
 %{_libdir}/libapt-private.so.%{libprivsomajor}{,.*}
 
 %files doc
 %doc %{_docdir}/%{name}-doc
@@ -310,16 +311,19 @@ exit 0
 %{_mandir}/*/*/apt-ftparchive.*
 %{_mandir}/*/*/apt-sortpkgs.*
 %{_mandir}/*/apt-extracttemplates.*
 %{_mandir}/*/apt-ftparchive.*
 %{_mandir}/*/apt-sortpkgs.*
 %doc %{_docdir}/%{name}-utils
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.9.8-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.8-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Sep 09 2024 Packit <hello@packit.dev> - 2.9.8-1
 - Update to version 2.9.8
 - Resolves: rhbz#2283193
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.2-2
diff --git asterisk/asterisk.spec asterisk/asterisk.spec.tmp
index fdb91abd59..353d870b13 100644
--- asterisk/asterisk.spec
+++ asterisk/asterisk.spec.tmp
@@ -46,17 +46,17 @@
 %global           meetme     0
 %global           ooh323     0
 
 %global           makeargs        DEBUG= OPTIMIZE= DESTDIR=%{buildroot} ASTVARRUNDIR=%{astvarrundir} ASTDATADIR=%{_datadir}/asterisk ASTVARLIBDIR=%{_datadir}/asterisk ASTDBDIR=%{_localstatedir}/spool/asterisk NOISY_BUILD=1
 
 Summary:          The Open Source PBX
 Name:             asterisk
 Version:          18.12.1
-Release:          %{?_rc||?_beta:0.}1%{?_rc:.rc%{_rc}}%{?_beta:.beta%{_beta}}%{?dist}.12
+Release:          %{?_rc||?_beta:0.}1%{?_rc:.rc%{_rc}}%{?_beta:.beta%{_beta}}%{?dist}.13
 # Automatically converted from old format: GPLv2 - review is highly recommended.
 License:          GPL-2.0-only
 URL:              http://www.asterisk.org/
 
 Source0:          http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-%{version}%{?_rc:-rc%{_rc}}%{?_beta:-beta%{_beta}}.tar.gz
 Source1:          http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-%{version}%{?_rc:-rc%{_rc}}%{?_beta:-beta%{_beta}}.tar.gz.asc
 Source2:          asterisk-logrotate
 Source3:          menuselect.makedeps
@@ -253,18 +253,16 @@ BuildRequires:    jansson-devel
 %else
 Provides:         bundled(jansson) = 2.11
 %endif
 
 # for gpg to be able to verify the signature
 BuildRequires:    libgcrypt
 BuildRequires: make
 
-Requires(pre):    %{_sbindir}/useradd
-Requires(pre):    %{_sbindir}/groupadd
 
 Requires(post):   systemd-units
 Requires(post):   systemd-sysv
 Requires(preun):  systemd-units
 Requires(postun): systemd-units
 
 
 # chan_phone headers no longer in kernel headers
@@ -740,16 +738,21 @@ chmod -x contrib/scripts/dbsep.cgi
 %if ! 0%{ooh323}
 %{__perl} -pi -e 's/^MENUSELECT_ADDONS=(.*)$/MENUSELECT_ADDONS=\1 chan_ooh323/g' menuselect.makeopts
 %endif
 
 %if ! 0%{imap}
 %{__perl} -pi -e 's/^MENUSELECT_APPS=(.*)$/MENUSELECT_APPS=\1 app_voicemail_imap/g' menuselect.makeopts
 %endif
 
+# Create a sysusers.d config file
+cat >asterisk.sysusers.conf <<EOF
+u asterisk - 'Asterisk User' /var/lib/asterisk -
+EOF
+
 %build
 
 export CFLAGS="%{optflags}"
 export CXXFLAGS="%{optflags}"
 export FFLAGS="%{optflags}"
 export LDFLAGS="%{ldflags}"
 export ASTCFLAGS=" "
 
@@ -937,20 +940,18 @@ rm -f %{buildroot}%{_sysconfdir}/asterisk/phone.conf
 rm -f %{buildroot}%{_sysconfdir}/asterisk/xmpp.conf
 rm -f %{buildroot}%{_sysconfdir}/asterisk/motif.conf
 %endif
 
 %if ! 0%{ooh323}
 rm -f %{buildroot}%{_sysconfdir}/asterisk/ooh323.conf
 %endif
 
-%pre
-%{_sbindir}/groupadd -r asterisk &>/dev/null || :
-%{_sbindir}/useradd  -r -s /sbin/nologin -d /var/lib/asterisk -M \
-                               -c 'Asterisk User' -g asterisk asterisk &>/dev/null || :
+install -m0644 -D asterisk.sysusers.conf %{buildroot}%{_sysusersdir}/asterisk.conf
+
 
 %post
 if [ $1 -eq 1 ] ; then
 	/bin/systemctl daemon-reload >/dev/null 2>&1 || :
 fi
 
 
 %preun
@@ -1368,16 +1369,17 @@ fi
 %attr(0750,asterisk,asterisk) %dir %{_localstatedir}/spool/asterisk/voicemail
 
 %if %{tmpfilesd}
 %attr(0644,root,root) /usr/lib/tmpfiles.d/asterisk.conf
 %endif
 %attr(0755,asterisk,asterisk) %dir %{astvarrundir}
 
 %{_datarootdir}/asterisk/scripts/
+%{_sysusersdir}/asterisk.conf
 
 %files ael
 %attr(0640,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/extensions.ael
 %{_sbindir}/aelparse
 #%%{_sbindir}/conf2ael
 %{_libdir}/asterisk/modules/pbx_ael.so
 %{_libdir}/asterisk/modules/res_ael_share.so
 
@@ -1690,16 +1692,19 @@ fi
 %files xmpp
 %attr(0640,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/motif.conf
 %attr(0640,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/xmpp.conf
 %{_libdir}/asterisk/modules/chan_motif.so
 %{_libdir}/asterisk/modules/res_xmpp.so
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 18.12.1-1.13
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 18.12.1-1.12
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sun Nov 24 2024 Zhengyu He <hezhy472013@gmail.com> - 18.12.1-1.11
 - Do not use -m32/-m64 on riscv64
 - Fix pjproject build failure on RISC-V
 
 * Tue Oct 22 2024 Richard W.M. Jones <rjones@redhat.com> - 18.12.1-1.10
diff --git autossh/autossh.spec autossh/autossh.spec.tmp
index 28f8096dd5..85de4db00c 100644
--- autossh/autossh.spec
+++ autossh/autossh.spec.tmp
@@ -1,36 +1,40 @@
 Summary: Utility to autorestart SSH tunnels
 Name: autossh
 Version: 1.4g
-Release: 17%{?dist}
+Release: 18%{?dist}
 # Automatically converted from old format: BSD - review is highly recommended.
 License: LicenseRef-Callaway-BSD
 URL: https://www.harding.motd.ca/autossh/
 Source0: https://www.harding.motd.ca/autossh/autossh-1.4g.tgz
 Source1: autossh@.service
 Source2: README.service
 Patch0: autossh-configure-c99.patch
 BuildRequires:  gcc
 BuildRequires: /usr/bin/ssh
 BuildRequires: systemd
 BuildRequires: make
 %{?systemd_requires}
-Requires(pre): shadow-utils
 Requires: /usr/bin/ssh
 
 %description
 autossh is a utility to start and monitor an ssh tunnel. If the tunnel
 dies or stops passing traffic, autossh will automatically restart it.
 
 %prep
 %setup -q
 %patch -P0 -p1
 cp -p %{SOURCE2} .
 
+# Create a sysusers.d config file
+cat >autossh.sysusers.conf <<EOF
+u autossh - 'autossh service account' %{_sysconfdir}/autossh -
+EOF
+
 %build
 %configure
 make %{?_smp_mflags}
 
 %install
 rm -rf $RPM_BUILD_ROOT
 
 mkdir -p $RPM_BUILD_ROOT%{_bindir}
@@ -42,22 +46,18 @@ mkdir -p examples
 cp -p autossh.host rscreen examples
 chmod 0644 examples/*
 
 install -m 0755 -p autossh $RPM_BUILD_ROOT%{_bindir}
 cp -p autossh.1 $RPM_BUILD_ROOT%{_mandir}/man1
 
 install -m 0644 -p %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir}
 
-%pre
-getent group autossh >/dev/null || groupadd -r autossh
-getent passwd autossh >/dev/null || \
-    useradd -r -g autossh -d %{_sysconfdir}/autossh -s %{_sbindir}/nologin \
-    -c "autossh service account" autossh
-exit 0
+install -m0644 -D autossh.sysusers.conf %{buildroot}%{_sysusersdir}/autossh.conf
+
 
 %post
 %systemd_post autossh@.service
 
 %preun
 # https://bugzilla.redhat.com/1996234
 if [ $1 -eq 0 ] && [ -x /usr/bin/systemctl ]; then
     # Package removal, not upgrade
@@ -75,18 +75,22 @@ fi
 
 %files
 %doc CHANGES README README.service
 %doc examples
 %{_bindir}/*
 %attr(750,autossh,autossh) %dir %{_sysconfdir}/autossh/
 %{_mandir}/man1/*
 %{_unitdir}/*
+%{_sysusersdir}/autossh.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.4g-18
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.4g-17
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Aug 28 2024 Miroslav Suchý <msuchy@redhat.com> - 1.4g-16
 - convert license to SPDX
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.4g-15
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git BackupPC/BackupPC.spec BackupPC/BackupPC.spec.tmp
index f8d5846117..38bafb192b 100644
--- BackupPC/BackupPC.spec
+++ BackupPC/BackupPC.spec.tmp
@@ -5,17 +5,17 @@
 %global _with_tmpfilesd 1
 %global _with_systemd 1
 %endif
 
 %global _updatedb_conf /etc/updatedb.conf
 
 Name:           BackupPC
 Version:        4.4.0
-Release:        18%{?dist}
+Release:        19%{?dist}
 Summary:        High-performance backup system
 
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:        GPL-2.0-or-later
 URL:            http://backuppc.github.io/backuppc/index.html
 Source0:        https://github.com/backuppc/backuppc/releases/download/%{version}/%{name}-%{version}.tar.gz
 Source1:        BackupPC.htaccess
 Source2:        BackupPC.logrotate
@@ -74,17 +74,16 @@ Requires:       par2cmdline
 %endif
 Requires:       rrdtool
 Requires:       rsync-bpc >= 3.0.9.6
 Requires:       perl(BackupPC::XS) >= 0.53
 Requires:       perl-Time-modules
 Requires:       samba-client
 Requires:       %{_sbindir}/sendmail
 
-Requires(pre):  shadow-utils
 %if 0%{?_with_systemd}
 Requires(post): shadow-utils
 %{?systemd_requires}
 %else
 Requires(preun): initscripts chkconfig
 Requires(post): initscripts chkconfig shadow-utils
 Requires(postun): initscripts
 %endif
@@ -155,16 +154,21 @@ EOF
 popd
 
 # attempt to unbundle as much as possible
 for m in Net/FTP; do
   rm -rf lib/$m
   sed -i "\@lib/$m@d" configure.pl 
 done
 
+# Create a sysusers.d config file
+cat >backuppc.sysusers.conf <<EOF
+u backuppc - - %{_localstatedir}/lib/%{name} -
+EOF
+
 
 %build
 # Build C wrapper
 gcc -o BackupPC_Admin BackupPC_Admin.c %{optflags}
 
 # SElinux 
 pushd selinux
 make -f %{_datadir}/selinux/devel/Makefile
@@ -236,19 +240,19 @@ mkdir -p %{buildroot}%{_datadir}/%{name}/sbin
 mv %{buildroot}%{_libexecdir}/%{name}/BackupPC_Admin \
    %{buildroot}%{_datadir}/%{name}/sbin/BackupPC_Admin
 install -pm 0755 BackupPC_Admin %{buildroot}%{_libexecdir}/%{name}/
 
 # SElinux 
 mkdir -p %{buildroot}%{_datadir}/selinux/packages/%{name}
 install -m 0644 selinux/%{name}.pp %{buildroot}%{_datadir}/selinux/packages/%{name}/%{name}.pp
 
+install -m0644 -D backuppc.sysusers.conf %{buildroot}%{_sysusersdir}/backuppc.conf
+
 
-%pre
-%{_sbindir}/useradd -d %{_localstatedir}/lib/%{name} -r -s /sbin/nologin backuppc 2> /dev/null || :
 
 %preun
 %if 0%{?_with_systemd}
 %systemd_preun backuppc.service
 %else
 if [ $1 = 0 ]; then
   # Package removal, not upgrade
   service backuppc stop > /dev/null 2>&1 || :
@@ -324,19 +328,23 @@ fi
 %{_unitdir}/backuppc.service
 %else
 %attr(0755,root,root) %{_initrddir}/backuppc
 %endif
 
 %attr(4750,backuppc,apache) %{_libexecdir}/%{name}/BackupPC_Admin
 %attr(-,backuppc,root) %{_localstatedir}/lib/%{name}/
 %{_datadir}/selinux/packages/%{name}/%{name}.pp
+%{_sysusersdir}/backuppc.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.4.0-19
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Mon Jan 20 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.4.0-18
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.4.0-17
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 25 2024 Miroslav Suchý <msuchy@redhat.com> - 4.4.0-16
 - convert license to SPDX
diff --git bacula/bacula.spec bacula/bacula.spec.tmp
index 04d430c457..c268222791 100644
--- bacula/bacula.spec
+++ bacula/bacula.spec.tmp
@@ -8,17 +8,17 @@
 # RHEL 10 has only Qt 6.  EPEL 10 will have Qt 5 to start, but not
 # necessarily for its entire lifetime.
 %if !(0%{?rhel} >= 10 || 0%{?epel} >= 11)
 %bcond_without qt
 %endif
 
 Name:               bacula
 Version:            15.0.2
-Release:            3%{?dist}
+Release:            4%{?dist}
 Summary:            Cross platform network backup for Linux, Unix, Mac and Windows
 # See LICENSE for details
 # See https://gitlab.com/fedora/legal/fedora-license-data/-/issues/277
 License:            LicenseRef-Bacula
 URL:                http://www.bacula.org
 
 # AGPL-3.0-only with exceptions
 Source0:            http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
@@ -129,17 +129,16 @@ This package contains the SQL Bacula libraries, which are used by Director and
 Storage daemons. You have to select your preferred catalog library through the
 alternatives system.
 
 %package common
 Summary:            Common Bacula files
 Provides:           group(%username) = %uid
 Provides:           user(%username) = %uid
 Requires:           bacula-libs%{?_isa} = %{version}-%{release}
-Requires(pre):      shadow-utils
 Requires(postun):   shadow-utils
 
 %description common
 Bacula is a set of programs that allow you to manage the backup, recovery, and
 verification of computer data across a network of different computers. It is
 based on a client/server architecture.
 
 This package contains files common to all Bacula daemons.
@@ -286,16 +285,21 @@ cp %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} .
 pushd autoconf
 aclocal -I bacula-macros/ -I gettext-macros/ -I libtool/
 popd
 autoconf -I autoconf/ -o configure autoconf/configure.in
 
 # Remove execution permissions from files we're packaging as docs later on
 find updatedb -type f | xargs chmod -x
 
+# Create a sysusers.d config file
+cat >bacula.sysusers.conf <<EOF
+u bacula %uid 'Bacula Backup System' /var/spool/bacula -
+EOF
+
 %build
 # Set correct build options for libs3 if not on EL10+ or Fedora:
 %if 0%{?rhel} < 10
 %set_build_flags
 export CFLAGS="%{optflags} -fPIC"
 export CXXFLAGS="%{optflags} -fPIC"
 %endif
 
@@ -431,16 +435,18 @@ rm -f %{buildroot}%{_libdir}/*.la
 rm -f %{buildroot}%{_datadir}/bacula/{ChangeLog,INSTALL,LICENSE*,README,ReleaseNotes,VERIFYING,technotes}
 
 # Fix up some perms so rpmlint does not complain too much
 chmod 755 %{buildroot}%{_sbindir}/*
 chmod 755 %{buildroot}%{_libdir}/%{name}/*
 chmod 755 %{buildroot}%{_libexecdir}/bacula/*
 chmod 644 %{buildroot}%{_libexecdir}/bacula/btraceback.*
 
+install -m0644 -D bacula.sysusers.conf %{buildroot}%{_sysusersdir}/bacula.conf
+
 %post libs-sql
 /usr/sbin/alternatives --install %{_libdir}/libbaccats.so libbaccats.so %{_libdir}/libbaccats-mysql.so 50
 /usr/sbin/alternatives --install %{_libdir}/libbaccats.so libbaccats.so %{_libdir}/libbaccats-sqlite3.so 40
 /usr/sbin/alternatives --install %{_libdir}/libbaccats.so libbaccats.so %{_libdir}/libbaccats-postgresql.so 60
 
 # Fix for automatic selection of backends during upgrades
 if readlink /etc/alternatives/libbaccats.so | grep --silent mysql || \
     readlink /etc/alternatives/bacula-dir | grep --silent mysql || \
@@ -456,21 +462,16 @@ fi
 
 %preun libs-sql
 if [ "$1" = 0 ]; then
     /usr/sbin/alternatives --remove libbaccats.so %{_libdir}/libbaccats-mysql.so
     /usr/sbin/alternatives --remove libbaccats.so %{_libdir}/libbaccats-sqlite3.so
     /usr/sbin/alternatives --remove libbaccats.so %{_libdir}/libbaccats-postgresql.so
 fi
 
-%pre common
-getent group %username >/dev/null || groupadd -g %uid -r %username &>/dev/null || :
-getent passwd %username >/dev/null || useradd -u %uid -r -s /sbin/nologin \
-    -d /var/spool/bacula -M -c 'Bacula Backup System' -g %username %username &>/dev/null || :
-exit 0
 
 %post common
 %firewalld_reload
 
 %post client
 %systemd_post %{name}-fd.service
 
 %preun client
@@ -529,16 +530,17 @@ exit 0
 %{_libexecdir}/%{name}/btraceback.dbx
 %{_libexecdir}/%{name}/btraceback.gdb
 %{_libexecdir}/%{name}/bacula_config
 %{_libexecdir}/%{name}/btraceback.mdb
 %{_mandir}/man8/btraceback.8*
 %{_prefix}/lib/firewalld/services/bacula-director.xml
 %{_prefix}/lib/firewalld/services/bacula-storage.xml
 %{_sbindir}/btraceback
+%{_sysusersdir}/bacula.conf
 
 %files director
 %doc updatedb examples/sample-query.sql
 %config(noreplace) %{_sysconfdir}/bacula/bacula-dir.conf %attr(640,root,bacula)
 %config(noreplace) %{_sysconfdir}/bacula/query.sql %attr(640,root,bacula)
 %config(noreplace) %{_sysconfdir}/sysconfig/bacula-dir
 %{_libdir}/%{name}/ldap-dir.so
 %{_libexecdir}/%{name}/create_bacula_database
@@ -671,16 +673,19 @@ exit 0
 %{_libdir}/libbacfind.so
 %{_libdir}/libbacsd.so
 %{_libdir}/libbacsql.so
 
 %files -n nagios-plugins-bacula
 %{_libdir}/nagios/plugins/check_bacula
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 15.0.2-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 15.0.2-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 15.0.2-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Sun Jun 02 2024 Simone Caronni <negativo17@gmail.com> - 15.0.2-1
 - Update to 15.0.2.
diff --git barman/barman.spec barman/barman.spec.tmp
index db4e1e3c2f..21530f2338 100644
--- barman/barman.spec
+++ barman/barman.spec.tmp
@@ -1,27 +1,26 @@
 Name:       barman
 Version:    3.12.1
-Release:    2%{?dist}
+Release:    3%{?dist}
 Summary:    Backup and Recovery Manager for PostgreSQL
 License:    GPL-3.0-only
 URL:        http://www.pgbarman.org/
 BuildArch:  noarch
 
 Source0:    https://files.pythonhosted.org/packages/source/b/%{name}/%{name}-%{version}.tar.gz
 Source1:    %{name}.cron
 Source2:    %{name}.logrotate
 
 BuildRequires:  python3-devel
 BuildRequires:  python3-setuptools
 
 # https://docs.fedoraproject.org/en-US/packaging-guidelines/CronFiles/#_cron_job_files_packaging:
 Requires:       cronie
 Requires:       logrotate
-Requires(pre):  shadow-utils
 Requires:       rsync >= 3.0.4
 Requires:       %{py3_dist argcomplete}
 Requires:       %{py3_dist barman}
 
 %description
 Barman (Backup and Recovery Manager) is an open-source administration tool for
 disaster recovery of PostgreSQL servers written in Python.
 
@@ -47,16 +46,21 @@ Python libraries used by Barman.
 %autosetup
 
 # Change shebang in all relevant executable files in this directory and all subdirectories
 find -type f -executable -exec sed -i '1s=^#!/usr/bin/\(python\|env python\)[23]\?=#!%{__python3}=' {} +
 
 %generate_buildrequires
 %pyproject_buildrequires
 
+# Create a sysusers.d config file
+cat >barman.sysusers.conf <<EOF
+u barman - 'Backup and Recovery Manager for PostgreSQL' %{_sharedstatedir}/%{name} /bin/bash
+EOF
+
 %build
 %pyproject_wheel
 
 %install
 %pyproject_install
 %pyproject_save_files -l %{name}
 
 mkdir -p %{buildroot}%{_sysconfdir}/%{name}/conf.d
@@ -69,28 +73,31 @@ mkdir -p %{buildroot}%{_datadir}/bash-completion/completions/
 install -p -m 644 docs/%{name}.conf %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf
 install -p -m 644 docs/%{name}.d/* %{buildroot}%{_sysconfdir}/%{name}/conf.d
 install -p -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/cron.d/%{name}
 install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
 install -p -m 644 scripts/%{name}.bash_completion %{buildroot}%{_datadir}/bash-completion/completions/%{name}
 
 sed -i 's|/etc/%{name}.d|/etc/%{name}/conf.d|g' %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf
 
+install -m0644 -D barman.sysusers.conf %{buildroot}%{_sysusersdir}/barman.conf
+
 %files
 %{_bindir}/%{name}
 %{_datadir}/bash-completion/completions/%{name}
 %{_mandir}/man1/%{name}.1*
 %{_mandir}/man5/%{name}.5*
 %dir %{_sysconfdir}/%{name}/
 %config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
 %config(noreplace) %{_sysconfdir}/%{name}/conf.d/
 %config(noreplace) %{_sysconfdir}/cron.d/%{name}
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
 %attr(700,%{name},%{name}) %dir %{_sharedstatedir}/%{name}
 %attr(755,%{name},%{name}) %dir %{_localstatedir}/log/%{name}
+%{_sysusersdir}/barman.conf
 
 %files cli
 %{_bindir}/%{name}-cloud-backup
 %{_bindir}/%{name}-cloud-backup-delete
 %{_bindir}/%{name}-cloud-backup-keep
 %{_bindir}/%{name}-cloud-backup-list
 %{_bindir}/%{name}-cloud-backup-show
 %{_bindir}/%{name}-cloud-check-wal-archive
@@ -141,24 +148,21 @@ sed -i 's|/etc/%{name}.d|/etc/%{name}/conf.d|g' %{buildroot}%{_sysconfdir}/%{nam
 %{_mandir}/man1/%{name}-verify-backup.1*
 %{_mandir}/man1/%{name}-wal-archive.1*
 %{_mandir}/man1/%{name}-wal-restore.1*
 
 %files -n python3-%{name} -f %{pyproject_files}
 %license LICENSE
 %doc AUTHORS README.rst RELNOTES.md
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-    useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /bin/bash \
-    -c "Backup and Recovery Manager for PostgreSQL" %{name}
-exit 0
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.12.1-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.1-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Dec 27 2024 Simone Caronni <negativo17@gmail.com> - 3.12.1-1
 - Update to 3.12.1.
 - Switch to Python packaging guidelines.
 - Trim changelog.
 
diff --git beanstalkd/beanstalkd.spec beanstalkd/beanstalkd.spec.tmp
index b2bec7eb2a..c7f1980415 100644
--- beanstalkd/beanstalkd.spec
+++ beanstalkd/beanstalkd.spec.tmp
@@ -2,46 +2,51 @@
 
 %define beanstalkd_user      beanstalkd
 %define beanstalkd_group     %{beanstalkd_user}
 %define beanstalkd_home      %{_localstatedir}/lib/beanstalkd
 %define beanstalkd_binlogdir %{beanstalkd_home}/binlog
 
 Name:           beanstalkd
 Version:        1.10
-Release:        24%{?dist}
+Release:        25%{?dist}
 Summary:        A simple, fast work-queue service
 
 License:        MIT
 URL:            http://kr.github.io/%{name}/
 Source0:        https://github.com/kr/%{name}/archive/v%{version}.tar.gz
 Source1:        %{name}.service
 Source2:        %{name}.sysconfig
 
 Patch1:         beanstalkd-1.10-warnings.patch
 Patch2:         beanstalkd-1.10-mkdtemp.patch
 
 BuildRequires:  systemd gcc gcc-c++
 BuildRequires: make
 
-Requires(pre):    shadow-utils
 Requires(post):   systemd
 Requires(preun):  systemd
 Requires(postun): systemd
 
 %description
 beanstalkd is a simple, fast work-queue service. Its interface is generic,
 but was originally designed for reducing the latency of page views in
 high-volume web applications by running most time-consuming tasks
 asynchronously.
 
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >beanstalkd.sysusers.conf <<EOF
+g beanstalkd -
+u beanstalkd - 'beanstalkd user' %{beanstalkd_home} -
+EOF
+
 
 %build
 make LDFLAGS="%{?__global_ldflags}" CFLAGS="%{optflags}" %{?_smp_mflags}
 
 
 %check
 make check
 
@@ -50,23 +55,19 @@ make check
 make install PREFIX=%{buildroot}%{_prefix}
 %{__install} -p -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
 %{__install} -p -D -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/%{name}
 %{__install} -d -m 0755 %{buildroot}%{beanstalkd_home}
 %{__install} -d -m 0755 %{buildroot}%{beanstalkd_binlogdir}
 %{__install} -d -m 00755 %{buildroot}%{_mandir}/man1
 %{__install} -p -m 0644 doc/%{name}.1 %{buildroot}%{_mandir}/man1/
 
+install -m0644 -D beanstalkd.sysusers.conf %{buildroot}%{_sysusersdir}/beanstalkd.conf
+
 
-%pre
-getent group %{beanstalkd_group} >/dev/null || groupadd -r %{beanstalkd_group}
-getent passwd %{beanstalkd_user} >/dev/null || \
-    useradd -r -g %{beanstalkd_user} -d %{beanstalkd_home} -s /sbin/nologin \
-    -c "beanstalkd user" %{beanstalkd_user}
-exit 0
 
 
 %post
 # make the binlog dir after installation, this is so SELinux does not complain
 # about the init script creating the binlog directory
 # See RhBug 558310
 if [ -d %{beanstalkd_home} ]; then
     %{__install} -d %{beanstalkd_binlogdir} -m 0755 \
@@ -88,19 +89,23 @@ fi
 %doc README doc/protocol.txt
 %license LICENSE
 %{_unitdir}/%{name}.service
 %{_bindir}/%{name}
 %{_mandir}/man1/%{name}.1*
 %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
 %attr(0755,%{beanstalkd_user},%{beanstalkd_group}) %dir %{beanstalkd_home}
 %ghost %attr(0755,%{beanstalkd_user},%{beanstalkd_group}) %dir %{beanstalkd_binlogdir}
+%{_sysusersdir}/beanstalkd.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.10-25
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.10-24
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.10-23
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Tue Jan 23 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.10-22
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git beep/beep.spec beep/beep.spec.tmp
index 8c040d1bcc..84ce4914f5 100644
--- beep/beep.spec
+++ beep/beep.spec.tmp
@@ -56,17 +56,16 @@ BuildRequires:  make
 # While the kernel supports more speaker drivers, the only hardware
 # platforms with a speaker driver supported by Fedora use pcspkr.ko
 # (PCSPKR_PLATFORM in the kernel config).
 #
 # Recommends:     kmod(pcspkr.ko)
 # Recommends:     (kernel-modules-extras if kernel-modules)
 # Recommends:     (kernel-debug-modules-extras if kernel-debug-modules)
 
-Requires(pre):  shadow-utils
 
 # /etc/modprobe.d/
 Requires:       kmod
 
 # /etc/udev/rules.d/  and  /usr/lib/udev/rules.d/
 %{?el7:Requires:  systemd}
 %{!?el7:Requires: systemd-udev}
 
@@ -79,16 +78,21 @@ of use is within scripts, notifying the user when something
 interesting occurs. Of course, it has no notion of what is
 interesting, but it is really good at the notifying part.
 
 
 %prep
 %setup -q
 sed -i 's|^\.\\" \(\.BR .*\)README.Distro\(.*\)|\1README.fedora\2|' beep.1.in && : #"
 
+# Create a sysusers.d config file
+cat >beep.sysusers.conf <<EOF
+g beep -
+EOF
+
 
 %build
 if test "x%{build_cppflags}" = "x%%{build_cppflags}"; then
    BUILD_CPPFLAGS=""
 else
    BUILD_CPPFLAGS="%{build_cppflags}"
 fi
 cat>local.mk<<EOF
@@ -119,20 +123,19 @@ install -p -m 0644 "%{SOURCE1}" "%{buildroot}%{_pkgdocdir}/README.fedora"
 
 install -d -m 0755              "%{buildroot}%{_sysconfdir}/modprobe.d/"
 install -p -m 0644 "%{SOURCE4}" "%{buildroot}%{_sysconfdir}/modprobe.d/beep.conf"
 
 install -d -m 0755              "%{buildroot}%{_udevrulesdir}/"
 install -p -m 0644 "%{SOURCE2}" "%{buildroot}%{_udevrulesdir}/"
 install -p -m 0644 "%{SOURCE3}" "%{buildroot}%{_udevrulesdir}/"
 
+install -m0644 -D beep.sysusers.conf %{buildroot}%{_sysusersdir}/beep.conf
+
 
-%pre
-getent group beep >/dev/null || groupadd -r beep
-exit 0
 
 
 %files
 %license %{_pkgdocdir}/COPYING
 %doc %{_pkgdocdir}/CREDITS.md
 %doc %{_pkgdocdir}/NEWS.md
 %doc %{_pkgdocdir}/PERMISSIONS.md
 %doc %{_pkgdocdir}/README.fedora
@@ -141,12 +144,13 @@ exit 0
 %doc %{_pkgdocdir}/contrib/morse2beep.pl
 %doc %{_pkgdocdir}/contrib/morse2beep.sed
 %doc %{_pkgdocdir}/contrib/success-beeps
 %{_bindir}/beep
 %{_mandir}/man1/beep.1*
 %config(noreplace) %{_sysconfdir}/modprobe.d/beep.conf
 %{_udevrulesdir}/70-pcspkr-beep.rules
 %{_udevrulesdir}/90-pcspkr-beep.rules
+%{_sysusersdir}/beep.conf
 
 
 %changelog
 %autochangelog
diff --git bitcoin-core/bitcoin-core.spec bitcoin-core/bitcoin-core.spec.tmp
index 112cc02d2b..9527f84c32 100644
--- bitcoin-core/bitcoin-core.spec
+++ bitcoin-core/bitcoin-core.spec.tmp
@@ -1,17 +1,17 @@
 %define _hardened_build 1
 %global _compldir %{_datadir}/bash-completion/completions
 %global project_name bitcoin
 
 %bcond_with extended_tests
 
 Name:       bitcoin-core
 Version:    28.1
-Release:    2%{?dist}
+Release:    3%{?dist}
 Summary:    Peer to Peer Cryptographic Currency
 License:    MIT
 URL:        https://bitcoincore.org/
 
 # In .gitignore, so no chance to commit to SCM:
 Source0:    https://bitcoincore.org/bin/bitcoin-core-%{version}/%{project_name}-%{version}.tar.gz
 Source1:    https://bitcoincore.org/bin/bitcoin-core-%{version}/SHA256SUMS.asc
 Source2:    https://bitcoincore.org/bin/bitcoin-core-%{version}/SHA256SUMS
@@ -120,17 +120,16 @@ out collectively by the network.
 
 This package provides bitcoin-cli, a utility to communicate with and
 control a Bitcoin server via its RPC protocol, and bitcoin-tx, a utility
 to create custom Bitcoin transactions.
 
 %package server
 Summary:        Peer-to-peer digital currency
 Conflicts:      bitcoin-server
-Requires(pre):  shadow-utils
 Requires:       (%{name}-selinux if selinux-policy)
 Provides:       bundled(leveldb) = 1.22.0
 Provides:       bundled(libdb) = 4.8.30.NC
 Provides:       bundled(secp256k1) = 0.1
 Provides:       bundled(univalue) = 1.1.3
 
 %description server
 This package provides a stand-alone bitcoin-core daemon. For most users, this
@@ -164,16 +163,21 @@ patch -d db4 -p1 -i %{SOURCE16}
 patch -d db4 -p1 -i %{SOURCE17}
 # Avoid any modification timestamp based regeneration of the configure
 # script due to patching above:
 touch -r db4/dist/configure db4/dist/configure.ac db4/dist/aclocal/*.m4
 
 # Documentation (sources can not be directly reference with doc)
 cp -p %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} .
 
+# Create a sysusers.d config file
+cat >bitcoin-core.sysusers.conf <<EOF
+u bitcoin - 'Bitcoin wallet server' /var/lib/%{project_name} -
+EOF
+
 %build
 # Build static Berkeley DB reusing all compiler flags / hardening:
 pushd db4/build_unix
 
 %define _configure ../dist/configure
 %configure \
     --disable-shared \
     --enable-cxx \
@@ -245,30 +249,26 @@ install -D -m644 -p contrib/completions/bash/%{project_name}d.bash %{buildroot}%
 mkdir -p %{buildroot}%{_localstatedir}/log/%{project_name}/
 
 # AppStream metadata
 install -p -m 644 -D %{SOURCE18} %{buildroot}%{_metainfodir}/%{project_name}-qt.metainfo.xml
 
 # Remove test files so that they aren't shipped. Tests have already been run.
 rm -f %{buildroot}%{_bindir}/test_*
 
+install -m0644 -D bitcoin-core.sysusers.conf %{buildroot}%{_sysusersdir}/bitcoin-core.conf
+
 %check
 desktop-file-validate %{buildroot}%{_datadir}/applications/%{project_name}-qt.desktop
 appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{project_name}-qt.metainfo.xml
 make check
 %if %{with extended_tests}
 test/functional/test_runner.py --tmpdirprefix `pwd` --extended
 %endif
 
-%pre server
-getent group %{project_name} >/dev/null || groupadd -r %{project_name}
-getent passwd %{project_name} >/dev/null ||
-    useradd -r -g %{project_name} -d /var/lib/%{project_name} -s /sbin/nologin \
-    -c "Bitcoin wallet server" %{project_name}
-exit 0
 
 %post server
 %systemd_post %{project_name}.service
 
 %preun server
 %systemd_preun %{project_name}.service
 
 %postun server
@@ -315,18 +315,22 @@ exit 0
 %ghost %{_rundir}/%{project_name}.pid
 %config(noreplace) %attr(644,root,root) %{_sysconfdir}/sysconfig/%{project_name}
 %{_compldir}/%{project_name}d
 %{_mandir}/man1/%{project_name}d.1*
 %{_sbindir}/%{project_name}d
 %{_tmpfilesdir}/%{project_name}.conf
 %{_unitdir}/%{project_name}.service
 %{_userunitdir}/%{project_name}.service
+%{_sysusersdir}/bitcoin-core.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 28.1-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 28.1-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Jan 11 2025 Simone Caronni <negativo17@gmail.com> - 28.1-1
 - Update to 28.1.
 
 * Sat Jan 11 2025 Simone Caronni <negativo17@gmail.com> - 28.0-4
 - Enable Statically Defined Tracing (USDT).
diff --git boinc-client/boinc-client.spec boinc-client/boinc-client.spec.tmp
index d76ee881ff..eec56e2447 100644
--- boinc-client/boinc-client.spec
+++ boinc-client/boinc-client.spec.tmp
@@ -13,17 +13,17 @@
 #
 # Do not move the %%global foo block of code in the upper part of the spec
 # file, otherwise it will not work because it will try to read macros not
 # yet defined like %%{version}
 
 Summary:       The BOINC client
 Name:          boinc-client
 Version:       8.0.2
-Release:       2%{?dist}
+Release:       3%{?dist}
 # Automatically converted from old format: LGPLv2+ - review is highly recommended.
 License:       LicenseRef-Callaway-LGPLv2+
 URL:           http://boinc.berkeley.edu/
 
 %global major_version %(v=%{version}; echo ${v:0:3})
 %global commit c0b8b6fd37687aa1b93102129a054837b84cc032
 %global gittag client_release/%{major_version}/%{version}
 # gittag_custom is needed in %%setup process because tar.gz unpacks a folder
@@ -54,17 +54,16 @@ Patch1:        disable_idle_time_detection.patch
 # and unmerged later
 #Patch4:        manager_exit_menu_entry_removal.patch
 
 
 Requires:         logrotate
 Requires(post):   systemd
 Requires(preun):  systemd
 Requires(postun): systemd
-Requires(pre):    shadow-utils
 
 BuildRequires: curl-devel
 %if 0%{?el7}
 BuildRequires: devtoolset-7-toolchain
 BuildRequires: devtoolset-7-libatomic-devel
 %endif
 BuildRequires: freeglut-devel
 BuildRequires: gcc-c++
@@ -170,16 +169,21 @@ for file in $(ls | grep checkin_notes_20); do
     mv ${file}.utf8 ${file}
 done
 
 # Fix file permissions
 for file in $(ls clientgui | grep .cpp$ ) $(ls clientgui | grep .h$ ); do 
     chmod 644 clientgui/${file}
 done
 
+# Create a sysusers.d config file
+cat >boinc-client.sysusers.conf <<EOF
+u boinc - 'BOINC client account.' %{_localstatedir}/lib/boinc -
+EOF
+
 %build
 %if 0%{?el7}
 . /opt/rh/devtoolset-7/enable
 %endif
 
 %ifarch %{ix86}
 %global boinc_platform i686-pc-linux-gnu
 %endif
@@ -256,24 +260,18 @@ install -p -m644 packages/generic/sea/boincmgr.48x48.png $RPM_BUILD_ROOT%{_datad
 install -p -m644 %{SOURCE5} $RPM_BUILD_ROOT%{_metainfodir}/edu.berkeley.BOINC.metainfo.xml
 
 %find_lang BOINC-Manager
 %find_lang BOINC-Client
 
 # bash-completion
 install -p -m644 client/scripts/boinc.bash $RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d/boinc-client
 
-%pre
+install -m0644 -D boinc-client.sysusers.conf %{buildroot}%{_sysusersdir}/boinc-client.conf
 
-# Create BOINC user and group
-getent group boinc >/dev/null || groupadd -r boinc
-getent passwd boinc >/dev/null || \
-useradd -r -g boinc -d %{_localstatedir}/lib/boinc -s /sbin/nologin \
-    -c "BOINC client account." boinc
-exit 0
 
 %post
 %{?ldconfig}
 %systemd_post boinc-client.service
 
 %preun
 %systemd_preun boinc-client.service
 
@@ -305,16 +303,17 @@ fi
 %{_mandir}/man1/boinccmd.1.gz
 %{_mandir}/man1/boinc.1.gz
 %{_libdir}/*.so.*
 %config(noreplace) %{_sysconfdir}/logrotate.d/boinc-client
 %config(noreplace) %{_sysconfdir}/bash_completion.d/boinc-client
 %attr(-,boinc,boinc) %{_localstatedir}/lib/boinc/
 %{_sysconfdir}/X11/Xsession.d/36x11-common_xhost-boinc
 %{_sysconfdir}/boinc-client/config.properties
+%{_sysusersdir}/boinc-client.conf
 
 
 %files doc
 %doc checkin_notes checkin_notes_*
 
 %files -n boinc-manager -f BOINC-Manager.lang
 %{_bindir}/boincmgr
 %{_bindir}/boincscr
@@ -340,16 +339,19 @@ fi
 %{_includedir}/boinc
 %{_libdir}/pkgconfig/libboinc.pc
 %{_libdir}/pkgconfig/libboinc_api.pc
 %{_libdir}/pkgconfig/libboinc_crypt.pc
 %{_libdir}/pkgconfig/libboinc_graphics2.pc
 %{_libdir}/pkgconfig/libboinc_opencl.pc
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 8.0.2-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 8.0.2-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jan 10 2025 Germano Massullo <germano.massullo@gmail.com> - 8.0.2-1
 - 8.0.2 release
 - Erased obsolete patches
 
 * Sun Jan 05 2025 Benjamin A. Beasley <code@musicinmybrain.net> - 7.20.2-12
diff --git buildbot/buildbot.spec buildbot/buildbot.spec.tmp
index c3bfff4f8e..332e06312a 100644
--- buildbot/buildbot.spec
+++ buildbot/buildbot.spec.tmp
@@ -16,17 +16,17 @@
 # Required client packages don't exist in RHEL or EPEL
 %bcond_with openstack
 %else
 %bcond_without openstack
 %endif
 
 Name:           buildbot
 Version:        4.2.1
-Release:        3%{?dist}
+Release:        4%{?dist}
 
 Summary:        Build/test automation system
 License:        GPL-2.0-only
 URL:            https://buildbot.net
 Source0:        %{pypi_source buildbot}
 Source1:        %{pypi_source buildbot_worker}
 Source2:        %{pypi_source buildbot_www}
 Source3:        %{pypi_source buildbot_waterfall_view}
@@ -117,38 +117,31 @@ inconvenienced by the failure.
 
 %files
 # Empty because metapackage
 
 # ---------------------------------------------------------------------
 
 %package master
 Summary:        Build/test automation system master
-Requires(pre):  shadow-utils
 Recommends:     %{name}-www = %{version}-%{release}
 %if ! %{with docs}
 Obsoletes:      %{name}-doc < %{version}-%{release}
 %endif
 
 %description master
 The BuildBot is a system to automate the compile/test cycle required by
 most software projects to validate code changes. By automatically
 rebuilding and testing the tree each time something has changed, build
 problems are pinpointed quickly, before other developers are
 inconvenienced by the failure.
 
 This package contains only the buildmaster implementation.
 The buildbot-worker package contains the buildworker.
 
-%pre master
-getent group buildbot-master >/dev/null || groupadd -r buildbot-master
-getent passwd buildbot-master >/dev/null || \
-    useradd -r -g buildbot-master -d %{_sharedstatedir}/buildbot/master -s /sbin/nologin \
-    -c "Service account for the Buildbot master" buildbot-master
-exit 0
 
 %post master
 for master in $(systemctl list-units 'buildbot-master@*.service' --all --plain --no-legend | cut -d '@' -f 2 | cut -d '.' -f 1); do
   systemctl stop buildbot-master@"$master".service
   su - buildbot-master -s /bin/bash -c "buildbot upgrade-master /var/lib/buildbot/master/$master"
   systemctl start buildbot-master@"$master".service
 done
 
@@ -159,16 +152,17 @@ done
 %{_mandir}/man1/buildbot.1*
 %{python3_sitelib}/buildbot/
 %{python3_sitelib}/buildbot-*egg-info/
 %dir %{_sharedstatedir}/buildbot
 %dir %attr(-, buildbot-master, buildbot-master) %{_sharedstatedir}/buildbot/master
 %{_unitdir}/buildbot-master@.service
 
 # ---------------------------------------------------------------------
+%{_sysusersdir}/buildbot.conf
 
 %if %{with ec2}
 %package master-ec2
 Summary:        Build/test automation system master -- AWS EC2 support
 Requires:       %{name}-master = %{version}-%{release}
 Requires:       python%{python3_version}dist(boto3)
 
 %description master-ec2
@@ -250,17 +244,16 @@ worker support.
 %files master-openstack
 # Empty because metapackage
 %endif
 
 # ---------------------------------------------------------------------
 
 %package worker
 Summary:        Build/test automation system worker
-Requires(pre):  shadow-utils
 %if ! %{with docs}
 Obsoletes:      %{name}-doc < %{version}-%{release}
 %endif
 
 %description worker
 This package contains only the buildworker implementation.
 The buildbot-master package contains the buildmaster.
 
@@ -326,16 +319,21 @@ Summary:        Buildbot documentation
 
 # ---------------------------------------------------------------------
 
 %prep
 %setup -q -b0 -b1 -b2 -b3 -b4 -b5 -b6 -b7 -b8
 cd ..
 cd buildbot_worker-%{version}
 
+# Create a sysusers.d config file
+cat >buildbot.sysusers.conf <<EOF
+u buildbot-master - 'Service account for the Buildbot master' %{_sharedstatedir}/buildbot/master -
+EOF
+
 %build
 %py3_build
 
 %if %{with docs}
 #TODO create API documentation
 pushd docs
 make docs.tgz VERSION="%{version}" SPHINXBUILD=sphinx-build-3
 popd
@@ -394,23 +392,28 @@ popd
 # Purge windows-only files
 rm -vf %{buildroot}%{_bindir}/*windows*
 
 # Install systemd units
 mkdir -p %{buildroot}%{_unitdir}
 cp -a %{S:10} %{S:11} %{buildroot}%{_unitdir}
 mkdir -p %{buildroot}%{_sharedstatedir}/buildbot/{master,worker}
 
+install -m0644 -D buildbot.sysusers.conf %{buildroot}%{_sysusersdir}/buildbot.conf
+
 
 %if %{with check}
 %check
 trial buildbot.test
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.2.1-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.1-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jan 15 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.2.1-2
 - Rebuilt to drop hard requires on groups (rhbz#2338295)
 
 * Mon Jan 13 2025 Gwyn Ciesla <gwync@protonmail.com> - 4.2.1-1
 - 4.2.1
diff --git calypso/calypso.spec calypso/calypso.spec.tmp
index 18106bfc7a..adf3e76e3a 100644
--- calypso/calypso.spec
+++ calypso/calypso.spec.tmp
@@ -1,17 +1,17 @@
 %global commit 7317d88263fb9658cd7f1174c6bbcfb0a7ae856a
 %global shortcommit %%(c=%{commit}; echo ${c:0:7})
 %global date 20190429
 
 %bcond_without check
 
 Name: calypso
 Version: 2.0
-Release: 0.18.%{date}git%{shortcommit}%{?dist}
+Release: 0.19.%{date}git%{shortcommit}%{?dist}
 Summary: Free and open-source CalDAV calendar server
 # Automatically converted from old format: GPLv3+ - review is highly recommended.
 License: GPL-3.0-or-later
 URL: https://keithp.com/blogs/calypso/
 Source0: %{name}-%{commit}.tar.xz
 Source1: %{name}-mktarball.sh
 Source2: %{name}.config
 Source3: %{name}.pam
@@ -23,17 +23,16 @@ BuildRequires: python3-devel
 BuildRequires: python3-setuptools
 BuildRequires: python3-iniparse
 BuildRequires: python3-vobject
 BuildRequires: systemd-rpm-macros
 %if %{with check}
 BuildRequires: git-core
 BuildRequires: python3-pytest
 %endif
-Requires(pre): shadow-utils
 Requires(post): git-core
 Requires: git-core
 Requires: python3-lockfile
 Recommends: python3-kerberos
 Recommends: python3-PyPAM
 BuildArch: noarch
 
 %description
@@ -43,38 +42,39 @@ patches to Radicale but was eventually split off as a separate project.
 * Uses vObject for parsing and generating the data files
 * Stores one event/contact per file
 * Uses git to retain a history of the database
 
 %prep
 %setup -q -n %{name}-%{commit}
 %patch -P0 -p1 -b .daemon
 
+# Create a sysusers.d config file
+cat >calypso.sysusers.conf <<EOF
+u calypso - 'CalDAV/CardDAV server with git storage' %{_sharedstatedir}/calypso -
+EOF
+
 %build
 %py3_build
 
 %install
 %py3_install
 mkdir -p %{buildroot}%{_sharedstatedir}/calypso
 install -Dpm644 calypso.1 %{buildroot}%{_mandir}/man1/calypso.1
 install -Dpm644 %{S:2} %{buildroot}%{_sysconfdir}/calypso/config
 install -Dpm644 %{S:3} %{buildroot}%{_sysconfdir}/pam.d/calypso
 install -Dpm644 %{S:4} %{buildroot}%{_unitdir}/calypso.service
 
+install -m0644 -D calypso.sysusers.conf %{buildroot}%{_sysusersdir}/calypso.conf
+
 %if %{with check}
 %check
 %pytest
 %endif
 
-%pre
-getent group calypso >/dev/null || groupadd -r calypso
-getent passwd calypso >/dev/null || \
-    useradd -r -g calypso -d %{_sharedstatedir}/calypso -s /sbin/nologin \
-    -c "CalDAV/CardDAV server with git storage" calypso
-exit 0
 
 %preun
 %systemd_preun calypso.service
 
 %post
 %systemd_post calypso.service
 if [ $1 -eq 1 ] && ! [ -d %{_sharedstatedir}/calypso/default ]; then
     mkdir -p %{_sharedstatedir}/calypso/default
@@ -98,18 +98,22 @@ fi
 %config(noreplace) %{_sysconfdir}/calypso/config
 %config(noreplace) %{_sysconfdir}/pam.d/calypso
 %{_bindir}/calypso
 %{_mandir}/man1/calypso.1*
 %{_unitdir}/calypso.service
 %{python3_sitelib}/calypso-%{version}-py%{python3_version}.egg-info
 %{python3_sitelib}/calypso
 %dir %attr(0750,calypso,calypso) %{_sharedstatedir}/calypso
+%{_sysusersdir}/calypso.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.0-0.19.20190429git7317d88
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-0.18.20190429git7317d88
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 25 2024 Miroslav Suchý <msuchy@redhat.com> - 2.0-0.17.20190429git7317d88
 - convert license to SPDX
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-0.16.20190429git7317d88
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git ccache/ccache.spec ccache/ccache.spec.tmp
index 32d2ac781b..c0d200d83e 100644
--- ccache/ccache.spec
+++ ccache/ccache.spec.tmp
@@ -8,17 +8,17 @@
 %endif
 %endif
 
 %define abs2rel() perl -MFile::Spec -e 'print File::Spec->abs2rel(@ARGV)' %1 %2
 %global relccache %(%abs2rel %{_bindir}/ccache %{_libdir}/ccache)
 
 Name:           ccache
 Version:        4.10.2
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        C/C++ compiler cache
 
 # See LICENSE.adoc for licenses of bundled codes
 # blake3 is Apache-2.0
 # span.hpp is BSL-1.0
 # url.cpp/hpp is MIT
 License:        GPL-3.0-or-later AND Apache-2.0 AND BSL-1.0 AND MIT
 URL:            http://ccache.dev/
@@ -38,17 +38,16 @@ BuildRequires:  hiredis-devel
 BuildRequires:  libzstd-devel
 BuildRequires:  perl perl(File::Spec)
 BuildRequires:  xxhash-devel
 # clang for additional tests
 BuildRequires:  clang clang-tools-extra
 # coreutils for triggerin, triggerpostun
 Requires:       coreutils
 # For groupadd
-Requires(pre):  shadow-utils
 Provides:       bundled(blake3) = 1.5.1
 Provides:       bundled(span-lite) = 0.11.0
 Provides:       bundled(cxxurl)
 
 %description
 ccache is a compiler cache.  It speeds up recompilation of C/C++ code
 by caching previous compiles and detecting when the same compile is
 being done again.  The main focus is to handle the GNU C/C++ compiler
@@ -60,16 +59,21 @@ being done again.  The main focus is to handle the GNU C/C++ compiler
 %autopatch -p1
 # win32-compat gets imported, but not used
 rm -r src/third_party/{[ad-lo-tvy-z]*,cpp-httplib}
 sed -e 's|@LIBDIR@|%{_libdir}|g' -e 's|@CACHEDIR@|%{_var}/cache/ccache|g' \
     %{SOURCE1} > %{name}.sh
 sed -e 's|@LIBDIR@|%{_libdir}|g' -e 's|@CACHEDIR@|%{_var}/cache/ccache|g' \
     %{SOURCE2} > %{name}.csh
 
+# Create a sysusers.d config file
+cat >ccache.sysusers.conf <<EOF
+g ccache -
+EOF
+
 
 %build
 %cmake
 %cmake_build
 %cmake_build --target doc
 
 
 %install
@@ -103,16 +107,18 @@ for n in cc gcc g++ c++ ; do
     done
 done
 for n in clang clang++ ; do
     ln -s %{relccache} $RPM_BUILD_ROOT%{_libdir}/ccache/$n
 done
 find $RPM_BUILD_ROOT%{_libdir}/ccache -type l | \
     sed -e "s|^$RPM_BUILD_ROOT|%%ghost |" > %{name}-%{version}.compilers
 
+install -m0644 -D ccache.sysusers.conf %{buildroot}%{_sysusersdir}/ccache.conf
+
 
 %check
 %ctest
 
 
 %define ccache_trigger(p:) \
 %triggerin -- %{-p*}\
 for n in %* ; do\
@@ -212,31 +218,33 @@ done\
 %ccache_trigger -p gcc-c++-sparc64-linux-gnu sparc64-linux-gnu-c++ sparc64-linux-gnu-g++
 %ccache_trigger -p gcc-tile-linux-gnu tile-linux-gnu-gcc
 %ccache_trigger -p gcc-c++-tile-linux-gnu tile-linux-gnu-c++ tile-linux-gnu-g++
 %ccache_trigger -p gcc-x86_64-linux-gnu x86_64-linux-gnu-gcc
 %ccache_trigger -p gcc-c++-x86_64-linux-gnu x86_64-linux-gnu-c++ x86_64-linux-gnu-g++
 %ccache_trigger -p gcc-xtensa-linux-gnu xtensa-linux-gnu-gcc
 %ccache_trigger -p gcc-c++-xtensa-linux-gnu xtensa-linux-gnu-c++ xtensa-linux-gnu-g++
 
-%pre
-getent group ccache >/dev/null || groupadd -r ccache || :
 
 
 %files -f %{name}-%{version}.compilers
 %license GPL-3.0.txt LICENSE.*
 %doc doc/AUTHORS.*  doc/MANUAL.* doc/NEWS.* README.md
 %config(noreplace) %{_sysconfdir}/profile.d/%{name}.*sh
 %{_bindir}/ccache
 %dir %{_libdir}/ccache/
 %attr(2770,root,ccache) %dir %{_var}/cache/ccache/
 %{_mandir}/man1/ccache.1*
+%{_sysusersdir}/ccache.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.10.2-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.10.2-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 31 2024 Orion Poplawski <orion@nwra.com> - 4.10.2-1
 - Update to 4.10.2
 
 * Fri Jul 26 2024 Kefu Chai <tchaikov@gmail.com> - 4.10.1-3
 - Rebuilt for fmt 11
diff --git chromium/chromium.spec chromium/chromium.spec.tmp
index d36dcb2c95..9f68ed2111 100644
--- chromium/chromium.spec
+++ chromium/chromium.spec.tmp
@@ -272,17 +272,17 @@
 %else
 %global default_client_id %nil
 %global default_client_secret %nil
 %global chromoting_client_id %nil
 %endif
 
 Name:	chromium%{chromium_channel}
 Version: 132.0.6834.110
-Release: 1%{?dist}
+Release: 2%{?dist}
 Summary: A WebKit (Blink) powered web browser that Google doesn't want you to use
 Url: http://www.chromium.org/Home
 License: BSD-3-Clause AND LGPL-2.1-or-later AND Apache-2.0 AND IJG AND MIT AND GPL-2.0-or-later AND ISC AND OpenSSL AND (MPL-1.1 OR GPL-2.0-only OR LGPL-2.0-only)
 
 # Use /etc/chromium for initial_prefs
 Patch1: chromium-115-initial_prefs-etc-path.patch
 
 # Try to load widevine from other places
@@ -938,17 +938,16 @@ Provides: chrome-remote-desktop = %{version}-%{release}
 Obsoletes: chrome-remote-desktop <= 81.0.4044.138
 %endif
 
 %description common
 %{summary}.
 
 %if %{build_remoting}
 %package -n chrome-remote-desktop
-Requires(pre): shadow-utils
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 Requires: xorg-x11-server-Xvfb
 Requires: python3-psutil
 Requires: chromium-common%{_isa} = %{version}-%{release}
 Summary: Remote desktop support for google-chrome & chromium
 
@@ -1185,16 +1184,21 @@ cp -a %{_includedir}/libusb-1.0/libusb.h third_party/libusb/src/libusb/libusb.h
 # Hard code extra version
 sed -i 's/getenv("CHROME_VERSION_EXTRA")/"Fedora Project"/' chrome/common/channel_info_posix.cc
 
 # Fix hardcoded path in remoting code
 sed -i 's|/opt/google/chrome-remote-desktop|%{crd_path}|g' remoting/host/setup/daemon_controller_delegate_linux.cc
 
 # bz#2265957, add correct platform
 sed -i "s/Linux x86_64/Linux %{_arch}/" content/common/user_agent.cc
+
+# Create a sysusers.d config file
+cat >chromium.sysusers.conf <<EOF
+g chrome-remote-desktop -
+EOF
  
 %build
 
 # reduce warnings
 FLAGS=' -Wno-deprecated-declarations -Wno-unknown-warning-option -Wno-unused-command-line-argument'
 FLAGS+=' -Wno-unused-but-set-variable -Wno-unused-result -Wno-unused-function -Wno-unused-variable'
 FLAGS+=' -Wno-unused-const-variable -Wno-unneeded-internal-declaration -Wno-unknown-attributes -Wno-unknown-pragmas'
 
@@ -1733,16 +1737,18 @@ install -D -m0644 chrome/installer/linux/common/chromium-browser/chromium-browse
 appstream-util validate-relax --nonet ${RPM_BUILD_ROOT}%{_datadir}/metainfo/%{chromium_browser_channel}.appdata.xml
 
 mkdir -p %{buildroot}%{_datadir}/gnome-control-center/default-apps/
 cp -a %{SOURCE9} %{buildroot}%{_datadir}/gnome-control-center/default-apps/
 
 # README.fedora
 cp %{SOURCE1} .
 
+install -m0644 -D chromium.sysusers.conf %{buildroot}%{_sysusersdir}/chromium.conf
+
 %post
 # Set SELinux labels - semanage itself will adjust the lib directory naming
 # But only do it when selinux is enabled, otherwise, it gets noisy.
 if selinuxenabled; then
 	semanage fcontext -a -t bin_t /usr/lib/%{chromium_browser_channel} &>/dev/null || :
 	semanage fcontext -a -t bin_t /usr/lib/%{chromium_browser_channel}/%{chromium_browser_channel}.sh &>/dev/null || :
 	semanage fcontext -a -t chrome_sandbox_exec_t /usr/lib/chrome-sandbox &>/dev/null || :
 	restorecon -R -v %{chromium_path}/%{chromium_browser_channel} &>/dev/null || :
@@ -1753,18 +1759,16 @@ fi
 path = "/etc/opt/chrome/native-messaging-hosts"
 st = posix.stat(path)
 if st and st.type == "link" then
   os.remove(path)
 end
 %endif
 
 %if %{build_remoting}
-%pre -n chrome-remote-desktop
-getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-desktop
 
 %post -n chrome-remote-desktop
 %systemd_post chrome-remote-desktop@.service
 
 %preun -n chrome-remote-desktop
 %systemd_preun chrome-remote-desktop@.service
 
 %postun -n chrome-remote-desktop
@@ -1904,26 +1908,30 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
 %{_sysconfdir}/chromium/native-messaging-hosts/*
 %{_sysconfdir}/opt/chrome/
 %{crd_path}/remoting_locales/
 %{crd_path}/start-host
 %{crd_path}/user-session
 %{_unitdir}/chrome-remote-desktop@.service
 /var/lib/chrome-remote-desktop/
 %endif
+%{_sysusersdir}/chromium.conf
 
 %if %{build_chromedriver}
 %files -n chromedriver
 %doc AUTHORS
 %license LICENSE
 %{_bindir}/chromedriver
 %{chromium_path}/chromedriver
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 132.0.6834.110-2
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 23 2025 Than Ngo <than@redhat.com> - 132.0.6834.110-1
 - Update to 132.0.6834.110
   * High CVE-2025-0611: Object corruption in V8
   * High CVE-2025-0612: Out of bounds memory access in V8
 
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 132.0.6834.83-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
diff --git c-icap/c-icap.spec c-icap/c-icap.spec.tmp
index 0afae97970..12c2e0b5b8 100644
--- c-icap/c-icap.spec
+++ c-icap/c-icap.spec.tmp
@@ -1,13 +1,13 @@
 %global     full_version C_ICAP_%{version}
 
 Name:       c-icap
 Version:    0.6.2
-Release:    3%{?dist}
+Release:    4%{?dist}
 Summary:    An implementation of an ICAP server
 License:    LGPL-2.1-or-later and GPL-2.0-or-later
 URL:        http://%{name}.sourceforge.net/
 
 Source0:    https://github.com/%{name}/%{name}-server/archive/%{full_version}.tar.gz#/%{name}-%{version}.tar.gz
 Source1:    %{name}.logrotate
 Source3:    %{name}.tmpfiles.conf
 Source4:    %{name}.service
@@ -31,17 +31,16 @@ BuildRequires:  lmdb-devel
 BuildRequires:  make
 BuildRequires:  openldap-devel
 BuildRequires:  openssl-devel
 BuildRequires:  pcre2-devel
 BuildRequires:  systemd-rpm-macros
 BuildRequires:  zlib-devel
 
 Requires:       logrotate
-Requires(pre):  shadow-utils
 
 %description
 C-icap is an implementation of an ICAP server. It can be used with HTTP proxies
 that support the ICAP protocol to implement content adaptation and filtering
 services. Most of the commercial HTTP proxies must support the ICAP protocol,
 the open source Squid 3.x proxy server supports it too.
 
 %package devel
@@ -62,16 +61,21 @@ utilities.
 
 %prep
 %autosetup -p1 -n c-icap-server-%{full_version}
 
 # See RECONF
 echo "master-%{full_version}" > VERSION.m4
 autoreconf -vif
 
+# Create a sysusers.d config file
+cat >c-icap.sysusers.conf <<EOF
+u c-icap - 'C-ICAP Service user' /run/%{name} -
+EOF
+
 %build
 %configure \
   --sysconfdir=%{_sysconfdir}/%{name} \
   --enable-shared \
   --disable-static \
   --enable-ipv6 \
   --enable-large-files \
   --enable-lib-compat \
@@ -122,22 +126,18 @@ install -D -p -m 0644 %{SOURCE3} %{buildroot}%{_tmpfilesdir}/%{name}.conf
 install -D -p -m 0644 %{SOURCE4} %{buildroot}%{_unitdir}/%{name}.service
 
 # Do not add default configuration files
 rm -f %{buildroot}%{_sysconfdir}/%{name}/*.default
 
 # Let rpm pick up the docs in the files section
 rm -fr %{buildroot}%{_docdir}/%{name}
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null ||
-    useradd -r -g %{name} -d /run/%{name} -s /sbin/nologin \
-    -c "C-ICAP Service user" %{name}
-exit 0
+install -m0644 -D c-icap.sysusers.conf %{buildroot}%{_sysusersdir}/c-icap.conf
+
 
 %post
 %systemd_post %{name}.service
 
 
 %preun
 %systemd_preun %{name}.service
 
@@ -174,30 +174,34 @@ exit 0
 %{_mandir}/man8/%{name}-client.8*
 # Removed as BDB support is not enabled:
 %exclude %{_mandir}/man8/%{name}-mkbdb.8*
 %{_mandir}/man8/%{name}-mklmdb.8*
 %{_mandir}/man8/%{name}-stretch.8*
 %{_tmpfilesdir}/%{name}.conf
 %{_unitdir}/%{name}.service
 %attr(750,%{name},%{name}) %dir %{_localstatedir}/log/%{name}
+%{_sysusersdir}/c-icap.conf
 
 %files devel
 %{_bindir}/%{name}-config
 %{_bindir}/%{name}-libicapapi-config
 %{_includedir}/c_icap
 %{_libdir}/libicapapi.so
 %{_mandir}/man8/%{name}-config.8*
 %{_mandir}/man8/%{name}-libicapapi-config.8*
 
 %files libs
 %license COPYING
 %{_libdir}/libicapapi.so.*
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.6.2-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.2-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.2-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Mon Jan 29 2024 Frank Crawford <frank@crawford.emu.id.au> - 0.6.2-1
 - Update to 0.6.2 release.
diff --git cjdns/cjdns.spec cjdns/cjdns.spec.tmp
index 2f7368785c..eda41fa2fc 100644
--- cjdns/cjdns.spec
+++ cjdns/cjdns.spec.tmp
@@ -67,17 +67,17 @@
 
 %global with_admin 0
 
 %{!?__restorecon: %global __restorecon /sbin/restorecon}
 
 Name:           cjdns
 # major version is cjdns protocol version:
 Version:        21.1
-Release:        19%{?dist}
+Release:        20%{?dist}
 Summary:        The privacy-friendly network without borders
 # cjdns is all GPLv3 except libuv which is MIT and BSD and ISC
 # cnacl is unused except when use_embedded is true
 # Automatically converted from old format: GPLv3 and MIT and BSD and ISC - review is highly recommended.
 License:        GPL-3.0-only AND LicenseRef-Callaway-MIT AND LicenseRef-Callaway-BSD AND ISC
 URL:            http://hyperboria.net/
 Source0: https://github.com/cjdelisle/cjdns/archive/%{name}-v%{version}.tar.gz
 Source1: cjdns.README_Fedora.md
@@ -159,17 +159,16 @@ BuildRequires:  %{nacl_name}-devel >= %{nacl_version}
 %if %{use_systemd}
 # systemd macros are not defined unless systemd is present
 BuildRequires: systemd
 Requires: systemd
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 %endif
-Requires(pre): shadow-utils
 
 %if 0%{use_libuv}
 BuildRequires: libuv-devel
 %else
 BuildRequires: gyp
 Provides: bundled(libuv) = 0.11.19
 %endif
 
@@ -394,16 +393,21 @@ cd -
 %if %{with python3}
 tar xvfz %{SOURCE4}
 mv python-cjdns-* python-cjdns
 %endif
 
 # FIXME: grep Version_CURRENT_PROTOCOL util/version/Version.h and
 # check that it matches major %%{version}
 
+# Create a sysusers.d config file
+cat >cjdns.sysusers.conf <<EOF
+u cjdns - 'End to end encrypted IPv6 mesh' %{_libexecdir}/cjdns -
+EOF
+
 %build
 
 # build selinux policy
 cd contrib/selinux
 ln -s /usr/share/selinux/devel/Makefile .
 make 
 cd -
 %if 0 && %{with python3}
@@ -549,16 +553,18 @@ for t in pingAll.py trashroutes \
 done
 %endif
 
 # symlink python tools that pull in networkx for graphing
 for t in drawgraph dumpgraph graphStats; do
   ln -sf %{_libexecdir}/cjdns/python/$t %{buildroot}%{_bindir}
 done
 
+install -m0644 -D cjdns.sysusers.conf %{buildroot}%{_sysusersdir}/cjdns.conf
+
 %files
 %{!?_licensedir:%global license %%doc}
 %license LICENSE
 %doc README.md README_*.md HACKING.md 
 %attr(0100,root,root) /var/empty/cjdns
 %attr(0755,root,root) %{_sbindir}/cjdroute
 %ghost %attr(0600,root,root) %config(missingok,noreplace) %{_sysconfdir}/cjdroute.conf
 %dir %{_libexecdir}/cjdns
@@ -582,24 +588,19 @@ done
 %{_bindir}/cjdns-online
 %{_mandir}/man5/*
 %{_mandir}/man8/*
 %{_mandir}/man1/cjdns-online.1.gz
 %{_mandir}/man1/cjdroute.1.gz
 %{_mandir}/man1/makekeys.1.gz
 %{_mandir}/man1/publictoip6.1.gz
 %{_mandir}/man1/randombytes.1.gz
+%{_sysusersdir}/cjdns.conf
 
 %pre
-getent group cjdns > /dev/null || groupadd -r cjdns
-getent passwd cjdns > /dev/null || /usr/sbin/useradd -g cjdns \
-        -c "End to end encrypted IPv6 mesh" \
-        -r -d %{_libexecdir}/cjdns -s /sbin/nologin cjdns
-exit 0
-
 %if %{use_systemd}
 
 %post
 %systemd_post cjdns.service
 
 %postun
 %systemd_postun_with_restart cjdns.service
 
@@ -726,16 +727,19 @@ fi
 %{_libexecdir}/cjdns/python/drawgraph
 %{_libexecdir}/cjdns/python/dumpgraph
 %{_libexecdir}/cjdns/python/graphStats
 %{_bindir}/drawgraph
 %{_bindir}/dumpgraph
 %{_bindir}/graphStats
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 21.1-20
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 21.1-19
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Aug 28 2024 Miroslav Suchý <msuchy@redhat.com> - 21.1-18
 - convert license to SPDX
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 21.1-17
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git cleanfeed/cleanfeed.spec cleanfeed/cleanfeed.spec.tmp
index 4beb78ad55..03d4be6e2a 100644
--- cleanfeed/cleanfeed.spec
+++ cleanfeed/cleanfeed.spec.tmp
@@ -1,22 +1,21 @@
 Summary: A spam filter for Usenet news servers
 Name: cleanfeed
 Version: 20020501
-Release: 34%{?dist}
+Release: 35%{?dist}
 # Confirmed with upstream, website
 License: Artistic-2.0
 URL: http://www.bofh.it/~md/cleanfeed/
 Source0: http://www.bofh.it/~md/cleanfeed/cleanfeed-20020501.tgz
 Patch0: cleanfeed-20020501-redhat.patch
 Patch1: cleanfeed-20020501-ro.patch
 BuildArch: noarch
 BuildRequires: perl-generators
 BuildRequires: sed
-Requires(pre): shadow-utils
 
 %description
 Cleanfeed is an automatic spam filter for Usenet news servers and
 routers (INN, Cyclone, Typhoon, Breeze and NNTPRelay).  Cleanfeed
 looks for duplicated messages, repeated patterns, and known spamming
 sites and domains.  It can be configured to block binary posts to
 non-binary newsgroups, to cancel already-rejected articles, and to
 reject some spamming from local users.
@@ -24,43 +23,48 @@ reject some spamming from local users.
 Install the cleanfeed package if you need a spam filter for a Usenet
 news server.
 
 %prep
 %setup -q
 %patch -P0 -p1 -b .rh
 %patch -P1 -p1
 
+# Create a sysusers.d config file
+cat >cleanfeed.sysusers.conf <<EOF
+u news - 'cleanfeed user' %{_sysconfdir}/news -
+EOF
+
 %build
 sed '1 i #!/usr/bin/perl' cleanfeed > filter_innd.pl
 
 %pre
-getent group news >/dev/null || groupadd -r news
-getent passwd news >/dev/null || \
-    useradd -r -g news -d %{_sysconfdir}/news -s /sbin/nologin \
-    -c "cleanfeed user" news
-exit 0
-
 %install
 mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/news
 mkdir -p $RPM_BUILD_ROOT/%{_datadir}/news/bin/filter
 install -m 0644 cleanfeed.local.sample $RPM_BUILD_ROOT/%{_sysconfdir}/news/cleanfeed.local
 install -m 0644 bad_* $RPM_BUILD_ROOT/%{_sysconfdir}/news/
 install -m 0755 filter_innd.pl \
 	$RPM_BUILD_ROOT/%{_datadir}/news/bin/filter/filter_innd.pl
 
+install -m0644 -D cleanfeed.sysusers.conf %{buildroot}%{_sysusersdir}/cleanfeed.conf
+
 %files
 %license LICENSE
 %doc CHANGES README HACKING TODO
 %attr(-,news,news) %config(noreplace)  %{_sysconfdir}/news/cleanfeed.local
 %attr(-,news,news) %config(noreplace)  %{_sysconfdir}/news/bad_*
 %attr(755,news,news) %dir %{_datadir}/news/bin/filter
 %attr(-,news,news) %{_datadir}/news/bin/filter/filter_innd.pl
+%{_sysusersdir}/cleanfeed.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 20020501-35
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 20020501-34
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 20020501-33
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Sat Apr 20 2024 Miroslav Suchý <msuchy@redhat.com> - 20020501-32
 - convert license to SPDX
diff --git cntlm/cntlm.spec cntlm/cntlm.spec.tmp
index 1a986e2f1c..ccad88fdcd 100644
--- cntlm/cntlm.spec
+++ cntlm/cntlm.spec.tmp
@@ -1,64 +1,64 @@
 %global _hardened_build 1
 
 Summary:          Fast NTLM authentication proxy with tunneling
 Name:             cntlm
 Version:          0.92.3
-Release:          30%{?dist}
+Release:          31%{?dist}
 License:          GPL-2.0-or-later
 
 URL:              http://cntlm.sourceforge.net/
 Source0:          http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.bz2
 Source1:          cntlm.tmpfiles
 Source2:          cntlm.service
 # Don't override global CFLAGS/LDFLAGS and don't strip installed binaries
 Patch0:           cntlm_makefile.patch
 Patch1: cntlm-c99.patch
 
 BuildRequires:    gcc
 BuildRequires:    make
 BuildRequires:    systemd
-Requires(pre):    shadow-utils
 %{?systemd_requires}
 
 
 %description
 Cntlm is a fast and efficient NTLM proxy, with support for TCP/IP tunneling,
 authenticated connection caching, ACLs, proper daemon logging and behavior
 and much more. It has up to ten times faster responses than similar NTLM
 proxies, while using by orders or magnitude less RAM and CPU. Manual page
 contains detailed information.
 
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >cntlm.sysusers.conf <<EOF
+u cntlm - '%{name} daemon' %{_localstatedir}/run/%{name} -
+EOF
+
 
 %build
 %configure
 %make_build SYSCONFDIR=%{_sysconfdir}
 
 
 %install
 make BINDIR=%{buildroot}%{_sbindir} MANDIR=%{buildroot}%{_mandir} SYSCONFDIR=%{buildroot}%{_sysconfdir} install
 
 install -D -m 0644 rpm/%{name}.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/cntlmd
 install -D -m 0644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}/%{name}.conf
 install -D -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/%{name}.service
 
 install -D -d -m 0755 %{buildroot}/run/%{name}/
 
+install -m0644 -D cntlm.sysusers.conf %{buildroot}%{_sysusersdir}/cntlm.conf
+
 
-%pre
-getent group %{name} > /dev/null || groupadd -r %{name}
-getent passwd %{name} > /dev/null || \
-  useradd -r -g %{name} -d %{_localstatedir}/run/%{name} -s /sbin/nologin \
-    -c "%{name} daemon" %{name}
-exit 0
 
 
 %post
 %systemd_post %{name}.service
 
 
 %preun
 %systemd_preun %{name}.service
@@ -73,19 +73,23 @@ exit 0
 %license LICENSE
 %{_sbindir}/%{name}
 %{_mandir}/man1/%{name}.1*
 %config(noreplace) %{_sysconfdir}/%{name}.conf
 %config(noreplace) %{_sysconfdir}/sysconfig/cntlmd
 %{_tmpfilesdir}/%{name}.conf
 %{_unitdir}/%{name}.service
 %attr(755, %{name}, %{name}) %dir /run/%{name}/
+%{_sysusersdir}/cntlm.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.92.3-31
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.92.3-30
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.92.3-29
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.92.3-28
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git condor/condor.spec condor/condor.spec.tmp
index a07eff297b..6ded1682b6 100644
--- condor/condor.spec
+++ condor/condor.spec.tmp
@@ -1,17 +1,17 @@
 %global version         23.9.6
 %global version_ %(tr . _ <<< %{version})
 
 %global with_vault_credmon 0
 
 #######################
 Name:           condor
 Version:        23.9.6
-Release:        3%{?dist}
+Release:        4%{?dist}
 Summary:        HTCondor: High Throughput Computing
 # Automatically converted from old format: ASL 2.0 - review is highly recommended.
 License:        Apache-2.0
 URL:            http://htcondor.org
 ##############################################################
 # NOTE: If you wish to setup a debug build either add a patch
 # or adjust the URL to a private github location
 ##############################################################
@@ -295,30 +295,29 @@ Requires: pcre2-tools
 HTCondor V9 to V10 check for for known breaking changes:
 1. IDToken TRUST_DOMAIN default value change
 2. Upgrade to PCRE2 breaking map file regex sequences
 3. The way to request GPU resources for a job
 
 %files upgrade-checks
 %_bindir/condor_upgrade_check
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-  useradd -r -g condor -d %{_sharedstatedir}/%{name} -s /sbin/nologin \
-    -c "Owner of HTCondor Daemons" %{name}
-exit 0
 
 %prep
 %setup -q -n %{name}-%{version}
 %patch 1 -p1
 
 # fix errant execute permissions
 find src -perm /a+x -type f -name "*.[Cch]" -exec chmod a-x {} \;
 
+# Create a sysusers.d config file
+cat >condor.sysusers.conf <<EOF
+u condor - 'Owner of HTCondor Daemons' %{_sharedstatedir}/%{name} -
+EOF
+
 %build
 make -C docs man
 %cmake -DBUILDID:STRING=RH-%{version}-%{release} \
        -DBUILD_TESTING:BOOL=FALSE \
        -DCMAKE_SKIP_RPATH:BOOL=TRUE \
 %if 0%{?rhel} == 8
        -DPython3_EXECUTABLE=%__python3 \
 %endif
@@ -449,16 +448,18 @@ rm -rf %{buildroot}/usr/lib*/python%{python3_version}/site-packages/classad3
 # original location. Admins will need to edit these.
 install -m 0755 -d -p %{buildroot}%{_sysconfdir}/blahp
 for batch_system in condor kubernetes lsf nqs pbs sge slurm; do
     mv %{buildroot}%{_libexecdir}/blahp/${batch_system}_local_submit_attributes.sh %{buildroot}%{_sysconfdir}/blahp
     ln -s ../.../../etc/blahp/${batch_system}_local_submit_attributes.sh \
         %{buildroot}%{_libexecdir}/blahp/${batch_system}_local_submit_attributes.sh
 done
 
+install -m0644 -D condor.sysusers.conf %{buildroot}%{_sysusersdir}/condor.conf
+
 #################
 %files
 %defattr(-,root,root,-)
 %doc LICENSE NOTICE.txt 
 %doc /usr/share/doc/condor/examples
 %dir %_sysconfdir/condor/
 %config %_sysconfdir/condor/condor_config
 %{_tmpfilesdir}/%{name}.conf
@@ -798,16 +799,17 @@ done
 %_sbindir/procd_ctl
 %_mandir/man1/procd_ctl.1.gz
 %_mandir/man1/gidd_alloc.1.gz
 %_mandir/man1/condor_procd.1.gz
 
 ####### classads files #######
 %defattr(-,root,root,-)
 %_libdir/libclassad.so.*
+%{_sysusersdir}/condor.conf
 
 #################
 %files devel
 %{_includedir}/condor/chirp_client.h
 %{_includedir}/condor/condor_event.h
 %{_includedir}/condor/file_lock.h
 %{_includedir}/condor/read_user_log.h
 %{_libdir}/condor/libchirp_client.a
@@ -932,16 +934,19 @@ done
 %preun
 %systemd_preun %{name}.service
 
 %postun -n condor
 %systemd_postun_with_restart %{name}.service 
 /sbin/ldconfig
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 23.9.6-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 23.9.6-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Oct 01 2024 Tim Theisen <ttheisen@fedoraproject.org> - 23.9.6-2
 - Suppress provides/requires for libfmt - rhbz#2315859
 
 * Mon Sep 16 2024 Tim Theisen <ttheisen@fedoraproject.org> - 23.9.6-1
 - Update to latest upstream 23.9.6
diff --git copr-backend/copr-backend.spec copr-backend/copr-backend.spec.tmp
index c732a1ceb0..f2f8ce7e57 100644
--- copr-backend/copr-backend.spec
+++ copr-backend/copr-backend.spec.tmp
@@ -5,17 +5,17 @@
 %global prunerepo_version 1.20
 %global tests_version 5
 %global tests_tar test-data-copr-backend
 
 %global copr_common_version 0.25.1~~dev0
 
 Name:       copr-backend
 Version:    2.1
-Release:    2%{?dist}
+Release:    3%{?dist}
 Summary:    Backend for Copr
 
 License:    GPL-2.0-or-later
 URL:        https://github.com/fedora-copr/copr
 
 # Source is created by:
 # git clone %%url && cd copr
 # tito build --tgz --tag %%name-%%version-%%release
@@ -122,16 +122,22 @@ and submit new builds and COPR will create yum repository from latests builds.
 
 This package include documentation for COPR code. Mostly useful for developers
 only.
 
 
 %prep
 %setup -q -a 1
 
+# Create a sysusers.d config file
+cat >copr-backend.sysusers.conf <<EOF
+u copr - 'COPR user' None /bin/bash
+m copr lighttpd
+EOF
+
 
 %build
 make -C docs %{?_smp_mflags} html
 %py3_build
 
 
 %install
 %py3_install
@@ -175,25 +181,22 @@ install -d %{buildroot}%{_sysconfdir}/logstash.d
 install -d %{buildroot}%{_datadir}/logstash/patterns/
 cp -a conf/logstash/lighttpd.pattern %{buildroot}%{_datadir}/logstash/patterns/lighttpd.pattern
 
 install -d %{buildroot}%{_pkgdocdir}/examples/%{_sysconfdir}/logstash.d
 cp -a conf/logstash/copr_backend.conf %{buildroot}%{_pkgdocdir}/examples/%{_sysconfdir}/logstash.d/copr_backend.conf
 
 cp -a docs/build/html %{buildroot}%{_pkgdocdir}/
 
+install -m0644 -D copr-backend.sysusers.conf %{buildroot}%{_sysusersdir}/copr-backend.conf
+
 
 %check
 ./run_tests.sh -vv --no-cov
 
-%pre
-getent group copr >/dev/null || groupadd -r copr
-getent passwd copr >/dev/null || \
-useradd -r -g copr -G lighttpd -s /bin/bash -c "COPR user" copr
-/usr/bin/passwd -l copr >/dev/null
 
 %post
 %systemd_post copr-backend.target
 
 %preun
 %systemd_preun copr-backend.target
 
 %postun
@@ -226,24 +229,28 @@ useradd -r -g copr -G lighttpd -s /bin/bash -c "COPR user" copr
 %{_sbindir}/*
 
 %config(noreplace) %{_sysconfdir}/cron.daily/copr-backend
 %config(noreplace) %{_sysconfdir}/cron.weekly/copr-backend
 %{_datadir}/logstash/patterns/lighttpd.pattern
 
 
 %config(noreplace) %attr(0600, root, root)  %{_sysconfdir}/sudoers.d/copr
+%{_sysusersdir}/copr-backend.conf
 
 %files doc
 %license LICENSE
 %doc
 %{_pkgdocdir}/
 %exclude %{_pkgdocdir}/lighttpd
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.1-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.1-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Oct 22 2024 Jakub Kadlcik <frostyx@email.cz> 2.1-1
 - Activate Red Hat subscription on demand
 - Fix copr-backend-unknown-resalloc-tickets
 
 * Wed Oct 02 2024 Jiri Kyjovsky <j1.kyjovsky@gmail.com> 2.0-1
diff --git copr-dist-git/copr-dist-git.spec copr-dist-git/copr-dist-git.spec.tmp
index 797a8a3419..651367fe29 100644
--- copr-dist-git/copr-dist-git.spec
+++ copr-dist-git/copr-dist-git.spec.tmp
@@ -1,13 +1,13 @@
 %global copr_common_version 0.25.1~~dev0
 
 Name:       copr-dist-git
 Version:    1.0
-Release:    2%{?dist}
+Release:    3%{?dist}
 Summary:    Copr services for Dist Git server
 
 License:    GPL-2.0-or-later
 URL:        https://github.com/fedora-copr/copr
 
 # Source is created by:
 # git clone %%url && cd copr
 # tito build --tgz --tag %%name-%%version-%%release
@@ -54,29 +54,32 @@ COPR is lightweight build system. It allows you to create new project in WebUI
 and submit new builds and COPR will create yum repository from latest builds.
 
 This package contains Copr services for Dist Git server.
 
 
 %prep
 %setup -q
 
+# Option -m was ignored. It must not be used for system users.
+# Create a sysusers.d config file
+cat >copr-dist-git.sysusers.conf <<EOF
+g packager -
+g apache -
+u copr-dist-git - 'copr-dist-git user' None -
+m copr-dist-git packager
+m copr-dist-git apache
+EOF
+
 
 %build
 %py3_build
 
 
 %pre
-getent group packager >/dev/null || groupadd -r packager
-getent group copr-dist-git >/dev/null || groupadd -r copr-dist-git
-getent group apache >/dev/null || groupadd -r apache
-getent passwd copr-dist-git >/dev/null || \
-useradd -r -m -g copr-dist-git -G packager,apache -c "copr-dist-git user" copr-dist-git
-/usr/bin/passwd -l copr-dist-git >/dev/null
-
 %install
 %py3_install
 
 install -d %{buildroot}%{_datadir}/copr/dist_git
 install -d %{buildroot}%{_sysconfdir}/copr
 install -d %{buildroot}%{_sysconfdir}/logrotate.d/
 install -d %{buildroot}%{_sysconfdir}/httpd/conf.d/
 install -d %{buildroot}%{_unitdir}
@@ -94,16 +97,18 @@ cp -a copr-dist-git.service %{buildroot}%{_unitdir}/
 
 cp -a conf/logrotate %{buildroot}%{_sysconfdir}/logrotate.d/copr-dist-git
 
 # for ghost files
 touch %{buildroot}%{_var}/log/copr-dist-git/main.log
 
 %py_byte_compile %{__python3} %{buildroot}%{_datadir}/copr/dist_git
 
+install -m0644 -D copr-dist-git.sysusers.conf %{buildroot}%{_sysusersdir}/copr-dist-git.conf
+
 
 %check
 ./run_tests.sh -vv --no-cov
 
 %post
 %systemd_post copr-dist-git.service
 
 %preun
@@ -130,18 +135,22 @@ touch %{buildroot}%{_var}/log/copr-dist-git/main.log
 %{_unitdir}/copr-dist-git.service
 
 %dir %{_sysconfdir}/logrotate.d
 %config(noreplace) %{_sysconfdir}/logrotate.d/copr-dist-git
 %attr(0755, copr-dist-git, copr-dist-git) %{_var}/log/copr-dist-git
 %attr(0644, copr-dist-git, copr-dist-git) %{_var}/log/copr-dist-git/main.log
 %ghost %{_var}/log/copr-dist-git/*.log
 %{_tmpfilesdir}/copr-dist-git.conf
+%{_sysusersdir}/copr-dist-git.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.0-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Oct 02 2024 Jiri Kyjovsky <j1.kyjovsky@gmail.com> 1.0-1
 - Don't check that specfile matches the repository name
 
 * Tue May 21 2024 Jakub Kadlcik <frostyx@email.cz> 0.70-1
 - Don't expect remove_unused_sources is in /usr/bin
diff --git copr-frontend/copr-frontend.spec copr-frontend/copr-frontend.spec.tmp
index 53b60f859e..b4b0bbe25b 100644
--- copr-frontend/copr-frontend.spec
+++ copr-frontend/copr-frontend.spec.tmp
@@ -42,17 +42,17 @@
    x = rpm.expand(macro)
    for line in string.gmatch(x, "([^\\n]+)") do
        print("%exclude " .. line .. "\\n")
    end
 }
 
 Name:       copr-frontend
 Version:    2.1
-Release:    2%{?dist}
+Release:    3%{?dist}
 Summary:    Frontend for Copr
 
 License:    GPL-2.0-or-later
 URL:        https://github.com/fedora-copr/copr
 
 # Source is created by:
 # git clone %%url && cd copr
 # tito build --tgz --tag %%name-%%version-%%release
@@ -226,16 +226,21 @@ Summary: Development files to build against %{name}
 %description devel
 Files which allow a build against %{name}, currently it's useful to build
 custom %{name}-flavor package.
 
 
 %prep
 %setup -q
 
+# Create a sysusers.d config file
+cat >copr-frontend.sysusers.conf <<EOF
+u copr-fe - 'COPR frontend user' %{_datadir}/copr/coprs_frontend /bin/bash
+EOF
+
 
 %build
 %if %{with doc}
 COPR_CONFIG=../../documentation/copr-documentation.conf \
   make -C documentation %{?_smp_mflags} python
 %endif
 
 
@@ -291,26 +296,23 @@ Requires: copr-frontend
 %%copr_frontend_templatedir       %templatedir
 %%copr_frontend_chroot_logodir    %%copr_frontend_staticdir/chroot_logodir
 EOF
 
 %py_byte_compile %{__python3} %{buildroot}%{_datadir}/copr/coprs_frontend/coprs
 %py_byte_compile %{__python3} %{buildroot}%{_datadir}/copr/coprs_frontend/alembic
 %py_byte_compile %{__python3} %{buildroot}%{_datadir}/copr/coprs_frontend/tests
 
+install -m0644 -D copr-frontend.sysusers.conf %{buildroot}%{_sysusersdir}/copr-frontend.conf
+
 %check
 %if %{with check}
 ./run_tests.sh -vv --no-cov
 %endif
 
-%pre
-getent group copr-fe >/dev/null || groupadd -r copr-fe
-getent passwd copr-fe >/dev/null || \
-useradd -r -g copr-fe -G copr-fe -d %{_datadir}/copr/coprs_frontend -s /bin/bash -c "COPR frontend user" copr-fe
-usermod -L copr-fe
 
 
 %post
 /bin/systemctl condrestart httpd.service || :
 %systemd_post fm-consumer@copr_messaging.service
 
 
 %preun
@@ -355,16 +357,17 @@ usermod -L copr-fe
 %defattr(-, root, root, -)
 %config %{_sysconfdir}/cron.hourly/copr-frontend
 %config %{_sysconfdir}/cron.daily/copr-frontend
 %config(noreplace) %{_sysconfdir}/cron.hourly/copr-frontend-optional
 %config(noreplace) %{_sysconfdir}/cron.daily/copr-frontend-optional
 %{_libexecdir}/copr_dump_db.sh
 %exclude_files flavor
 %exclude_files devel
+%{_sysusersdir}/copr-frontend.conf
 
 
 %files fedora
 %license LICENSE
 %flavor_files
 
 
 %files devel
@@ -378,16 +381,19 @@ usermod -L copr-fe
 %if %{with doc}
 %files doc
 %license LICENSE
 %doc documentation/python-doc
 %endif
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.1-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.1-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Oct 03 2024 Pavel Raiskup <praiskup@redhat.com> 2.1-1
 - bugfix Packit 500, attempt no. 2
 
 * Wed Oct 02 2024 Jiri Kyjovsky <j1.kyjovsky@gmail.com> 2.0-1
 - Show Webhook History table under Settings -> Integrations
diff --git copr-keygen/copr-keygen.spec copr-keygen/copr-keygen.spec.tmp
index 75cb1ed3a8..b5a34444b0 100644
--- copr-keygen/copr-keygen.spec
+++ copr-keygen/copr-keygen.spec.tmp
@@ -1,14 +1,14 @@
 %global with_test 1
 %global copr_common_version 0.16.3.dev
 
 Name:       copr-keygen
 Version:    2.0
-Release:    2%{?dist}
+Release:    3%{?dist}
 Summary:    Part of Copr build system. Aux service that generate keys for signd
 
 License:    GPL-2.0-or-later
 URL:        https://github.com/fedora-copr/copr
 
 # Source is created by:
 # git clone %%url && cd copr
 # tito build --tgz --tag %%name-%%version-%%release
@@ -74,16 +74,21 @@ and submit new builds and COPR will create yum repository from latests builds.
 This package contains document for copr-keygen service.
 
 %endif
 
 
 %prep
 %setup -q
 
+# Create a sysusers.d config file
+cat >copr-keygen.sysusers.conf <<EOF
+u copr-signer - 'Copr rpm signer' %{_datadir}/copr-keygen /bin/bash
+EOF
+
 
 %build
 %py3_build
 
 # We currently have FTBFS errors for F37/Rawhide, related issues:
 # https://bugzilla.redhat.com/show_bug.cgi?id=2113156
 # https://bugzilla.redhat.com/show_bug.cgi?id=2105348
 # https://bugzilla.redhat.com/show_bug.cgi?id=2007282
@@ -122,25 +127,22 @@ cp -a configs/sudoers/copr_signer %{buildroot}%{_sysconfdir}/sudoers.d/copr_sign
 
 # FTBFS - See above
 %if 0%{?fedora} <= 36 && 0%{?fedora}
 cp -a docs/_build/html %{buildroot}%{_pkgdocdir}/
 %{__install} -p -m 0644 configs/httpd/copr-keygen.conf.example %{buildroot}%{_pkgdocdir}/httpd/
 %{__install} -p -m 0644 configs/sign/sign.conf.example %{buildroot}%{_pkgdocdir}/sign/sign.conf.example
 %endif
 
+install -m0644 -D copr-keygen.sysusers.conf %{buildroot}%{_sysusersdir}/copr-keygen.conf
+
 %check
 ./run_tests.sh -vv --no-cov
 
 
-%pre
-getent group copr-signer >/dev/null || groupadd -r copr-signer
-getent passwd copr-signer >/dev/null || \
-  useradd -r -g copr-signer -G copr-signer -d %{_datadir}/copr-keygen -s /bin/bash -c "Copr rpm signer" copr-signer
-/usr/bin/passwd -l copr-signer >/dev/null
 
 
 %post
 systemctl condrestart httpd &>/dev/null || :
 
 %postun
 systemctl condrestart httpd &>/dev/null || :
 
@@ -161,23 +163,27 @@ systemctl condrestart httpd &>/dev/null || :
 %config %{_sysconfdir}/sudoers.d/copr_signer
 
 # Only copr-signer owned files go below!
 %defattr(600, copr-signer, copr-signer, 700)
 %{_sharedstatedir}/copr-keygen
 %config(noreplace) %{_sysconfdir}/copr-keygen
 %dir %{_localstatedir}/log/copr-keygen
 %ghost %{_localstatedir}/log/copr-keygen/main.log
+%{_sysusersdir}/copr-keygen.conf
 
 %if 0%{?fedora}
 %files -n copr-keygen-doc
 %doc %{_pkgdocdir}
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.0-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Oct 02 2024 Jiri Kyjovsky <j1.kyjovsky@gmail.com> 2.0-1
 - Drop support for python2
 
 * Fri Mar 01 2024 Pavel Raiskup <praiskup@redhat.com> 1.92-1
 - keep logs 6 weeks instead of 13
diff --git corosync-qdevice/corosync-qdevice.spec corosync-qdevice/corosync-qdevice.spec.tmp
index f146b0028c..6d0caeb0cf 100644
--- corosync-qdevice/corosync-qdevice.spec
+++ corosync-qdevice/corosync-qdevice.spec.tmp
@@ -6,17 +6,17 @@
 %bcond_without systemd
 
 %global gitver %{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}
 %global gittarver %{?numcomm:.%{numcomm}}%{?alphatag:-%{alphatag}}%{?dirty:-%{dirty}}
 
 Name: corosync-qdevice
 Summary: The Corosync Cluster Engine Qdevice
 Version: 3.0.3
-Release: 7%{?gitver}%{?dist}
+Release: 8%{?gitver}%{?dist}
 License: BSD-3-Clause
 URL: https://github.com/corosync/corosync-qdevice
 Source0: https://github.com/corosync/corosync-qdevice/releases/download/v%{version}%{?gittarver}/%{name}-%{version}%{?gittarver}.tar.gz
 
 # Runtime bits
 Requires: corosync >= 2.4.0
 Requires: corosynclib >= 2.4.0
 Requires: nss-tools
@@ -41,16 +41,21 @@ BuildRequires: nss-devel
 %if %{with runautogen}
 BuildRequires: autoconf automake libtool
 %endif
 BuildRequires: make
 
 %prep
 %setup -q -n %{name}-%{version}%{?gittarver}
 
+# Create a sysusers.d config file
+cat >corosync-qdevice.sysusers.conf <<EOF
+u coroqnetd - 'User for corosync-qnetd' / -
+EOF
+
 %build
 %if %{with runautogen}
 ./autogen.sh
 %endif
 
 %{configure} \
 %if %{with userflags}
 	--enable-user-flags \
@@ -83,16 +88,18 @@ install -p -m 644 init/corosync-qnetd.sysconfig.example \
 %if %{with systemd}
 sed -i -e 's/^#User=/User=/' \
    %{buildroot}%{_unitdir}/corosync-qnetd.service
 %else
 sed -i -e 's/^COROSYNC_QNETD_RUNAS=""$/COROSYNC_QNETD_RUNAS="coroqnetd"/' \
    %{buildroot}%{_sysconfdir}/sysconfig/corosync-qnetd
 %endif
 
+install -m0644 -D corosync-qdevice.sysusers.conf %{buildroot}%{_sysusersdir}/corosync-qdevice.conf
+
 %description
 This package contains the Corosync Cluster Engine Qdevice, script for creating
 NSS certificates and an init script.
 
 %post
 %if %{with systemd} && 0%{?systemd_post:1}
 %systemd_post corosync-qdevice.service
 %else
@@ -144,31 +151,25 @@ The Corosync Cluster Engine Qdevice
 
 %files -n corosync-qdevice-devel
 %license LICENSE
 %{_datadir}/pkgconfig/corosync-qdevice.pc
 
 %package -n corosync-qnetd
 Summary: The Corosync Cluster Engine Qdevice Network Daemon
 Requires: nss-tools
-Requires(pre): shadow-utils
 
 %if %{with systemd}
 %{?systemd_requires}
 %endif
 
 %description -n corosync-qnetd
 This package contains the Corosync Cluster Engine Qdevice Network Daemon,
 script for creating NSS certificates and an init script.
 
-%pre -n corosync-qnetd
-getent group coroqnetd >/dev/null || groupadd -r coroqnetd
-getent passwd coroqnetd >/dev/null || \
-    useradd -r -g coroqnetd -d / -s /sbin/nologin -c "User for corosync-qnetd" coroqnetd
-exit 0
 
 %post -n corosync-qnetd
 %if %{with systemd} && 0%{?systemd_post:1}
 %systemd_post corosync-qnetd.service
 %else
 if [ $1 -eq 1 ]; then
 	/sbin/chkconfig --add corosync-qnetd || :
 fi
@@ -200,18 +201,22 @@ fi
 %if %{with systemd}
 %{_unitdir}/corosync-qnetd.service
 %else
 %{_initrddir}/corosync-qnetd
 %endif
 %{_mandir}/man8/corosync-qnetd-tool.8*
 %{_mandir}/man8/corosync-qnetd-certutil.8*
 %{_mandir}/man8/corosync-qnetd.8*
+%{_sysusersdir}/corosync-qdevice.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.0.3-8
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.3-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.3-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.3-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git crack/crack.spec crack/crack.spec.tmp
index 5d69c246f8..307a7ebbcf 100644
--- crack/crack.spec
+++ crack/crack.spec.tmp
@@ -1,12 +1,12 @@
 Summary:   Password cracker
 Name:      crack
 Version:   5.0a
-Release:   48%{?dist}
+Release:   49%{?dist}
 # Automatically converted from old format: Artistic clarified - review is highly recommended.
 License:   ClArtistic
 Source:    ftp://ftp.cerias.purdue.edu/pub/tools/unix/pwdutils/crack/%{name}5.0.tar.gz
 Patch0:    %{name}-chris.patch
 Patch1:    %{name}-FHS.patch
 URL:       https://dropsafe.crypticide.com/alecm/software/crack/c50-faq.html
 BuildRequires: words, gawk, gcc
 BuildRequires: make
@@ -32,16 +32,21 @@ ln src/util/elcid.c,bsd src/util/elcid.c
 mkdir run bin
 # Try not to pollute bin namespace
 sed -i -e 's/Reporter/CrackReporter/g' doc/gui.txt manual.html manual.txt
 %patch -P0 -p1 -b .chris
 sed -i 's|/usr/dict/|/usr/share/dict/|g' conf/dictgrps.conf
 # Alter script to use FHS layout
 %patch -P1 -p1 -b .FHS
 
+# Create a sysusers.d config file
+cat >crack.sysusers.conf <<EOF
+g crack -
+EOF
+
 %build
 %global build_type_safety_c 0
 C5FLAGS="-D_XOPEN_SOURCE -DUSE_STRING_H -DUSE_STDLIB_H -DUSE_SIGNAL_H -DUSE_SYS_TYPES_H -DUSE_UNISTD_H -DUSE_PWD_H"
 make XDIR=../../bin XCC=gcc XCFLAGS="$RPM_OPT_FLAGS $C5FLAGS" XLIBS=-lcrypt utils
 CRACK_HOME=`pwd` CRACK_BIN_HOME=`pwd` CRACK_STATE_DIR=`pwd` ./Crack -makedict
 
 
 %install
@@ -52,37 +57,42 @@ mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}
 mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/%{name}
 mkdir -p $RPM_BUILD_ROOT%{_sharedstatedir}/%{name}
 cp -a bin $RPM_BUILD_ROOT%{_libexecdir}/%{name} 
 cp -a conf dict scripts $RPM_BUILD_ROOT%{_datadir}/%{name}
 cp -a run $RPM_BUILD_ROOT%{_sharedstatedir}/%{name}
 install -p -m0755 Crack $RPM_BUILD_ROOT%{_bindir}/Crack
 install -p -m0755 Reporter $RPM_BUILD_ROOT%{_bindir}/CrackReporter
 
+install -m0644 -D crack.sysusers.conf %{buildroot}%{_sysusersdir}/crack.conf
+
 
 
 %pre
 if [ $1 -eq 1 ]; then
-    groupadd -r crack >/dev/null 2>&1 || :
 fi
 
 
 %files
 %doc LICENCE manual.* doc
 %attr(00750, root, crack) %{_bindir}/Crack*
 %{_libexecdir}/%{name}/
 %{_datadir}/%{name}/
 %dir %{_sharedstatedir}/%{name}/
 %attr(02770, root, crack) %dir %{_sharedstatedir}/%{name}/run/
 %attr(02770, root, crack) %dir %{_sharedstatedir}/%{name}/run/dict/
 %attr(00640, root, crack) %{_sharedstatedir}/%{name}/run/dict/*
 %attr(00640, root, crack) %{_sharedstatedir}/%{name}/run/dict/.dictmade
+%{_sysusersdir}/crack.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 5.0a-49
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5.0a-48
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Aug 07 2024 Miroslav Suchý <msuchy@redhat.com> - 5.0a-47
 - convert license to SPDX
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.0a-46
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git crossfire/crossfire.spec crossfire/crossfire.spec.tmp
index 29e02c0a3f..e2124b50f0 100644
--- crossfire/crossfire.spec
+++ crossfire/crossfire.spec.tmp
@@ -4,17 +4,17 @@
 
 
 %define logwatch_root %{_datadir}/logwatch
 %define logwatch_conf %{logwatch_root}/dist.conf
 %define logwatch_scripts %{logwatch_root}/scripts
 
 Name: crossfire
 Version: 1.71.0
-Release: 30%{?dist}
+Release: 31%{?dist}
 Summary: Server for hosting crossfire games
 # All files GPLv2+ except server/daemon.c which also has MIT attributions
 License: GPL-2.0-or-later and MIT
 URL: http://crossfire.real-time.com
 
 Source0: http://downloads.sourceforge.net/crossfire/%{name}-%{version}.tar.bz2
 Source1: http://downloads.sourceforge.net/crossfire/%{name}-%{version}.arch.tar.bz2
 Source2: crossfire.service
@@ -119,16 +119,21 @@ sed -i 's#\r##' utils/player_dl.pl.in
 sed -i "s#^\$TMPDIR=.*#\$TMPDIR=\"`pwd`\";#" lib/adm/collect_images.pl
 # Don't map stdio streams to /
 # This is fixed in CVS, but didn't make it into the 1.9.1 release.
 sed -i 's#    (void) open ("/", O_RDONLY);#    (void) open ("/var/log/crossfire/crossfire.log", O_RDONLY);#' server/daemon.c
 
 # Change the location of the tmp directory
 sed -i "s@^#define TMPDIR \"/tmp\"@#define TMPDIR \"%{_var}/games/%{name}/tmp\"@" include/config.h
 
+# Create a sysusers.d config file
+cat >crossfire.sysusers.conf <<EOF
+u crossfire - 'Daemon account for the crossfire server' %{_datadir}/%{name} -
+EOF
+
 %build
 # Change the localstatedir so that the variable data files are
 # put in /var/games/crossfire instead of /var/crossfire.  This is
 # in agreement with the FHS.
 %configure --localstatedir=%{_var}/games --disable-static
 
 #make %%{?_smp_mflags} # parallel build is broken
 make CFLAGS="$RPM_OPT_FLAGS"
@@ -212,23 +217,19 @@ popd
 # Hardlink identical policy module packages together
 /usr/bin/hardlink -cv $RPM_BUILD_ROOT%{_datadir}/selinux
 
 # Install logwatch files
 install -pD -m 0644 %{SOURCE8} $RPM_BUILD_ROOT%{logwatch_conf}/logfiles/%{name}.conf
 install -pD -m 0755 %{SOURCE9} $RPM_BUILD_ROOT%{logwatch_scripts}/services/%{name}
 install -pD -m 0644 %{SOURCE10} $RPM_BUILD_ROOT%{logwatch_conf}/services/%{name}.conf
 
+install -m0644 -D crossfire.sysusers.conf %{buildroot}%{_sysusersdir}/crossfire.conf
+
 
-%pre
-getent group crossfire >/dev/null || groupadd -r crossfire
-getent passwd crossfire >/dev/null || \
-useradd -r -g crossfire -d %{_datadir}/%{name} -s /sbin/nologin \
-    -c "Daemon account for the crossfire server" crossfire
-exit 0
 
 %post
 if [ $1 -eq 1 ] ; then 
     # Initial installation 
     /bin/systemctl daemon-reload >/dev/null 2>&1 || :
 fi
 
 
@@ -307,16 +308,17 @@ fi
 %config(noreplace) %{_sysconfdir}/%{name}/metaserver2
 %config(noreplace) %{_sysconfdir}/%{name}/stat_bonus
 %attr(-,crossfire,root) %{_var}/games/%{name}
 %attr(-,crossfire,root) %{_var}/log/%{name}
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
 %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
 %{_mandir}/man6/*
 %{_unitdir}/%{name}.service
+%{_sysusersdir}/crossfire.conf
 
 %files doc
 %doc doc/Developers doc/playbook* doc/scripts doc/spell-docs doc/spoiler doc/spoiler-html doc/*.txt
 
 #%files devel
 #%defattr(-,root,root,-)
 #%%{_bindir}/crossfire-config
 #%doc doc/plugins
@@ -333,16 +335,19 @@ fi
 
 %files logwatch
 %{logwatch_conf}/logfiles/%{name}.conf
 %{logwatch_conf}/services/%{name}.conf
 %{logwatch_scripts}/services/%{name}
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.71.0-31
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.71.0-30
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.71.0-29
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.71.0-28
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git cyrus-imapd/cyrus-imapd.spec cyrus-imapd/cyrus-imapd.spec.tmp
index 1b44b5e05a..10a97e8e6f 100644
--- cyrus-imapd/cyrus-imapd.spec
+++ cyrus-imapd/cyrus-imapd.spec.tmp
@@ -208,19 +208,17 @@ BuildRequires: perl(XML::Spice)
 BuildRequires: perl(DBD::SQLite)
 BuildRequires: perl(Digest::CRC)
 BuildRequires: perl(Moo)
 BuildRequires: perl(String::CRC32)
 BuildRequires: perl(Types::Standard)
 BuildRequires: perl(Unix::Syslog)
 %endif
 
-Requires(pre): shadow-utils
 %{?systemd_requires}
-%{?sysusers_requires_compat}
 
 Requires: cyrus-imapd-libs%{?_isa} = %{version}-%{release}
 Requires: cyrus-imapd-utils = %{version}-%{release}
 Requires: file sscg
 
 %{?perl_default_filter}
 
 %description
@@ -693,18 +691,16 @@ sudo -u cyrus -g mail LD_LIBRARY_PATH=%buildroot/%_libdir ./testrunner.pl -j%{?_
 # CASSANDANE_END
 
 if [ -s "work/failed" ]; then
    cat work/failed
    exit 1
 fi
 
 
-%pre
-%sysusers_create_compat %{SOURCE19}
 
 %post
 %systemd_post cyrus-imapd.service
 
 %preun
 %systemd_preun cyrus-imapd.service
 
 %postun
diff --git dahdi-tools/dahdi-tools.spec dahdi-tools/dahdi-tools.spec.tmp
index ad90fc54a3..6f51b633e6 100644
--- dahdi-tools/dahdi-tools.spec
+++ dahdi-tools/dahdi-tools.spec.tmp
@@ -1,14 +1,14 @@
 %global tools_version 2.11.1
 %global linux_version 2.11.1
 
 Name:           dahdi-tools
 Version:        %{tools_version}
-Release:        34%{?dist}
+Release:        35%{?dist}
 Summary:        Userspace tools to configure the DAHDI kernel modules
 
 # Automatically converted from old format: GPLv2 and LGPLv2 - review is highly recommended.
 License:        GPL-2.0-only AND LicenseRef-Callaway-LGPLv2
 URL:            http://www.asterisk.org/
 
 Source0:        http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/dahdi-tools-%{tools_version}.tar.gz
 Source1:        http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/dahdi-tools-%{tools_version}.tar.gz.asc
@@ -45,18 +45,16 @@ BuildRequires:  perl-podlators
 BuildRequires:  perl-generators
 BuildRequires:  udev
 %{?systemd_requires}
 
 Requires:        dahdi-tools-libs%{?_isa} = %{version}-%{release}
 %if 0%{?fedora} || 0%{?rhel} >= 8
 Requires:        systemd-udev
 %endif
-Requires(pre):   %{_sbindir}/useradd
-Requires(pre):   %{_sbindir}/groupadd
 
 Conflicts:       zaptel-utils
 
 %description
 DAHDI stands for Digium Asterisk Hardware Device Interface. This
 package contains the userspace tools to configure the DAHDI kernel
 modules.  DAHDI is the replacement for Zaptel, which must be renamed
 due to trademark issues.
@@ -97,16 +95,21 @@ sed -i -e \
    's/675 Mass Ave, Cambridge, MA 02139/51 Franklin St, Boston, MA 02110/' \
    xpp/*.c xpp/*.h xpp/xtalk/*.c xpp/xtalk/*.h xpp/xtalk/include/xtalk/*.h \
    xpp/waitfor_xpds xpp/xpp_fxloader
 
 sed -i -e \
    's/59 Temple Place, Suite 330, Boston, MA  02111-1307/51 Franklin St, Boston, MA 02110/' \
    LICENSE
 
+# Create a sysusers.d config file
+cat >dahdi-tools.sysusers.conf <<EOF
+u dahdi - 'DAHDI User' /usr/share/dahdi -
+EOF
+
 
 %build
 autoreconf -fi
 %configure --with-dahdi=`pwd` --enable-shared --with-pic --with-perllib=%{perl_vendorlib}
 
 # allow overrding the variable in Makefile
 #sed -i s/UDEVRULES_DIR:=/UDEVRULES_DIR=/ Makefile
 
@@ -119,20 +122,18 @@ install -D -p -m 0644 include/dahdi/user.h %{buildroot}%{_includedir}/dahdi/user
 install -D -p -m 0644 include/dahdi/user.h %{buildroot}%{_includedir}/dahdi/dahdi_config.h
 find %{buildroot} -name '*.a' -delete
 rm -f %{buildroot}%{_sbindir}/sethdlc
 rm -f %{buildroot}%{_libdir}/libtonezone.la
 chrpath --delete %{buildroot}%{_sbindir}/dahdi_cfg
 mkdir -p %{buildroot}%{_unitdir}
 install -D -p -m 0644 dahdi.service %{buildroot}%{_unitdir}/dahdi.service
 
-%pre
-%{_sbindir}/groupadd -r dahdi &>/dev/null || :
-%{_sbindir}/useradd  -r -s /sbin/nologin -d /usr/share/dahdi -M \
-                               -c 'DAHDI User' -g dahdi dahdi &>/dev/null || :
+install -m0644 -D dahdi-tools.sysusers.conf %{buildroot}%{_sysusersdir}/dahdi-tools.conf
+
 
 %post
 %systemd_post dahdi.service
 
 %preun
 %systemd_preun dahdi.service
 
 %postun
@@ -206,27 +207,31 @@ install -D -p -m 0644 dahdi.service %{buildroot}%{_unitdir}/dahdi.service
 %{_mandir}/man8/twinstar.8.gz
 %{_mandir}/man8/xpp_blink.8.gz
 %{_mandir}/man8/xpp_sync.8.gz
 %{perl_vendorlib}/Dahdi.pm
 %{perl_vendorlib}/Dahdi
 %{_sbindir}/xtalk_send
 %{_mandir}/man8/xtalk_send.8.gz
 %{_unitdir}/dahdi.service
+%{_sysusersdir}/dahdi-tools.conf
 
 %files libs
 %license LICENSE LICENSE.LGPL
 %{_libdir}/*.so.*
 
 %files devel
 %license LICENSE LICENSE.LGPL
 %{_includedir}/*
 %{_libdir}/*.so
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.11.1-35
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.11.1-34
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Aug 28 2024 Miroslav Suchý <msuchy@redhat.com> - 2.11.1-33
 - convert license to SPDX
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.11.1-32
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git darkstat/darkstat.spec darkstat/darkstat.spec.tmp
index 2bfded2b27..94ea96531f 100644
--- darkstat/darkstat.spec
+++ darkstat/darkstat.spec.tmp
@@ -1,12 +1,12 @@
 Name:		darkstat
 Summary:	Network traffic analyzer
 Version:	3.0.721
-Release:	9%{?dist}
+Release:	10%{?dist}
 # Automatically converted from old format: GPLv2 - review is highly recommended.
 License:	GPL-2.0-only
 
 URL:		https://unix4lyfe.org/darkstat
 Source:		https://github.com/emikulic/darkstat/archive/%{version}/%{name}-%{version}.tar.gz
 
 Source1:	%{name}.service
 Source2:	%{name}.sysconfig
@@ -28,32 +28,33 @@ Requires(postun): systemd
 %description
 darkstat is a network traffic analyzer. It's basically a packet sniffer
 which runs as a background process on a cable/DSL router and gathers
 all sorts of useless but interesting statistics.
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >darkstat.sysusers.conf <<EOF
+u darkstat - 'Network traffic analyzer' /var/lib/darkstat -
+EOF
+
 %build
 autoreconf -ifv
 %configure --disable-silent-rules
 %make_build
 
 %install
 %make_install
 install -Dpm444 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
 install -Dpm644 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/%{name}
 
-%pre
-getent group darkstat >/dev/null || groupadd -r darkstat
-getent passwd darkstat >/dev/null || \
-	useradd -r -g darkstat -d /var/lib/darkstat -s /sbin/nologin \
-	-c "Network traffic analyzer" darkstat
-exit 0
+install -m0644 -D darkstat.sysusers.conf %{buildroot}%{_sysusersdir}/darkstat.conf
+
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %postun
@@ -61,18 +62,22 @@ exit 0
 
 %files
 %license COPYING.GPL LICENSE
 %doc AUTHORS NEWS README.md
 %attr(0755, darkstat, root) %{_sbindir}/%{name}
 %attr(0644, darkstat, root) %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
 %{_mandir}/man8/%{name}*
 %{_unitdir}/%{name}.service
+%{_sysusersdir}/darkstat.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.0.721-10
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.721-9
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Jul 29 2024 Miroslav Suchý <msuchy@redhat.com> - 3.0.721-8
 - convert license to SPDX
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.721-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git davfs2/davfs2.spec davfs2/davfs2.spec.tmp
index a46bf5eb20..99796175f2 100644
--- davfs2/davfs2.spec
+++ davfs2/davfs2.spec.tmp
@@ -1,11 +1,11 @@
 Name:           davfs2
 Version:        1.7.1
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        A filesystem driver for WebDAV
 # Automatically converted from old format: GPLv3+ - review is highly recommended.
 License:        GPL-3.0-or-later
 URL:            https://savannah.nongnu.org/projects/davfs2
 Source0:        https://download.savannah.gnu.org/releases/davfs2/%{name}-%{version}.tar.gz
 Source1:        https://download.savannah.gnu.org/releases/davfs2/%{name}-%{version}.tar.gz.sig
 # key retrieved via
 #  wget -O davfs2-memberlist-gpgkeys.asc 'https://savannah.nongnu.org/project/memberlist-gpgkeys.php?group=davfs2&download=1'
@@ -17,31 +17,36 @@ Patch0:         davfs2-neon-34.patch
 
 Conflicts:      filesystem < 3
 BuildRequires:  automake
 BuildRequires:  gcc
 BuildRequires:  gettext
 BuildRequires:  gnupg2
 BuildRequires:  neon-devel
 BuildRequires:  make
-Requires(pre):  shadow-utils
 
 %define cachedir /var/cache/davfs2
 %define piddir /var/run/mount.davfs
 %define username davfs2
 %define groupname %{username}
 
 %description
 davfs2 is a Linux file system driver that allows you to mount a WebDAV server
 as a disk drive.
 
 %prep
 %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >davfs2.sysusers.conf <<EOF
+g davfs2 -
+u davfs2 - 'User account for %{name}' %{cachedir} -
+EOF
+
 %build
 export CFLAGS="%{optflags} -fno-strict-aliasing"
 %configure ssbindir=%{_sbindir}
 %make_build
 
 
 %install
 %make_install
@@ -53,23 +58,19 @@ rm -rf $RPM_BUILD_ROOT/usr/share/doc/davfs2
 # Remove suid bit, to work around a problem with brp-strip on suid binaries
 chmod 0755 $RPM_BUILD_ROOT/%{_sbindir}/mount.davfs
 # UTF8ify translated man pages
 find $RPM_BUILD_ROOT/%{_mandir}/{de,es} -name "*.[58].gz" | while read m; do 
   gzip -dc $m | iconv -f "ISO8859-15" -t "UTF-8" - -o - | gzip -c9 > $m.utf8
   mv -f $m.utf8 $m
 done
 
+install -m0644 -D davfs2.sysusers.conf %{buildroot}%{_sysusersdir}/davfs2.conf
+
 
-%pre
-getent group  %{groupname} >/dev/null || groupadd -r %{groupname}
-getent passwd %{username} >/dev/null || \
-  useradd -r -g %{groupname} -d %{cachedir} -s /sbin/nologin \
-          -c "User account for %{name}" %{username}
-exit 0
 
 
 %files -f %{name}.lang
 # Docs
 %doc AUTHORS BUGS ChangeLog FAQ INSTALL NEWS README.md README.translators THANKS TODO
 %license COPYING
 %{_mandir}/man5/*.gz
 %{_mandir}/man8/*.gz
@@ -89,18 +90,22 @@ exit 0
 # Binaries
 %{_sbindir}/umount.davfs
 # re-apply suid bit to mount.davfs
 %attr (4755,root,root) %{_sbindir}/mount.davfs
 
 # Extra dirs needed by mount.davfs
 %ghost %dir %attr(00775,root,%{groupname}) %{cachedir}
 %ghost %dir %attr(01775,root,%{groupname}) %{piddir}
+%{_sysusersdir}/davfs2.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.7.1-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Dec 06 2024 Felix Schwarz <fschwarz@fedoraproject.org> - 1.7.1-1
 - update to 1.7.1
 
 * Thu Jul 25 2024 Miroslav Suchý <msuchy@redhat.com> - 1.7.0-7
 - convert license to SPDX
diff --git ddclient/ddclient.spec ddclient/ddclient.spec.tmp
index bcd1146728..439c532d48 100644
--- ddclient/ddclient.spec
+++ ddclient/ddclient.spec.tmp
@@ -1,15 +1,15 @@
 %global cachedir %{_localstatedir}/cache/ddclient
 %global rundir   %{_rundir}/ddclient
 
 Summary:           Client to update dynamic DNS host entries
 Name:              ddclient
 Version:           4.0.0
-Release:           1%{?dist}
+Release:           2%{?dist}
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:           GPL-2.0-or-later
 URL:               https://ddclient.net/
 Source0:           https://github.com/%{name}/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
 Source1:           ddclient.rwtab
 Source2:           ddclient.service
 Source3:           ddclient.sysconfig
 Source4:           ddclient.NetworkManager
@@ -19,17 +19,16 @@ BuildArch:         noarch
 
 BuildRequires:     autoconf
 BuildRequires:     automake
 BuildRequires:     make
 BuildRequires:     perl-generators
 BuildRequires:     perl(Sys::Hostname)
 BuildRequires:     perl(version)
 BuildRequires:     systemd
-Requires(pre):     shadow-utils
 Requires(post):    systemd
 Requires(preun):   systemd
 Requires(postun):  systemd
 
 # For tests
 BuildRequires:     iproute
 BuildRequires:     perl(HTTP::Daemon)
 BuildRequires:     perl(HTTP::Daemon::SSL)
@@ -59,16 +58,21 @@ updates for multiple addresses, MX, wildcards, abuse avoidance, retrying
 the failed updates and sending update status to syslog and through e-mail.
 
 %prep
 %autosetup -p 1
 # Send less mail by default, eg. not on every shutdown.
 sed -e 's|^mail=|#mail=|' -i ddclient.conf.in
 ./autogen
 
+# Create a sysusers.d config file
+cat >ddclient.sysusers.conf <<EOF
+u ddclient - 'Dynamic DNS Client' %{_localstatedir}/cache/%{name} -
+EOF
+
 
 %build
 %configure --runstatedir=%{rundir}
 make
 
 
 %install
 install -D -p -m 755 %{name} $RPM_BUILD_ROOT%{_sbindir}/%{name}
@@ -88,25 +92,23 @@ install -D -p -m 644 %{SOURCE5} \
 
 mkdir -p $RPM_BUILD_ROOT%{cachedir}
 mkdir -p $RPM_BUILD_ROOT%{rundir}
 touch $RPM_BUILD_ROOT%{cachedir}/%{name}.cache
 
 # Correct permissions for later usage in %doc
 chmod 644 sample-*
 
+install -m0644 -D ddclient.sysusers.conf %{buildroot}%{_sysusersdir}/ddclient.conf
+
 
 %check
 make VERBOSE=1 check
 
 
-%pre
-getent group %{name} > /dev/null || %{_sbindir}/groupadd -r %{name}
-getent passwd %{name} > /dev/null || %{_sbindir}/useradd -r -g %{name} -d %{_localstatedir}/cache/%{name} -s /sbin/nologin -c "Dynamic DNS Client" %{name}
-exit 0
 
 %post
 %systemd_post %{name}.service
 if [ $1 == 1 ]; then
     mkdir -p %{rundir}
     chown %{name}:%{name} %{rundir}
 fi
 
@@ -132,19 +134,23 @@ fi
 %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
 %attr(600,%{name},%{name}) %config(noreplace) %{_sysconfdir}/%{name}.conf
 %{_prefix}/lib/NetworkManager/dispatcher.d/50-%{name}
 
 # localstatedir
 %attr(0700,%{name},%{name}) %dir %{cachedir}
 %attr(0600,%{name},%{name}) %ghost %{cachedir}/%{name}.cache
 %ghost %attr(0755,%{name},%{name}) %dir %{rundir}
+%{_sysusersdir}/ddclient.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.0.0-2
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Wed Jan 22 2025 Scott Talbert <swt@techie.net> - 4.0.0-1
 - Update to new upstream release 4.0.0 (#2334061)
 
 * Wed Jan 22 2025 Scott Talbert <swt@techie.net> - 3.11.2-7
 - Fix FTBFS with newer autoconf
 
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.11.2-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
diff --git deluge/deluge.spec deluge/deluge.spec.tmp
index 3805f93860..ffcfdc764c 100644
--- deluge/deluge.spec
+++ deluge/deluge.spec.tmp
@@ -1,11 +1,11 @@
 Name:           deluge
 Version:        2.1.1
-Release:        11%{?dist}
+Release:        12%{?dist}
 Summary:        A GTK+ BitTorrent client with support for DHT, UPnP, and PEX
 # Automatically converted from old format: GPLv3 with exceptions - review is highly recommended.
 License:        LicenseRef-Callaway-GPLv3-with-exceptions
 URL:            http://deluge-torrent.org/
 Source0:        https://ftp.osuosl.org/pub/deluge/source/2.0/%{name}-%{version}.tar.xz
 Source1:        https://ftp.osuosl.org/pub/deluge/source/2.0/%{name}-%{version}.tar.xz.sha256
 Source2:        deluge-daemon.service
 Source3:        deluge-web.service
@@ -99,24 +99,28 @@ Requires:   %{name}-daemon = %{version}-%{release}
 %description web
 Deluge bittorent client web interface
 
 %package daemon
 Summary:    The Deluge daemon
 # Automatically converted from old format: GPLv3 with exceptions - review is highly recommended.
 License:    LicenseRef-Callaway-GPLv3-with-exceptions
 Requires:   %{name}-common = %{version}-%{release}
-Requires(pre): shadow-utils
 
 %description daemon
 Files for the Deluge daemon
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >deluge.sysusers.conf <<EOF
+u deluge - 'deluge daemon account' %{_sharedstatedir}/%{name} -
+EOF
+
 %build
 %py3_build
 
 %install
 %py3_install
 
 # http://dev.deluge-torrent.org/ticket/2034
 mkdir -p %{buildroot}%{_unitdir}
@@ -155,16 +159,18 @@ pushd %{buildroot}
             s:%lang(C) ::
             /^$/d' \
     > %{name}.lang
 
 ## Now we move that list back to our sources, so that '%%files -f' can find it
 ## properly.
 popd && mv %{buildroot}/%{name}.lang .
 
+install -m0644 -D deluge.sysusers.conf %{buildroot}%{_sysusersdir}/deluge.conf
+
 %files
 
 %files common -f %{name}.lang
 %doc CHANGELOG.md LICENSE README.md
 
 %{python3_sitelib}/%{name}-%{version}-py%{python3_version}.egg-info/
 %dir %{python3_sitelib}/%{name}
 %{python3_sitelib}/%{name}/__pycache__
@@ -209,23 +215,18 @@ popd && mv %{buildroot}/%{name}.lang .
 %{_mandir}/man?/%{name}-web*
 %{_unitdir}/%{name}-web.service
 
 %files daemon
 %{_bindir}/%{name}d
 %{_unitdir}/%{name}-daemon.service
 %attr(-,%{name}, %{name})%{_sharedstatedir}/%{name}/
 %{_mandir}/man?/%{name}d*
+%{_sysusersdir}/deluge.conf
 
-%pre daemon
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /sbin/nologin \
-        -c "deluge daemon account" %{name}
-exit 0
 
 
 %post daemon
 %systemd_post deluge-daemon.service
 
 %post web
 %systemd_post deluge-web.service
 
@@ -237,16 +238,19 @@ exit 0
 
 %postun daemon
 %systemd_postun_with_restart deluge-daemon.service
 
 %postun web
 %systemd_postun_with_restart deluge-web.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.1.1-12
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.1-11
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Aug 28 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 2.1.1-10
 - Backport upstream patch to support python 3.13 cgi module removal (bug 2292651)
 
 * Wed Aug 28 2024 Miroslav Suchý <msuchy@redhat.com> - 2.1.1-9
 - convert license to SPDX
diff --git dhcp-forwarder/dhcp-forwarder.spec dhcp-forwarder/dhcp-forwarder.spec.tmp
index 65cb436283..c25a0df97b 100644
--- dhcp-forwarder/dhcp-forwarder.spec
+++ dhcp-forwarder/dhcp-forwarder.spec.tmp
@@ -1,12 +1,12 @@
 Summary: DHCP relay agent
 Name: dhcp-forwarder
 Version: 0.11
-Release: 23%{?dist}
+Release: 24%{?dist}
 # Automatically converted from old format: GPLv3 - review is highly recommended.
 License: GPL-3.0-only
 URL: http://www.nongnu.org/dhcp-fwd/
 Source0: http://savannah.nongnu.org/download/dhcp-fwd/%name-%version.tar.xz
 Source1: http://savannah.nongnu.org/download/dhcp-fwd/%name-%version.tar.xz.asc
 Source2: dhcp-forwarder.service
 
 BuildRequires:  gcc
@@ -28,16 +28,21 @@ ISC's DHCP, but has the following important features:
 * Uses AF_INET sockets which makes it possible to filter incoming
   messages with packetfilters
 * The DHCP agent IDs can be defined freely
 * Has a small memory footprint when using dietlibc
 
 %prep
 %setup -q
 
+# Create a sysusers.d config file
+cat >dhcp-forwarder.sysusers.conf <<EOF
+u dhcp-fwd - 'DHCP Forwarder user' %{_sharedstatedir}/dhcp-fwd -
+EOF
+
 %build
 %configure \
  --enable-release \
  --with-systemd-unitdir=%_unitdir \
  --disable-dietlibc
 
 make %{?_smp_mflags}
 
@@ -45,44 +50,44 @@ make %{?_smp_mflags}
 rm -rf %{buildroot}
 
 install -d %{buildroot}/%{_sharedstatedir}/dhcp-fwd \
  %{buildroot}/%{_unitdir} %{buildroot}/%{_sysconfdir}
 make DESTDIR=%{buildroot} install
 install %{SOURCE2} %{buildroot}/%{_unitdir}/dhcp-forwarder.service
 install contrib/dhcp-fwd.conf %{buildroot}/%{_sysconfdir}
 
+install -m0644 -D dhcp-forwarder.sysusers.conf %{buildroot}%{_sysusersdir}/dhcp-forwarder.conf
+
 %check
 make check
 
-%pre
-getent group dhcp-fwd >/dev/null || groupadd -r dhcp-fwd
-getent passwd dhcp-fwd >/dev/null || \
-    useradd -r -g dhcp-fwd -d %{_sharedstatedir}/dhcp-fwd -s /sbin/nologin \
-    -c "DHCP Forwarder user" dhcp-fwd
-exit 0
 
 %files
 %doc AUTHORS COPYING ChangeLog NEWS README
 %dir %attr(0755,root,root) %{_sharedstatedir}/dhcp-fwd
 %_sbindir/*
 %_mandir/*/*
 %attr(0644,root,root) %{_unitdir}/dhcp-forwarder.service
 %attr(0755,root,root) %config(noreplace) %{_sysconfdir}/dhcp-fwd.conf
+%{_sysusersdir}/dhcp-forwarder.conf
 
 %post
 %systemd_post dhcp-forwarder.service
 
 %preun
 %systemd_preun dhcp-forwarder.service
 
 %postun
 %systemd_postun_with_restart dhcp-forwarder.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.11-24
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.11-23
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Aug 07 2024 Miroslav Suchý <msuchy@redhat.com> - 0.11-22
 - convert license to SPDX
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.11-21
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git dictd/dictd.spec dictd/dictd.spec.tmp
index 340b653ab1..f18cece6ad 100644
--- dictd/dictd.spec
+++ dictd/dictd.spec.tmp
@@ -2,17 +2,17 @@
 # Do no change username -- hardcoded in dictd.c
 %global username    dictd
 %global homedir     %{_datadir}/dict/dictd
 %global selinux_variants mls targeted
 
 Summary:   DICT protocol (RFC 2229) server and command-line client
 Name:      dictd
 Version:   1.13.1
-Release:   5%{?dist}
+Release:   6%{?dist}
 License:   GPL-2.0-only AND GPL-2.0-or-later AND GPL-1.0-or-later AND GPL-3.0-or-later AND MIT AND BSD-3-Clause AND LicenseRef-Fedora-Public-Domain
 Source0:   https://github.com/cheusov/dictd/archive/%{version}/%{name}-%{version}.tar.gz
 Source1:   dictd.service
 Source2:   dictd2.te
 Source3:   dictd.conf
 Patch0:    0001-Fix-C99-compatibility-issues-in-lexer-parser-integra.patch
 Patch1:    0001-remove-use-of-deprecated-inet_aton-and-inet_ntoa.patch
 URL:       http://www.dict.org/
@@ -26,17 +26,16 @@ BuildRequires: libmaa-devel
 BuildRequires: byacc
 BuildRequires: libdbi-devel
 BuildRequires: zlib-devel
 BuildRequires: gawk
 BuildRequires: gcc
 BuildRequires: pkgconfig(systemd)
 BuildRequires: checkpolicy, selinux-policy-devel
 
-Requires(pre): shadow-utils
 
 %description
 Command-line client for the DICT protocol.  The Dictionary Server
 Protocol (DICT) is a TCP transaction based query/response protocol that
 allows a client to access dictionary definitions from a set of natural
 language dictionary databases.
 
 %package server
@@ -56,16 +55,21 @@ More information can be found in the INSTALL file in this package.
 
 %prep
 %autosetup -p1
 
 autoreconf -fv
 mkdir SELinux
 cp -p %{SOURCE2} SELinux
 
+# Create a sysusers.d config file
+cat >dictd.sysusers.conf <<EOF
+u dictd - 'dictd dictionary server' %{homedir} -
+EOF
+
 %build
 pushd SELinux
 for selinuxvariant in %{selinux_variants}
 do
   make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile
   mv dictd2.pp dictd2.pp.${selinuxvariant}
   make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile clean
 done
@@ -84,38 +88,35 @@ install -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/dictd.conf
 
 for selinuxvariant in %{selinux_variants}
 do
   install -d %{buildroot}%{_datadir}/selinux/${selinuxvariant}
   install -p -m 644 SELinux/dictd2.pp.${selinuxvariant} \
     %{buildroot}%{_datadir}/selinux/${selinuxvariant}/dictd2.pp
 done
 
+install -m0644 -D dictd.sysusers.conf %{buildroot}%{_sysusersdir}/dictd.conf
+
 
 %post server
 %systemd_post dictd.service
 
 %preun server
 %systemd_preun dictd.service
 
 %postun server
 %systemd_postun_with_restart dictd.service
 
-%pre
-getent group %{username} >/dev/null || groupadd -r %{username}
-getent passwd %{username} >/dev/null || \
-    useradd -r -g %{username} -d %{homedir} -s /sbin/nologin \
-    -c "dictd dictionary server" %{username}
-exit 0
 
 %files
 %doc ANNOUNCE COPYING README doc/rfc2229.txt doc/security.doc
 %doc examples/dict1.conf
 %{_bindir}/dict
 %{_mandir}/man1/dict.1*
+%{_sysusersdir}/dictd.conf
 
 %files server
 %doc ANNOUNCE COPYING INSTALL README doc/rfc2229.txt doc/security.doc
 %doc examples/dictd*
 %exclude %{_mandir}/man1/dict.1*
 %exclude %{_bindir}/dict
 %{_bindir}/dict_lookup
 %{_bindir}/dictfmt
@@ -137,16 +138,19 @@ exit 0
 %{_mandir}/man8/dictd.8*
 %attr(0644,root,root) %{_unitdir}/dictd.service
 %{homedir}
 %config(noreplace) %{_sysconfdir}/dictd.conf
 %doc SELinux
 %{_datadir}/selinux/*/dictd2.pp
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.13.1-6
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.1-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.1-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Mon Mar 11 2024 Carlos Rodriguez-Fernandez <carlosrodrifernandez@gmail.com> 1.13.1-3
 - Remove use of deprecated functions
diff --git dionaea/dionaea.spec dionaea/dionaea.spec.tmp
index 0ca98a0703..2bf202704f 100644
--- dionaea/dionaea.spec
+++ dionaea/dionaea.spec.tmp
@@ -1,13 +1,13 @@
 Name:           dionaea
 Version:        0.11.0
 Summary:        Low interaction honeypot
 # Show as the RPM release number (keep same number line for tarball and git builds)
-%global         baserelease     3
+%global         baserelease     4
 
 %if 0%{?rhel}
 # Group needed for EPEL
 Group:          Applications/System
 %endif
 
 # Dionaea package is licensed with GPLv2
 # On top of that it is granting one exception extra - it is permitted by the license
@@ -176,17 +176,16 @@ Requires:       python%{python3_pkgversion}-dionaea
 %{?systemd_requires}
 %else
 Requires(post): chkconfig
 Requires(preun): chkconfig
 Requires(preun): initscripts
 Requires(postun): initscripts
 %endif
 
-Requires(pre): shadow-utils
 
 %description
 Dionaea is low interaction honeypot. It is meant to be a nepenthes successor,
 embedding python as scripting language, using libemu to detect shell-codes,
 supporting ipv6 and TLS.
 
 
 # ============= documentation package ==========================================
@@ -261,16 +260,21 @@ sed -i -e "s|var/dionaea|var/lib/dionaea|g;" \
 # Scripts should run with /usr/bin/python3 shabang and not /usr/bin/env python3 or /bin/python3
 # Fedora specific - not reported upstream
 sed -i -e 's|#!/bin/python3|#!/usr/bin/python3|g; s|#!/usr/bin/env python3|#!/usr/bin/python3|g;' \
     modules/python/util/readlogsqltree.py \
     modules/python/util/logsql2postgres.py \
     modules/python/util/gnuplotsql.py \
     modules/python/util/updateccs.py
 
+# Create a sysusers.d config file
+cat >dionaea.sysusers.conf <<EOF
+u dionaea - 'Dionaea honeypot' /home/dionaea -
+EOF
+
 
 
 
 # ============= Build ==========================================================
 %build
 export SETUPTOOLS_SCM_PRETEND_VERSION=%{version}
 # %%configure --enable-python --with-python=`which python3` --with-glib=glib --with-nl-include=/usr/include/libnl3 --disable-werror
 # %%make_build CFLAGS="%%{optflags} -Wno-error -D_GNU_SOURCE -std=c99"
@@ -346,16 +350,18 @@ mkdir -p %{buildroot}%{_sharedstatedir}/%{name}/roots/upnp || :
 touch %{buildroot}%{_sharedstatedir}/%{name}/dionaea.sqlite
 touch %{buildroot}%{_sharedstatedir}/%{name}/dionaea_incident.sqlite
 touch %{buildroot}%{_sharedstatedir}/%{name}/sipaccounts.sqlite
 
 # leave this for the %%license tag
 rm -f %{buildroot}/usr/share/doc/dionaea/LICENSE \
     %{buildroot}/usr/share/doc/dionaea/LICENSE.openssl
 
+install -m0644 -D dionaea.sysusers.conf %{buildroot}%{_sysusersdir}/dionaea.conf
+
 
 
 # ============= Scriptlets ==========================================================
 %post
 %if 0%{?with_systemd}
   %systemd_post %{name}.service
 %else
   /sbin/chkconfig --add %{name}
@@ -376,21 +382,16 @@ rm -f %{buildroot}/usr/share/doc/dionaea/LICENSE \
   %systemd_postun %{name}.service
 %else
   if [ $1 -eq 1 ] ; then
      /sbin/service %{name} condrestart >/dev/null 2>&1 || :
   fi
 %endif
 
 
-%pre
-getent group dionaea >/dev/null || groupadd -r dionaea || :
-getent passwd dionaea >/dev/null || \
-    useradd -r -g dionaea -d /home/dionaea -s /sbin/nologin \
-    -c "Dionaea honeypot" dionaea || :
 
 
 
 
 # ============= package files ==================================================
 %files
 %license LICENSE src/LICENSE.openssl
 %doc README.md CHANGELOG.rst CONTRIBUTING.rst
@@ -418,16 +419,17 @@ getent passwd dionaea >/dev/null || \
 
 
 
 %if 0%{?with_systemd}
 %{_unitdir}/*.service
 %else
 %{_initrddir}/*
 %endif
+%{_sysusersdir}/dionaea.conf
 
 
 
 %files doc
 %doc README.md
 %doc html
 
 
@@ -436,16 +438,19 @@ getent passwd dionaea >/dev/null || \
 %license LICENSE
 %doc README.md
 %{_libdir}/%{name}/python.so
 %{python3_sitearch}/%{name}*
 # %%{python3_sitearch}/%%{name}-*egg-info
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.11.0-4.20210228git4e459f1
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.11.0-3.20210228git4e459f1
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Aug 28 2024 Miroslav Suchý <msuchy@redhat.com> - 0.11.0-2.20210228git4e459f1
 - convert license to SPDX
 
 * Thu Jul 04 2024 Michal Ambroz <rebus at, seznam.cz> 0.11.0-1
 - bump to 0.11.0
diff --git dist-git/dist-git.spec dist-git/dist-git.spec.tmp
index fdcce5ea87..6042a9c4f4 100644
--- dist-git/dist-git.spec
+++ dist-git/dist-git.spec.tmp
@@ -1,15 +1,15 @@
 %global selinux_variants mls targeted
 %global modulename dist_git
 %global installdir /var/lib/dist-git
 
 Name:           dist-git
 Version:        1.18
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        Package source version control system
 
 # upload.cgi uses GPLv1
 License:        MIT AND GPL-1.0-only
 URL:            https://github.com/release-engineering/dist-git
 # Source is created by
 # git clone https://github.com/release-engineering/dist-git.git
 # cd dist-git
@@ -21,17 +21,16 @@ BuildRequires:  systemd
 
 Requires:       httpd
 Requires:       perl(Sys::Syslog)
 Requires:       (dist-git-selinux if selinux-policy-targeted)
 Requires:       git
 Requires:       git-daemon
 Requires:       mod_ssl
 Requires:       crudini
-Requires(pre):  shadow-utils
 
 Requires:       python3-requests
 Recommends:     python3-grokmirror
 Suggests:       python3-fedmsg
 Suggests:       fedora-messaging
 %if 0%{?rhel} == 8
 BuildRequires:  python3-nose
 %else
@@ -71,38 +70,36 @@ Dist Git is a remote Git repository specifically designed to hold RPM
 package sources.
 
 This package includes SELinux support.
 
 
 %prep
 %setup -q
 
+# Create a sysusers.d config file
+cat >dist-git.sysusers.conf <<EOF
+g packager -
+EOF
+
 
 %build
 # ------------------------------------------------------------------------------
 # SELinux
 # ------------------------------------------------------------------------------
 cd selinux
 for selinuxvariant in %{selinux_variants}
 do
   make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile
   mv %{modulename}.pp %{modulename}.pp.${selinuxvariant}
   make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile clean
 done
 cd -
 
 
-%pre
-# ------------------------------------------------------------------------------
-# Users and Groups
-# ------------------------------------------------------------------------------
-getent group packager > /dev/null || \
-    groupadd -r packager
-exit 0
 
 
 %check
 %if 0%{?rhel} && 0%{?rhel} <= 8
 %if 0%{?rhel} < 8
 nosetests -v .
 %else
 nosetests-3 -v .
@@ -166,16 +163,18 @@ do
   install -d %{buildroot}%{_datadir}/selinux/${selinuxvariant}
   install -p -m 644 %{modulename}.pp.${selinuxvariant} \
     %{buildroot}%{_datadir}/selinux/${selinuxvariant}/%{modulename}.pp
 done
 cd -
 
 hardlink -cv %{buildroot}%{_datadir}/selinux
 
+install -m0644 -D dist-git.sysusers.conf %{buildroot}%{_sysusersdir}/dist-git.conf
+
 %post selinux
 for selinuxvariant in %{selinux_variants}
 do
   /usr/sbin/semodule -s ${selinuxvariant} -i \
     %{_datadir}/selinux/${selinuxvariant}/%{modulename}.pp &> /dev/null || :
 done
 %{_sbindir}/restorecon -v %{installdir}/cache || :
 %{_sbindir}/restorecon -v %{installdir}/cache/lookaside || :
@@ -241,24 +240,28 @@ fi
 %dir              %{_datadir}/dist-git
 %attr (775, -, -) %{_datadir}/dist-git/*
 %{_bindir}/dist-git-gc
 # TODO: move _datadir executables to _libexecdir, and drop these symlinks
 %{_bindir}/mkbranch
 %{_bindir}/mkbranch_branching
 %{_bindir}/remove_unused_sources
 %{_bindir}/setup_git_package
+%{_sysusersdir}/dist-git.conf
 
 
 %files selinux
 %doc selinux/*
 %{_datadir}/selinux/*/%{modulename}.pp
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.18-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.18-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Sep 27 2024 Pavel Raiskup <praiskup@redhat.com> 1.18-1
 - replace test on _selinux_policy_version by macro that does it all
 - handle situation when _selinux_policy_version is not defined
 - silence pylint
 - remove rhel7 specific code
diff --git dlt-daemon/dlt-daemon.spec dlt-daemon/dlt-daemon.spec.tmp
index 87e726e7e0..5d8381be13 100644
--- dlt-daemon/dlt-daemon.spec
+++ dlt-daemon/dlt-daemon.spec.tmp
@@ -1,24 +1,23 @@
 Name: dlt-daemon
 Version: 2.18.9
-Release: 6%{?dist}
+Release: 7%{?dist}
 Summary: DLT - Diagnostic Log and Trace
 Group: System Environment/Base
 License: MPL-2.0
 URL: https://github.com/COVESA/dlt-daemon
 Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
 Patch0: dlt-daemon-config.patch
 
 BuildRequires: cmake
 BuildRequires: pandoc
 BuildRequires: systemd
 BuildRequires: systemd-devel
 BuildRequires: gcc-c++
-Requires(pre): shadow-utils
 
 %description
 This component provides a standardised log and trace interface, based on the
 standardised protocol specified in the AUTOSAR standard 4.0 DLT.
 This component can be used by GENIVI components and other applications as
 logging facility providing
 - the DLT shared library
 - the DLT daemon, including startup scripts
@@ -47,16 +46,21 @@ Recommends:     %{name} = %{version}-%{release}
 Summary:        DLT - Diagnostic Log and Trace: Examples
 Requires:       %{name} = %{version}-%{release}
 %description -n dlt-examples
 %{summary}.
 
 %prep
 %autosetup -n %{name}-%{version} -p1
 
+# Create a sysusers.d config file
+cat >dlt-daemon.sysusers.conf <<EOF
+u dlt-daemon - 'User for dlt-daemon' /var/lib/dlt-daemon -
+EOF
+
 %build
 mkdir -p build
 cd build
 %cmake .. -Wno-dev \
         -DDLT_USER=dlt-daemon \
         -DCMAKE_INSTALL_PREFIX=/usr \
         -DWITH_DLT_USE_IPv6=OFF \
         -DDLT_IPC=UNIX_SOCKET \
@@ -72,38 +76,34 @@ cd build
 %install
 cd build
 mkdir -p $RPM_BUILD_ROOT%{_bindir}
 %cmake_install
 
 # Home directory for the 'dlt-daemon' user
 mkdir -p $RPM_BUILD_ROOT/var/lib/dlt-daemon
 
-%pre
-## This creates the users that are needed for /var/lib/dlt-daemon
-getent group dlt-daemon >/dev/null || groupadd -r dlt-daemon
-getent passwd dlt-daemon >/dev/null || \
-    useradd -r -g dlt-daemon -d /var/lib/dlt-daemon -s /sbin/nologin \
-    -c "User for dlt-daemon" dlt-daemon
-exit 0
+install -m0644 -D dlt-daemon.sysusers.conf %{buildroot}%{_sysusersdir}/dlt-daemon.conf
+
 
 %ldconfig_scriptlets -n dlt-libs
 
 %files
 %license LICENSE
 %doc AUTHORS README.md ReleaseNotes.md
 %attr(755,dlt-daemon,dlt-daemon) %dir /var/lib/dlt-daemon
 %config(noreplace) %{_sysconfdir}/dlt.conf
 %config(noreplace) %{_sysconfdir}/dlt_gateway.conf
 %{_unitdir}/dlt.service
 %attr(0755,root,root)
 %{_bindir}/dlt-daemon
 %{_mandir}/man1/dlt-daemon.1*
 %{_mandir}/man5/dlt.conf.5*
 %{_mandir}/man5/dlt_gateway.conf.5*
+%{_sysusersdir}/dlt-daemon.conf
 
 %files -n dlt-examples
 # The binaries do not have man pages but do have markdown documents.
 %doc doc/dlt-qnx-system.md doc/dlt_build_options.md doc/dlt_cdh.md doc/dlt_demo_setup.md doc/dlt_design_specification.md doc/dlt_example_user.md doc/dlt_extended_network_trace.md doc/dlt_filetransfer.md doc/dlt_for_developers.md doc/dlt_glossary.md doc/dlt_kpi.md doc/dlt_multinode.md doc/dlt_offline_logstorage.md
 %{_bindir}/dlt-example-filetransfer
 %{_bindir}/dlt-example-user
 %{_bindir}/dlt-example-user-common-api
 %{_bindir}/dlt-example-user-func
@@ -153,16 +153,19 @@ exit 0
 
 %files -n dlt-libs-devel
 %{_includedir}/dlt/*.h
 %{_libdir}/pkgconfig/automotive-dlt.pc
 %{_libdir}/libdlt.so
 %{_libdir}/cmake/automotive-dlt/*.cmake
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.18.9-7
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.18.9-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.18.9-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.18.9-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git dmapd/dmapd.spec dmapd/dmapd.spec.tmp
index edc8a92cab..d2b59fed27 100644
--- dmapd/dmapd.spec
+++ dmapd/dmapd.spec.tmp
@@ -11,17 +11,16 @@ Source0: http://www.flyn.org/projects/%name/%{name}-%{version}.tar.gz
 %{?systemd_requires}
 BuildRequires: libdmapsharing4-devel >= 3.9.3
 BuildRequires: vips-devel >= 7.38
 BuildRequires: gstreamer1-devel
 BuildRequires: gstreamer1-plugins-base-devel
 BuildRequires: totem-pl-parser-devel
 BuildRequires: systemd
 BuildRequires: make
-Requires(pre): shadow-utils
 Requires(post): systemd-units systemd-sysv
 Requires(preun): systemd-units
 Requires(postun): systemd-units
 
 %description 
 The dmapd project provides a GObject-based, Open Source implementation 
 of DMAP sharing with the following features:
 
@@ -43,16 +42,21 @@ of DMAP sharing with the following features:
 Dmapd runs on Linux and other POSIX operating systems. It has been 
 used on OpenWrt Linux-based systems with as little as 32MB of memory 
 to serve music, video and photograph libraries containing thousands of 
 files.
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >dmapd.sysusers.conf <<EOF
+u dmapd - 'dmapd Daemon' / -
+EOF
+
 %build
 %configure                                      \
 	--disable-static                        \
 	--disable-tests                         \
 	--with-systemdsystemunitdir=%{_unitdir} \
 
 make %{?_smp_mflags}
 
@@ -61,34 +65,33 @@ make install DESTDIR=%{buildroot} INSTALL="install -p"
 rm -f %{buildroot}%{_libdir}/libdmapd.la
 rm -f %{buildroot}%{_libdir}/dmapd/%{version}/modules/*.la
 rm -f %{buildroot}%{_sbindir}/dmapd-test
 mkdir -p %{buildroot}%{_localstatedir}/cache/dmapd/DAAP
 mkdir -p %{buildroot}%{_localstatedir}/cache/dmapd/DPAP
 mkdir -p %{buildroot}%{_localstatedir}/run/dmapd
 install -D -p -m 644 distro/dmapd.conf %{buildroot}%{_sysconfdir}/dmapd.conf
 
+install -m0644 -D dmapd.sysusers.conf %{buildroot}%{_sysusersdir}/dmapd.conf
+
 %files 
 %{_libdir}/*.so.0
 %{_libdir}/*.so.%{version}
 %{_libdir}/dmapd
 %{_sbindir}/dmapd
 %{_bindir}/dmapd-transcode
 %{_bindir}/dmapd-hashgen
 %config(noreplace) %{_sysconfdir}/dmapd.conf
 %attr(0700,dmapd,root) %{_localstatedir}/cache/dmapd/
 %attr(0700,dmapd,root) %{_localstatedir}/run/dmapd
 %{_mandir}/*/*
 %{_unitdir}/dmapd.service
 %doc AUTHORS COPYING ChangeLog INSTALL NEWS README FAQ 
+%{_sysusersdir}/dmapd.conf
 
-%pre
-getent group dmapd >/dev/null || groupadd -r dmapd
-getent passwd dmapd >/dev/null || useradd -r -g dmapd -d / -s /sbin/nologin -c "dmapd Daemon" dmapd
-exit 0
 
 %post
 /sbin/ldconfig
 %systemd_post dmapd.service
 
 %preun
 %systemd_preun dmapd.service
 
RPMAutoSpec usage detected, not changing the spec file.
diff --git dnsdist/dnsdist.spec dnsdist/dnsdist.spec.tmp
index e322f349b5..dc917ea6f6 100644
--- dnsdist/dnsdist.spec
+++ dnsdist/dnsdist.spec.tmp
@@ -55,16 +55,21 @@ legitimate users while shunting or blocking abusive traffic.
 
 
 %prep
 %autosetup -p2
 
 # run as dnsdist user
 sed -i '/^ExecStart/ s/dnsdist/dnsdist -u dnsdist -g dnsdist/' dnsdist.service.in
 
+# Create a sysusers.d config file
+cat >dnsdist.sysusers.conf <<EOF
+u dnsdist - 'dnsdist user' / -
+EOF
+
 %build
 %configure \
     --sysconfdir=%{_sysconfdir}/%{name} \
     --disable-static \
     --disable-dependency-tracking \
     --disable-silent-rules \
     --enable-dnscrypt \
     --enable-dns-over-https \
@@ -93,22 +98,18 @@ make %{?_smp_mflags}
 make install DESTDIR=%{buildroot}
 
 # install systemd unit file
 install -D -p -m 644 %{name}.service %{buildroot}%{_unitdir}/%{name}.service
 install -d %{buildroot}%{_sysconfdir}/%{name}/
 %{__mv} %{buildroot}%{_sysconfdir}/%{name}/dnsdist.conf-dist %{buildroot}%{_sysconfdir}/%{name}/dnsdist.conf
 chmod 0640 %{buildroot}/%{_sysconfdir}/%{name}/dnsdist.conf
 
-%pre
-getent group dnsdist >/dev/null || groupadd -r dnsdist
-getent passwd dnsdist >/dev/null || \
-    useradd -r -g dnsdist -d / -s /sbin/nologin \
-    -c "dnsdist user" dnsdist
-exit 0
+install -m0644 -D dnsdist.sysusers.conf %{buildroot}%{_sysusersdir}/dnsdist.conf
+
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %postun
@@ -119,11 +120,12 @@ exit 0
 %doc README.md
 %license COPYING
 %{_bindir}/%{name}
 %{_mandir}/man1/%{name}.1*
 %{_unitdir}/%{name}.service
 %{_unitdir}/%{name}@.service
 %dir %{_sysconfdir}/%{name}/
 %config(noreplace) %{_sysconfdir}/%{name}/dnsdist.conf
+%{_sysusersdir}/dnsdist.conf
 
 %changelog
 %autochangelog
diff --git domoticz/domoticz.spec domoticz/domoticz.spec.tmp
index 2987d9a790..535b6cdba2 100644
--- domoticz/domoticz.spec
+++ domoticz/domoticz.spec.tmp
@@ -1,14 +1,14 @@
 #global git_short_hash df9de70
 #global git_hash df9de7020c4317a484c39f7330e6d1c9ca3d9ec9
 
 Name:		domoticz
 Version:	2024.7
-Release:	3%{?dist}
+Release:	4%{?dist}
 Summary:	Open source Home Automation System
 
 # Automatically converted from old format: GPLv3+ and ASL 2.0 and Boost and BSD and MIT - review is highly recommended.
 License:	GPL-3.0-or-later AND Apache-2.0 AND BSL-1.0 AND LicenseRef-Callaway-BSD AND LicenseRef-Callaway-MIT
 URL:		http://www.domoticz.com
 Source0:	https://github.com/domoticz/domoticz/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
 #Source0:	https://github.com/domoticz/domoticz/archive/%%{git_short_hash}.tar.gz#/%%{name}-%%{version}.tar.gz
 Source1:	%{name}.service
@@ -39,17 +39,16 @@ BuildRequires:	minizip-compat-devel
 BuildRequires:	mosquitto-devel
 BuildRequires:	openssl-devel
 BuildRequires:	python3-devel
 BuildRequires:	sqlite-devel
 BuildRequires:	systemd-devel
 BuildRequires:	tinyxpath-devel
 BuildRequires:	zlib-devel
 
-Requires(pre):	shadow-utils
 Requires(post):	systemd
 Requires(postun):	systemd
 Requires(preun):	systemd
 
 Requires:	google-droid-sans-fonts
 Recommends:     mosquitto
 Recommends:	system-python-libs >= 3.4
 #Recommends:     zwave-js-ui
@@ -100,16 +99,22 @@ any mobile device
 # Add support for future versions of Python by replacing hardcoded version with macro
 sed -i 's/-lpythonVER/-lpython%{python3_version}/' CMakeLists.txt
 # Renaming of old define used wrong case in ZWave file
 sed -i 's/sTypeSetPoint/sTypeSetpoint/g' hardware/ZWaveBase.cpp
 rm -rf sqlite/
 rm -rf tinyxpath/
 cp -p %{SOURCE3} ./appversion.h
 
+# Create a sysusers.d config file
+cat >domoticz.sysusers.conf <<EOF
+u domoticz - 'Domoticz Home Automation Server' %{_datadir}/%{name} -
+m domoticz dialout
+EOF
+
 
 %build
 %cmake \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DUSE_STATIC_LIBSTDCXX=NO \
  -DUSE_STATIC_OPENZWAVE=NO \
  -DUSE_OPENSSL_STATIC=NO \
  -DUSE_BUILTIN_JSONCPP=NO \
@@ -198,27 +203,25 @@ mv $RPM_BUILD_ROOT%{_datadir}/%{name}/www/templates/{custom.example,readme.txt}
    $RPM_BUILD_ROOT%{_sharedstatedir}/%{name}/templates
 rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/www/templates
 ln -s %{_sharedstatedir}/%{name}/templates \
       $RPM_BUILD_ROOT%{_datadir}/%{name}/www/templates
 
 # Byte compile the default plugin
 %py_byte_compile %{__python3} %{buildroot}%{_datadir}/%{name}/plugins/AwoxSMP
 
+install -m0644 -D domoticz.sysusers.conf %{buildroot}%{_sysusersdir}/domoticz.conf
+
 
 %pretrans
 # Handle directory move for a few releases
 rm -rf %{_datadir}/%{name}/www/templates
 
 
 %pre
-getent group domoticz >/dev/null || groupadd -r domoticz
-getent passwd domoticz >/dev/null || \
-useradd -r -g domoticz -d %{_datadir}/%{name} -s /sbin/nologin \
--c "Domoticz Home Automation Server" domoticz
 # For OpenZWave USB access (/dev/ttyACM#)
 usermod -G domoticz,dialout domoticz
 
 
 %post
 %systemd_post %{name}.service
 
 
@@ -233,19 +236,23 @@ usermod -G domoticz,dialout domoticz
 %files
 %license License.txt
 %doc README.md History.txt
 %{_bindir}/%{name}
 %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
 %{_datadir}/%{name}/
 %attr(0755,domoticz,domoticz) %{_sharedstatedir}/%{name}/
 %{_unitdir}/%{name}.service
+%{_sysusersdir}/domoticz.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2024.7-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2024.7-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sun Jan 05 2025 Michael Cronenworth <mike@cchtml.com> - 2024.7-2
 - Fix ZWave SetPoint devices
 
 * Fri Dec 27 2024 Michael Cronenworth <mike@cchtml.com> - 2024.7-1
 - New stable release
diff --git ebnetd/ebnetd.spec ebnetd/ebnetd.spec.tmp
index f344a8e846..778a2dca82 100644
--- ebnetd/ebnetd.spec
+++ ebnetd/ebnetd.spec.tmp
@@ -2,17 +2,17 @@
 
 %global username	ebnetd
 %global gecos		EBNET User
 %global base_homedir	%{_localstatedir}/lib/
 %global homedir		%{base_homedir}%{username}
 
 Name:		ebnetd
 Version:	1.0
-Release:	52%{?dist}
+Release:	53%{?dist}
 License:	GPL-2.0-or-later
 URL:		http://www.sra.co.jp/people/m-kasahr/ebnetd/
 # For systemd.macros
 BuildRequires:	systemd
 BuildRequires:	eb-devel
 BuildRequires:	gcc autoconf automake libtool
 BuildRequires: make
 
@@ -43,17 +43,16 @@ Requires:	%{name}-common = %{version}-%{release}
 EBNET is a protocol to communicate to the EB library that is a C library
 for accessing "CD-ROM books".
 
 This package contains a EBNET protocol server.
 
 
 %package common
 Summary:		Common package for ebnetd families
-Requires(pre):		shadow-utils
 %{?systemd_requires}
 
 %description common
 EBNET is a protocol to communicate to the EB library that is a C library
 for accessing "CD-ROM books".
 
 This package contains a bunch of the common programs/files to be shared
 by ebnetd families.
@@ -79,16 +78,21 @@ HTTP/1.1. which provide a way to access "CD-ROM books" through the EB library.
 Note that ebhttpd can't be used for generic WWW purposes.
 
 
 %prep
 %autosetup -p1
 cp -p %{SOURCE1} .
 autoreconf -i # to remove the unnecessary checking like g++
 
+# Create a sysusers.d config file
+cat >ebnetd.sysusers.conf <<EOF
+u ebnetd - '%{gecos}' %{homedir} -
+EOF
+
 %build
 %configure --disable-static --enable-ipv6 --with-eb-conf=%{_libdir}/eb.conf --with-logdir=%{_localstatedir}/log/ebnetd --localstatedir=%{base_homedir}
 
 make
 
 %install
 make install DESTDIR=$RPM_BUILD_ROOT INSTALL="/usr/bin/install -p"
 
@@ -123,30 +127,28 @@ sed -i	-e 's/^\(user[ 	]*\)[a-z].*$/\1ebnetd/' \
 mv $RPM_BUILD_ROOT%{_sysconfdir}/ebnetd.conf{.sample,} && \
 touch -r ebnetd.conf.sample $RPM_BUILD_ROOT%{_sysconfdir}/ebnetd.conf
 
 mkdir -p $RPM_BUILD_ROOT%{homedir} || :
 
 # remove unnecessary files
 rm -f $RPM_BUILD_ROOT%{_infodir}/dir
 
+install -m0644 -D ebnetd.sysusers.conf %{buildroot}%{_sysusersdir}/ebnetd.conf
+
 
 %post
 %systemd_post ebnetd.socket
 
 %preun
 %systemd_preun ebnetd.socket ebnetd-instances.target
 
 %postun
 %systemd_postun_with_restart ebnetd.socket ebnetd-instances.target
 
-%pre common
-getent group %{username} > /dev/null || groupadd -r %{username}
-getent passwd %{username} > /dev/null || useradd -r -g %{username} -d %{homedir} -s /sbin/nologin -c '%{gecos}' %{username}
-exit 0
 
 %post	-n ndtpd
 %systemd_post ndtpd.socket
 
 %preun	-n ndtpd
 %systemd_preun ndtpd.socket ndtpd-instances.target
 
 %postun	-n ndtpd
@@ -177,16 +179,17 @@ exit 0
 %{_sbindir}/ebndaily
 %{_sbindir}/ebnupgrade
 %{_infodir}/ebnetd.info*
 %lang(ja) %doc %{_infodir}/ebnetd-ja.info*
 %config(noreplace) %{_sysconfdir}/ebnetd.conf
 %attr (-, ebnetd, ebnetd) %{homedir}
 %attr (-, ebnetd, ebnetd) %{_localstatedir}/run/ebnetd
 %{_tmpfilesdir}/%{name}.conf
+%{_sysusersdir}/ebnetd.conf
 
 %files -n ndtpd
 %{_sbindir}/ndtp*
 %{_libexecdir}/ndtpstat
 /lib/systemd/system/ndtpd.socket
 /lib/systemd/system/ndtpd@.service
 /lib/systemd/system/ndtpd-instances.target
 
@@ -195,16 +198,19 @@ exit 0
 %{_sbindir}/ebht*
 %{_libexecdir}/ebhtstat
 /lib/systemd/system/ebhttpd.socket
 /lib/systemd/system/ebhttpd@.service
 /lib/systemd/system/ebhttpd-instances.target
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.0-53
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-52
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-51
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Wed May  8 2024 Akira TAGOH <tagoh@redhat.com> - 1.0-50
 - Fix FTBFS.
diff --git elfutils/elfutils.spec elfutils/elfutils.spec.tmp
index 70ec135728..f8d2065ed4 100644
--- elfutils/elfutils.spec
+++ elfutils/elfutils.spec.tmp
@@ -1,15 +1,15 @@
 # Rebuild --with static to enable static subpackages
 # This is *not* supported by elfutils maintainers
 %bcond_with static
 
 Name: elfutils
 Version: 0.192
-%global baserelease 8
+%global baserelease 9
 Release: %{baserelease}%{?dist}
 URL: http://elfutils.org/
 %global source_url ftp://sourceware.org/pub/elfutils/%{version}/
 License: GPL-3.0-or-later AND (GPL-2.0-or-later OR LGPL-3.0-or-later) AND GFDL-1.3-no-invariants-or-later
 Source: %{?source_url}%{name}-%{version}.tar.bz2
 Source1: elfutils-debuginfod.sysusers
 Summary: A collection of utilities and DSOs to handle ELF files and DWARF data
 
@@ -291,19 +291,17 @@ BuildRequires: systemd
 %if %{with_sysusers}
 BuildRequires: systemd-rpm-macros
 %endif
 BuildRequires: make
 Requires(post):   systemd
 Requires(preun):  systemd
 Requires(postun): systemd
 %if %{with_sysusers}
-%{?sysusers_requires_compat}
 %else
-Requires(pre): shadow-utils
 %endif
 # To extract .deb files with a bsdtar (= libarchive) subshell
 Requires: bsdtar
 
 %description debuginfod-client
 The elfutils-debuginfod-client package contains shared libraries
 dynamically loaded from -ldw, which use a debuginfod service
 to look up debuginfo and associated data. Also includes a
@@ -517,32 +515,28 @@ fi
 %{_mandir}/man8/debuginfod*.8*
 
 
 %dir %attr(0700,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod
 %ghost %attr(0600,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod/debuginfod.sqlite
 
 %pre debuginfod
 %if %{with_sysusers}
-%sysusers_create_compat %{SOURCE1}
-%else
-getent group debuginfod >/dev/null || groupadd -r debuginfod
-getent passwd debuginfod >/dev/null || \
-    useradd -r -g debuginfod -d /var/cache/debuginfod -s /sbin/nologin \
-            -c "elfutils debuginfo server" debuginfod
-exit 0
 %endif
 
 %post debuginfod
 %systemd_post debuginfod.service
 
 %postun debuginfod
 %systemd_postun_with_restart debuginfod.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.192-9
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.192-8
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 
 * Mon Dec 2 2024 Mark Wielaard <mjw@fedoraproject.org> - 0.192-7
 - Add elfutils-0.192-ATOMIC_VAR_INIT.patch
 - Add elfutils-0.192-more-dwarf5-lang.patch
 
diff --git erlang/erlang.spec erlang/erlang.spec.tmp
index 5472a29a37..2f104d70f2 100644
--- erlang/erlang.spec
+++ erlang/erlang.spec.tmp
@@ -64,17 +64,17 @@
 # reltool (*)
 # wx
 #
 %global __with_wxwidgets 1
 
 
 Name:		erlang
 Version:	26.2.5.6
-Release:	2%{?dist}
+Release:	3%{?dist}
 Summary:	General-purpose programming language and runtime environment
 
 License:	Apache-2.0
 URL:		https://www.erlang.org
 VCS:		git:https://github.com/erlang/otp.git
 Source0:	https://github.com/erlang/otp/archive/OTP-%{version}/otp-OTP-%{version}.tar.gz
 Source5:	epmd.service
 Source6:	epmd.socket
@@ -346,17 +346,16 @@ Low level interface to C.
 
 %package erts
 Summary: Functionality necessary to run the Erlang System itself
 BuildRequires: lksctp-tools-devel
 BuildRequires: m4
 BuildRequires: ncurses-devel
 BuildRequires: zlib-devel
 # epmd user, epmd group
-Requires(pre): shadow-utils
 Requires: %{name}-kernel%{?_isa} = %{version}-%{release}
 Requires: %{name}-stdlib%{?_isa} = %{version}-%{release}
 Requires: lksctp-tools
 # See erts/emulator/beam/erl_driver.h or call erlang:system_info(driver_version).
 #Provides: erlang(erl_drv_version) = %%(%%{buildroot}/bin/erl -noshell -eval 'io:format(erlang:system_info(driver_version)).' -s erlang halt)
 Provides: erlang(erl_drv_version) = 3.3
 # See erts/emulator/beam/erl_nif.h or call erlang:system_info(nif_version).
 #Provides: erlang(erl_nif_version) = %%(%%{buildroot}/bin/erl -noshell -eval 'io:format(erlang:system_info(nif_version)).' -s erlang halt)
@@ -738,16 +737,21 @@ Provides support for XML 1.0.
 
 %prep
 %autosetup -p1 -n otp-OTP-%{version}
 
 # FIXME we should come up with a better solution
 # remove shipped zlib sources
 #rm -f erts/emulator/zlib/*.[ch]
 
+# Create a sysusers.d config file
+cat >erlang.sysusers.conf <<EOF
+u epmd - 'Erlang Port Mapper Daemon' /dev/null -
+EOF
+
 
 %build
 # Reconfigure everything to apply changes to the autotools templates
 ./otp_build autoconf
 
 # Set up proper cflags/cxxflags first
 %ifarch sparcv9 sparc64
 ERL_FLAGS="${RPM_OPT_FLAGS} -mcpu=ultrasparc -fno-strict-aliasing"
@@ -946,31 +950,28 @@ do
 	rm -f $RPM_BUILD_ROOT/%{_libdir}/erlang/erts-*/bin/${exe}
 done
 %endif # __with_wxwidgets
 
 # Provide a place for noarch libs to live.
 install -d -p -m 0755 %{buildroot}%{_datadir}/erlang/
 install -d -p -m 0755 %{buildroot}%{_datadir}/erlang/lib
 
+install -m0644 -D erlang.sysusers.conf %{buildroot}%{_sysusersdir}/erlang.conf
+
 
 %check
 TARGET="$(make target_configured)"
 ERL_TOP="$(pwd)"
 ERL_TOP=${ERL_TOP} make TARGET=${TARGET} release_tests
 # Unfortunately running the tests will take several hours. So we build the
 # package w/o tests for now. See this:
 # https://github.com/erlang/otp/wiki/Running-tests
 
 
-%pre erts
-getent group epmd >/dev/null || groupadd -r epmd
-getent passwd epmd >/dev/null || \
-useradd -r -g epmd -d /dev/null -s /sbin/nologin \
--c "Erlang Port Mapper Daemon" epmd 2>/dev/null || :
 
 
 %files
 %if %{with doc}
 %dir %{_docdir}/%{name}-%{version}/
 %doc %{_docdir}/%{name}-%{version}/AUTHORS
 %doc %{_docdir}/%{name}-%{version}/COPYRIGHT
 %doc %{_docdir}/%{name}-%{version}/LICENSE.txt
@@ -1204,16 +1205,17 @@ useradd -r -g epmd -d /dev/null -s /sbin/nologin \
 %{_mandir}/man3/zlib.*
 %endif
 %{_libdir}/erlang/releases/*
 %{_libdir}/erlang/usr/
 %{_unitdir}/epmd.service
 %{_unitdir}/epmd.socket
 %{_unitdir}/epmd@.service
 %{_unitdir}/epmd@.socket
+%{_sysusersdir}/erlang.conf
 
 %if %{__with_wxwidgets}
 %files et
 %dir %{_libdir}/erlang/lib/et-*/
 %{_libdir}/erlang/lib/et-*/ebin
 %{_libdir}/erlang/lib/et-*/include
 %{_libdir}/erlang/lib/et-*/src
 %if %{with doc}
@@ -1956,16 +1958,19 @@ useradd -r -g epmd -d /dev/null -s /sbin/nologin \
 %{_mandir}/man3/xmerl_scan.*
 %{_mandir}/man3/xmerl_xpath.*
 %{_mandir}/man3/xmerl_xs.*
 %{_mandir}/man3/xmerl_xsd.*
 %endif
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 26.2.5.6-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 26.2.5.6-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Dec  7 2024 Peter Lemenkov <lemenkov@gmail.com> - 26.2.5.6-1
 - Ver. 26.2.5.6
 
 * Fri Nov  1 2024 Peter Lemenkov <lemenkov@gmail.com> - 26.2.5.5-1
 - Ver. 26.2.5.5
RPMAutoSpec usage detected, not changing the spec file.
diff --git etcd/etcd.spec etcd/etcd.spec.tmp
index 3290a1d988..4f0d19483e 100644
--- etcd/etcd.spec
+++ etcd/etcd.spec.tmp
@@ -42,17 +42,16 @@ Summary:        Distributed reliable key-value store for the most critical data
 License:        Apache-2.0
 URL:            %{gourl}
 Source0:        %{gosource}
 Source1:        %{name}.service
 Source2:        %{name}.conf
 
 BuildRequires:  python3-devel
 BuildRequires:  systemd-rpm-macros
-Requires(pre):  shadow-utils
 
 %description %{common_description}
 
 %gopkg
 
 %prep
 %goprep -k
 rm -rf vendor/
@@ -78,16 +77,21 @@ mv server/!(v3) server/v3/.
 mv tools/!(v3) tools/v3/.
 shopt -u extglob
 
 
 %if %{without bootstrap}
 %generate_buildrequires
 %go_generate_buildrequires
 
+# Create a sysusers.d config file
+cat >etcd.sysusers.conf <<EOF
+u etcd - 'etcd user' %{_sharedstatedir}/%{name} -
+EOF
+
 %build
 %gobuild -o %{gobuilddir}/bin/etcd %{goipath}/server/v3
 %gobuild -o %{gobuilddir}/bin/etcdctl %{goipath}/etcdctl/v3
 %gobuild -o %{gobuilddir}/bin/etcdutl %{goipath}/etcdutl/v3
 %endif
 
 %install
 %gopkginstall
@@ -98,16 +102,18 @@ install -m 0755 -vp %{gobuilddir}/bin/* %{buildroot}%{_bindir}/
 
 install -Dpm 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
 install -dm 0755 %{buildroot}%{_sysconfdir}/%{name}
 install -pm 644 -t %{buildroot}%{_sysconfdir}/%{name} %{SOURCE2}
 
 # And create /var/lib/etcd
 install -dm 0755 %{buildroot}%{_sharedstatedir}/%{name}
 
+install -m0644 -D etcd.sysusers.conf %{buildroot}%{_sysusersdir}/etcd.conf
+
 %if %{with check}
 %check
 %gocheck -d client/v2 \
          -d client/v3 \
          -d raft/v3 \
          -d server/v3/auth \
          -d server/v3/wal/walpb \
          -d tests/e2ev \
@@ -115,20 +121,16 @@ install -dm 0755 %{buildroot}%{_sharedstatedir}/%{name}
          -d tests/e2e \
          -d tests/integration/client \
          -t tests/integration/clientv3 \
          -d server/v3/etcdserver/api/membership \
          -d server/v3/mvcc/backend \
          -d pkg/v3/proxy
 %endif
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || useradd -r -g %{name} -d %{_sharedstatedir}/%{name} \
-    -s /sbin/nologin -c "etcd user" %{name}
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %postun
@@ -140,11 +142,12 @@ getent passwd %{name} >/dev/null || useradd -r -g %{name} -d %{_sharedstatedir}/
 %doc Documentation README-*.md READMEv2-etcdctl.md
 %{_bindir}/*
 %config(noreplace) %{_sysconfdir}/%{name}
 %dir %attr(-,%{name},%{name}) %{_sharedstatedir}/%{name}
 %{_unitdir}/%{name}.service
 %endif
 
 %gopkgfiles
+%{_sysusersdir}/etcd.conf
 
 %changelog
 %autochangelog
diff --git exim/exim.spec exim/exim.spec.tmp
index 6d848a473e..7f6e6946da 100644
--- exim/exim.spec
+++ exim/exim.spec.tmp
@@ -7,26 +7,25 @@
 %endif
 
 # hardened build if not overridden
 %{!?_hardened_build:%global _hardened_build 1}
 
 Summary: The exim mail transfer agent
 Name: exim
 Version: 4.98
-Release: 5%{?dist}
+Release: 6%{?dist}
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License: GPL-2.0-or-later
 Url: https://www.exim.org/
 
 Provides: MTA smtpd smtpdaemon server(smtp)
 Requires(post): %{_sbindir}/restorecon %{_sbindir}/alternatives systemd
 Requires(preun): %{_sbindir}/alternatives systemd
 Requires(postun): %{_sbindir}/alternatives systemd
-Requires(pre): %{_sbindir}/groupadd, %{_sbindir}/useradd
 %if %{with clamav}
 BuildRequires: clamd
 %endif
 Source: https://ftp.exim.org/pub/exim/exim4/exim-%{version}.tar.xz
 Source1: https://ftp.exim.org/pub/exim/exim4/%{name}-%{version}.tar.xz.asc
 Source2: https://downloads.exim.org/Exim-Maintainers-Keyring.asc
 
 Source3: exim.sysconfig
@@ -193,16 +192,22 @@ cp exim_monitor/EDITME Local/eximon.conf
 
 # Workaround for rhbz#1791878
 pushd doc
 for f in $(ls -dp cve-* | grep -v '/\|\(\.txt\)$'); do
   mv "$f" "$f.txt"
 done
 popd
 
+# Create a sysusers.d config file
+cat >exim.sysusers.conf <<EOF
+u exim 93 - %{_var}/spool/exim -
+m exim mail
+EOF
+
 %build
 %ifnarch s390 s390x sparc sparcv9 sparcv9v sparc64 sparc64v
 	export PIE=-fpie
 	export PIC=-fpic
 %else
 	export PIE=-fPIE
 	export PIC=-fPIC
 %endif
@@ -325,22 +330,22 @@ touch $RPM_BUILD_ROOT%{_var}/log/clamd.exim
 # Set up the greylist subpackage
 install -m644 %{SOURCE20} $RPM_BUILD_ROOT/%_sysconfdir/exim/exim-greylist.conf.inc
 install -m644 %{SOURCE21} $RPM_BUILD_ROOT/%_sysconfdir/exim/mk-greylist-db.sql
 mkdir -p $RPM_BUILD_ROOT/%_sysconfdir/cron.daily
 install -m755 %{SOURCE22} $RPM_BUILD_ROOT/%_sysconfdir/cron.daily/greylist-tidy.sh
 install -m644 %{SOURCE23} $RPM_BUILD_ROOT/%_sysconfdir/exim/trusted-configs
 touch $RPM_BUILD_ROOT/%_var/spool/exim/db/greylist.db
 
+install -m0644 -D exim.sysusers.conf %{buildroot}%{_sysusersdir}/exim.conf
+
 %check
 build-`scripts/os-type`-`scripts/arch-type`/exim -C src/configure.default -bV
 
 %pre
-%{_sbindir}/groupadd -g 93 exim 2>/dev/null
-%{_sbindir}/useradd -d %{_var}/spool/exim -s %{_sbindir}/nologin -G mail -M -r -u 93 -g exim exim 2>/dev/null
 # Copy TLS certs from old location to new -- don't move them, because the
 # config file may be modified and may be pointing to the old location.
 if [ ! -f /etc/pki/tls/certs/exim.pem -a -f %{_datadir}/ssl/certs/exim.pem ] ; then
    cp %{_datadir}/ssl/certs/exim.pem /etc/pki/tls/certs/exim.pem
    cp %{_datadir}/ssl/private/exim.pem /etc/pki/tls/private/exim.pem
 fi
 
 exit 0
@@ -439,16 +444,17 @@ fi
 %attr(0755,root,root) %ghost %{_bindir}/mailq
 %attr(0755,root,root) %ghost %{_bindir}/runq
 %attr(0755,root,root) %ghost %{_bindir}/rsmtp
 %attr(0755,root,root) %ghost %{_bindir}/rmail
 %attr(0755,root,root) %ghost %{_bindir}/newaliases
 %attr(0755,root,root) %ghost /usr/lib/sendmail
 %ghost %{_sysconfdir}/pam.d/smtp
 %ghost %{_mandir}/man1/mailq.1.gz
+%{_sysusersdir}/exim.conf
 
 %files mysql
 %{_libdir}/exim/%{version}-%{release}/lookups/mysql.so
 
 %files pgsql
 %{_libdir}/exim/%{version}-%{release}/lookups/pgsql.so
 
 %files mon
@@ -491,16 +497,19 @@ fi
 
 %files greylist
 %config %{_sysconfdir}/exim/exim-greylist.conf.inc
 %ghost %{_var}/spool/exim/db/greylist.db
 %{_sysconfdir}/exim/mk-greylist-db.sql
 %{_sysconfdir}/cron.daily/greylist-tidy.sh
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.98-6
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.98-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.98-4
 - Rebuilt for the bin-sbin merge (2nd attempt)
 
 * Thu Jul 25 2024 Miroslav Suchý <msuchy@redhat.com> - 4.98-3
 - convert license to SPDX
RPMAutoSpec usage detected, not changing the spec file.
diff --git festival/festival.spec festival/festival.spec.tmp
index e14001fcef..d3ca4e05f7 100644
--- festival/festival.spec
+++ festival/festival.spec.tmp
@@ -296,16 +296,21 @@ you can also interface with Festival in via the shell or with BSD sockets.
 
 %patch -P100 -p1 -b .pulseaudio
 %patch -P101 -p1 -b .use-system-speech-tools
 %patch -P102 -p1 -b .use-system-libs
 %patch -P103 -p1 -b .filesystem-standard
 %patch -P104 -p1 -b .siteinit
 %patch -P105 -p1
 
+# Create a sysusers.d config file
+cat >festival.sysusers.conf <<EOF
+u festival - 'festival Daemon' / -
+EOF
+
 %build
 
 # build the main program
 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/src/lib
 # instead of doing this, maybe we should patch the make process
 # so it looks in the right place explicitly:
 export PATH=$(pwd)/bin:$PATH
 %configure
@@ -413,34 +418,33 @@ install -p -m 644 examples/intro.text $RPM_BUILD_ROOT%{_datadir}/festival/exampl
 mkdir -p $RPM_BUILD_ROOT%{_includedir}/festival
 cp -a src/include/* $RPM_BUILD_ROOT%{_includedir}/festival
 
 
 # systemd service
 mkdir -p $RPM_BUILD_ROOT%{_unitdir}
 install -p -m 644 %{SOURCE230} $RPM_BUILD_ROOT%{_unitdir}/
 
+install -m0644 -D festival.sysusers.conf %{buildroot}%{_sysusersdir}/festival.conf
+
 %files
 %doc ACKNOWLEDGMENTS NEWS README.md
 %license COPYING COPYING.poslex COPYING.cmudict
 %{_bindir}/default_voices
 %{_bindir}/festival
 %{_bindir}/festival_client
 %{_bindir}/festival_server
 %{_bindir}/festival_server_control
 %{_bindir}/text2wave
 %{_bindir}/saytime
 %{_libexecdir}/festival
 %{_mandir}/man1/*
 %{_unitdir}/festival.service
+%{_sysusersdir}/festival.conf
 
-%pre
-getent group festival >/dev/null || groupadd -r festival
-getent passwd festival >/dev/null || useradd -r -g festival -d / -s /sbin/nologin -c "festival Daemon" festival
-exit 0
 
 %post
 %systemd_post festival.service
 
 %preun
 %systemd_preun festival.service
 
 %postun
diff --git firebird/firebird.spec firebird/firebird.spec.tmp
index 4344e79320..b35e25181b 100644
--- firebird/firebird.spec
+++ firebird/firebird.spec.tmp
@@ -5,17 +5,17 @@
 %global         _hardened_build 1
 # firebird is mis-compiled when LTO is enabled. A root
 # cause analysis has not yet been completed. Reported upstream.
 # Disable LTO for now
 %global         _lto_cflags %nil
 
 Name:           firebird
 Version:        %{upversion}
-Release:        6%{?dist}
+Release:        7%{?dist}
 
 Summary:        SQL relational database management system
 # Automatically converted from old format: Interbase - review is highly recommended.
 License:        Interbase-1.0
 URL:            http://www.firebirdsql.org/
 
 Source0:        https://github.com/FirebirdSQL/firebird/releases/download/v4.0.3/%{pkgversion}.tar.xz
 Source1:        firebird-logrotate
@@ -55,18 +55,16 @@ BuildRequires: zlib-devel
 BuildRequires: procmail
 BuildRequires: make
 BuildRequires: libtomcrypt-devel
 BuildRequires: unzip
 BuildRequires: sed
 
 Requires(postun): /usr/sbin/userdel
 Requires(postun): /usr/sbin/groupdel
-Requires(pre):    /usr/sbin/groupadd
-Requires(pre):    /usr/sbin/useradd
 Recommends:     logrotate
 Requires:       libfbclient2 = %{version}-%{release}
 Requires:       libib-util = %{version}-%{release}
 Requires:       %{name}-utils = %{version}-%{release}
 
 Obsoletes:      firebird-arch < 4.0
 Obsoletes:      firebird-filesystem < 4.0
 Obsoletes:      firebird-classic-common < 4.0
@@ -202,16 +200,21 @@ in production systems, under a variety of names, since 1981.
 %patch -P205 -p1
 %patch -P301 -p1
 %patch -P302 -p1
 %patch -P303 -p1
 %patch -P401 -p1
 %patch -P402 -p1
 %patch -P501 -p1
 
+# Create a sysusers.d config file
+cat >firebird.sysusers.conf <<EOF
+u firebird - - / -
+EOF
+
 
 %build
 %ifarch s390x
 %global _lto_cflags %{nil}
 %endif
 export CFLAGS="%{optflags} -fno-strict-aliasing"
 export CXXFLAGS="${CFLAGS} -fno-delete-null-pointer-checks"
 NOCONFIGURE=1 ./autogen.sh
@@ -266,22 +269,20 @@ rm -rvf .%{_defaultdocdir}/%{name}/sample/prebuilt
 mkdir -p .%{_localstatedir}/log/%{name}
 mkdir -p .%{_sysconfdir}/logrotate.d
 echo 1 > .%{_localstatedir}/log/%{name}/%{name}.log
 sed "s@%{name}.log@%{_localstatedir}/log/%{name}/%{name}.log@g" %{SOURCE1} > .%{_sysconfdir}/logrotate.d/%{name}
 
 mkdir -p .%{_unitdir}
 cp -f %{SOURCE3} .%{_unitdir}/%{name}.service
 
+install -m0644 -D firebird.sysusers.conf %{buildroot}%{_sysusersdir}/firebird.conf
+
 
 %pre 
-# Create the firebird group if it doesn't exist
-getent group %{name} > /dev/null || /usr/sbin/groupadd -r %{name} 
-getent passwd %{name} >/dev/null || /usr/sbin/useradd -d / -g %{name} -s /sbin/nologin -r %{name} 
-
 # Add gds_db to /etc/services if needed
 FileName=/etc/services
 newLine="gds_db 3050/tcp  # Firebird SQL Database Remote Protocol"
 oldLine=`grep "^gds_db" $FileName`
 if [ -z "$oldLine" ]; then
  echo $newLine >> $FileName
 fi
 
@@ -328,16 +329,17 @@ fi
 %attr(0644,firebird,firebird) %{_localstatedir}/lib/%{name}/tzdata/*.res
 %ghost %dir %attr(0775,%{name},%{name}) /run/%{name}
 %ghost %attr(0644,%{name},%{name}) /run/%{name}/fb_guard
 %dir %{_localstatedir}/log/%{name}
 %config(noreplace) %attr(0664,%{name},%{name})  %{_localstatedir}/log/%{name}/%{name}.log
 %config(noreplace) %attr(0644,root,root) %{_sysconfdir}/logrotate.d/%{name}
 
 %attr(0644,root,root) %{_unitdir}/%{name}.service
+%{_sysusersdir}/firebird.conf
 
 
 %files devel
 %{_includedir}/*.h
 %{_includedir}/%{name}
 %{_libdir}/fb_config
 %{_sbindir}/fb_config
 
@@ -376,16 +378,19 @@ fi
 
 
 %files examples
 %{_docdir}/%{name}/sample
 %attr(0600,firebird,firebird) %{_localstatedir}/lib/%{name}/data/employee.fdb
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.0.4.3010-7
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.4.3010-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Aug 07 2024 Miroslav Suchý <msuchy@redhat.com> - 4.0.4.3010-5
 - convert license to SPDX
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.4.3010-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git flow-tools/flow-tools.spec flow-tools/flow-tools.spec.tmp
index ebe1f9cf97..7cf7dd35b2 100644
--- flow-tools/flow-tools.spec
+++ flow-tools/flow-tools.spec.tmp
@@ -7,17 +7,17 @@
 
 %global username flow-tools
 %global homedir %{_localstatedir}/%{name}
 %global gecos "Network flow monitoring"
 
 Version: 0.68.5.1
 Name: flow-tools
 Summary: Tool set for working with NetFlow data
-Release: 43%{?dist}
+Release: 44%{?dist}
 # Automatically converted from old format: BSD - review is highly recommended.
 License: LicenseRef-Callaway-BSD 
 URL: http://code.google.com/p/%{name}/
 Source0: http://%{name}.googlecode.com/files/%{name}-%{version}.tar.bz2
 Source1: flow-capture.service
 Source2: flow-capture.sysconfig
 Patch0:  flow-werror-fix.patch
 # Fix extern usage
@@ -32,17 +32,16 @@ BuildRequires: mariadb-connector-c-devel
 BuildRequires: libpq-devel
 BuildRequires: zlib-devel 
 BuildRequires: bison
 BuildRequires: flex
 BuildRequires: doxygen
 %if 0%{?fedora} >= 31
 BuildRequires: /usr/bin/2to3
 %endif
-Requires(pre): shadow-utils
 BuildRequires: systemd-rpm-macros
 BuildRequires: make
 Provides: group(%username)
 Provides: user(%username)
 
 
 %description
 Flow-tools is library and a collection of programs used to collect, 
@@ -114,16 +113,21 @@ sed -i '1s|^#!.*python|#!/usr/bin/python3|' bin/flow*
 2to3 --write --nobackups bin/flow*
 %else
 sed -i '1s|^#!.*python|#!/usr/bin/python2|' bin/flow*
 %endif
 sed -i '1s|^#!.*perl|#!/usr/bin/perl|' utils/*
 # Fix mariadb-connector-c detection
 sed -i s/my_init/mysql_init/g configure
 
+# Create a sysusers.d config file
+cat >flow-tools.sysusers.conf <<EOF
+u flow-tools - '%{gecos}' %{homedir} -
+EOF
+
 %build
 %configure \
   --localstatedir=%{_localstatedir}/%{name} \
   --sysconfdir=%{_sysconfdir}/%{name} \
   --enable-static=no \
   --with-mysql \
   --with-postgresql \
 %if 0%{with openssl}
@@ -139,22 +143,18 @@ sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
 %make_install
 find $RPM_BUILD_ROOT -type f -name "*.la" -exec rm -f {} ';'
 mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/%{name}
 install -d $RPM_BUILD_ROOT%{_unitdir}
 install -m 0644 %SOURCE1 $RPM_BUILD_ROOT%{_unitdir}/flow-capture.service
 install -d $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
 install -m 0644 %SOURCE2 $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/flow-capture
 
-%pre
-getent group %{username} >/dev/null || groupadd -r %{username}
-getent passwd %{username} >/dev/null || \
-    useradd -r -g %{username} -d %{homedir} -s /sbin/nologin \
-    -c '%{gecos}' %{username}
-exit 0
+install -m0644 -D flow-tools.sysusers.conf %{buildroot}%{_sysusersdir}/flow-tools.conf
+
 
 
 %post
 /sbin/ldconfig
 %systemd_post flow-capture.service
 
 %preun
 %systemd_preun flow-capture.service
@@ -216,31 +216,35 @@ exit 0
 %dir %{_sysconfdir}/%{name}/sym/
 %config(noreplace) %{_sysconfdir}/%{name}/cfg/*
 %config(noreplace) %{_sysconfdir}/%{name}/sym/*
 %config(noreplace) %{_sysconfdir}/sysconfig/flow-capture
 %{_unitdir}/flow-capture.service
 %attr(-,flow-tools,flow-tools) %{_localstatedir}/%{name}/
 %dir %{_datadir}/%{name}/
 %{_datadir}/%{name}/*
+%{_sysusersdir}/flow-tools.conf
 
 %files devel
 %{_libdir}/*.so
 %{_includedir}/*.h
 
 %files rrdtool
 %{_bindir}/flow-rpt2rrd
 %{_bindir}/flow-log2rrd
 %{_mandir}/man1/flow-rpt2rrd.1*
 %{_mandir}/man1/flow-log2rrd.1*
 
 %files docs
 %doc docs/*.html ChangeLog.old TODO INSTALL SECURITY
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.68.5.1-44
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.68.5.1-43
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Aug 28 2024 Miroslav Suchý <msuchy@redhat.com> - 0.68.5.1-42
 - convert license to SPDX
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.68.5.1-41
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git galera/galera.spec galera/galera.spec.tmp
index bb5441396f..296f24c838 100644
--- galera/galera.spec
+++ galera/galera.spec.tmp
@@ -1,14 +1,14 @@
 # To both save infrastrucutre resources and workaround for i686 FTBFS
 ExcludeArch: %{ix86}
 
 Name:           galera
 Version:        26.4.20
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        Synchronous multi-master wsrep provider (replication engine)
 
 License:        GPL-2.0-only
 URL:            http://galeracluster.com/
 
 # Actually, the truth is, we do use galera source tarball provided by MariaDB on
 # following URL (without macros):
 #   https://archive.mariadb.org/mariadb-10.4.16/galera-26.4.6/src/galera-26.4.6.tar.gz
@@ -16,17 +16,16 @@ URL:            http://galeracluster.com/
 Source0:        http://releases.galeracluster.com/source/%{name}-%{version}.tar.gz
 
 Patch0:         cmake_paths.patch
 Patch1:         docs.patch
 Patch2:         network.patch
 Patch3:         openssl_engine.patch
 
 BuildRequires:  boost-devel check-devel openssl-devel cmake systemd gcc-c++ asio-devel
-Requires(pre):  /usr/sbin/useradd
 Requires:       nmap-ncat
 Requires:       procps-ng
 
 %{?systemd_requires}
 
 
 %description
 Galera is a fast synchronous multimaster wsrep provider (replication engine)
@@ -37,16 +36,21 @@ description of Galera replication engine see https://www.galeracluster.com web.
 
 %prep
 %setup -q
 %patch -P0 -p1
 %patch -P1 -p1
 %patch -P2 -p1
 %patch -P3 -p1
 
+# Create a sysusers.d config file
+cat >galera.sysusers.conf <<EOF
+u garb - 'Galera Arbitrator Daemon' /dev/null -
+EOF
+
 %build
 %{set_build_flags}
 
 
 %cmake \
        -DCMAKE_BUILD_TYPE="%{?with_debug:Debug}%{!?with_debug:RelWithDebInfo}" \
        -DINSTALL_LAYOUT=RPM \
        -DCMAKE_RULE_MESSAGES:BOOL=OFF \
@@ -98,23 +102,24 @@ sed -i 's;/usr/bin/garbd;/usr/sbin/garbd;g' %{buildroot}/usr/sbin/garb-systemd
 ##   It is strongly recommended to avoid running services under this user identity,
 ##   in particular on systems using NFS or running containers. Allocate a user ID
 ##   specific to this service, either statically via systemd-sysusers or dynamically
 ##   via the DynamicUser= service setting.
 sed -i 's/User=nobody/User=garb/g' %{buildroot}%{_unitdir}/garb.service
 # Maintainers from other distributions also tries to resolve it on the upstream:
 #   https://github.com/codership/galera/pull/633
 
+install -m0644 -D galera.sysusers.conf %{buildroot}%{_sysusersdir}/galera.conf
+
 
 %check
 %ctest
 
 
 %pre
-/usr/sbin/useradd -M -r -d /dev/null -s /sbin/nologin -c "Galera Arbitrator Daemon" garb >/dev/null 2>&1 || :
 # Fixup after upgrading on system before systemd unit rename
 unlink /etc/systemd/system/garb.service || :
 
 %post
 /sbin/ldconfig
 %systemd_post garb.service
 
 %preun
@@ -141,19 +146,23 @@ unlink /etc/systemd/system/garb.service || :
 
 %{_unitdir}/garb.service
 
 %{_libdir}/galera/libgalera_smm.so
 
 %doc %{_docdir}/galera/COPYING
 %doc %{_docdir}/galera/LICENSE.asio
 %doc %{_docdir}/galera/README-MySQL
+%{_sysusersdir}/galera.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 26.4.20-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 26.4.20-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Nov 14 2024 Michal Schorm <mschorm@redhat.com> - 26.4.20-1
 - Rebase to 26.4.20
 
 * Fri Oct 18 2024 Michal Schorm <mschorm@redhat.com> - 26.4.19-1
 - Rebase to 26.4.19
diff --git ganglia/ganglia.spec ganglia/ganglia.spec.tmp
index 7fa091aa17..840fbed0f9 100644
--- ganglia/ganglia.spec
+++ ganglia/ganglia.spec.tmp
@@ -9,17 +9,17 @@
 %global py2             1
 %else
 %global py3             1
 %endif
 
 Summary:            Distributed Monitoring System
 Name:               ganglia
 Version:            %{gangver}
-Release:            56%{?dist}
+Release:            57%{?dist}
 # Automatically converted from old format: BSD - review is highly recommended.
 License:            LicenseRef-Callaway-BSD
 URL:                http://ganglia.sourceforge.net/
 Source0:            http://downloads.sourceforge.net/sourceforge/ganglia/ganglia-%{version}.tar.gz
 Source1:            https://github.com/ganglia/ganglia-web/archive/%{webver}/ganglia-web-%{webver}.tar.gz
 Source2:            gmond.service
 Source3:            gmetad.service
 Source4:            ganglia-httpd24.conf.d
@@ -196,16 +196,21 @@ install -m 0644 %{SOURCE3} gmetad/gmetad.service.in
 %setup -q -T -D -a 1
 mv ganglia-web-%{webver} web
 pushd web
 %patch -P 20 -p1
 %patch -P 21 -p1
 %patch -P 22 -p1
 popd
 
+# Create a sysusers.d config file
+cat >ganglia.sysusers.conf <<EOF
+u ganglia - 'Ganglia Monitoring System' %{_localstatedir}/lib/%{name} -
+EOF
+
 %build
 touch Makefile.am
 
 %if 0%{?fedora} || 0%{?rhel} > 7
 aclocal -I m4
 autoheader
 automake --add-missing --copy --foreign 2>/dev/null
 libtoolize --automake --copy
@@ -330,20 +335,18 @@ rm -f %{buildroot}%{_libdir}/*.la
 chmod 0644 %{buildroot}%{_datadir}/%{name}/header.php
 %{?with_python:chmod 0644 %{buildroot}%{_libdir}/%{name}/python_modules/*.py}
 chmod 0644 %{buildroot}%{_datadir}/%{name}/css/smoothness/jquery-ui-1.10.2.custom.css
 chmod 0644 %{buildroot}%{_datadir}/%{name}/css/smoothness/jquery-ui-1.10.2.custom.min.css
 
 # Remove shebang
 %{?with_python:sed -i '1{\@^#!@d}' %{buildroot}%{_libdir}/%{name}/python_modules/*.py}
 
-%pre
-## Add the "ganglia" user
-/usr/sbin/useradd -c "Ganglia Monitoring System" \
-        -s /sbin/nologin -r -d %{_localstatedir}/lib/%{name} ganglia 2> /dev/null || :
+install -m0644 -D ganglia.sysusers.conf %{buildroot}%{_sysusersdir}/ganglia.conf
+
 
 %if 0%{?systemd}
 %post gmond
 %systemd_post gmond.service
 
 %preun gmond
 %systemd_preun gmond.service
 
@@ -391,16 +394,17 @@ end
 
 %files
 %license COPYING
 %doc AUTHORS NEWS README ChangeLog
 %{_libdir}/libganglia*.so.*
 %dir %{_libdir}/ganglia
 %{_libdir}/ganglia/*.so
 %{?with_python:%exclude %{_libdir}/ganglia/modpython.so}
+%{_sysusersdir}/ganglia.conf
 
 %files gmetad
 %dir %{_localstatedir}/lib/%{name}
 %attr(0755,ganglia,ganglia) %{_localstatedir}/lib/%{name}/rrds
 %{_sbindir}/gmetad
 %if 0%{?systemd}
 %{_unitdir}/gmetad.service
 %else
@@ -461,16 +465,19 @@ end
 %{_datadir}/%{name}
 %dir %attr(0755,apache,apache) %{_localstatedir}/lib/%{name}-web/conf
 %config(noreplace) %attr(0644,apache,apache) %{_localstatedir}/lib/%{name}-web/conf/*.json
 %dir %attr(0755,apache,apache) %{_localstatedir}/lib/%{name}-web/dwoo
 %dir %attr(0755,apache,apache) %{_localstatedir}/lib/%{name}-web/dwoo/cache
 %dir %attr(0755,apache,apache) %{_localstatedir}/lib/%{name}-web/dwoo/compiled
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.7.2-57
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.7.2-56
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Nov 04 2024 Terje Rosten <terjeros@gmail.com> - 3.7.6-55
 - Add forgotten int() conversion patch
 
 * Tue Oct 15 2024 Terje Rosten <terjeros@gmail.com> - 3.7.6-54
 - Various fixes to improve Python 3 support
diff --git getdns/getdns.spec getdns/getdns.spec.tmp
index 550f0420d2..730e3ded63 100644
--- getdns/getdns.spec
+++ getdns/getdns.spec.tmp
@@ -4,17 +4,17 @@
 %global upstream_version %{version}%{?extraver:-%{extraver}}
 %global stubby_version 0.4.2
 
 %undefine __cmake_in_source_build
 
 Summary: Modern asynchronous API to the DNS
 Name: getdns
 Version: 1.7.3
-Release: 7%{?extraver:.%{extraver}}%{?dist}
+Release: 8%{?extraver:.%{extraver}}%{?dist}
 License: BSD-3-Clause
 Url: http://www.getdnsapi.net
 Source: http://www.getdnsapi.net/dist/%{name}-%{upstream_version}.tar.gz
 Source1: http://www.getdnsapi.net/dist/%{name}-%{upstream_version}.tar.gz.asc
 Source2: http://keys.gnupg.net/pks/lookup?op=get&search=0xE5F8F8212F77A498#/willem.nlnetlabs.nl
 BuildRequires:  gcc
 BuildRequires: libidn2-devel unbound-devel doxygen libevent-devel
 BuildRequires: pkgconfig openssl-devel libyaml-devel
@@ -70,16 +70,21 @@ Provides: stubby%{?_isa} = stubby-%{stubby_version}
 Stubby is an application that acts as a local DNS Privacy stub resolver (using DNS-over-TLS). Stubby encrypts DNS queries sent from a client machine (desktop or laptop) to a DNS Privacy resolver increasing end user privacy. Stubby is in the early stages of development but is suitable for technical/advanced users. A more generally user-friendly version is on the way!
 %end
 %endif
 
 %prep
 %{?gpgverify:%gpgverify -k 2 -s 1 -d 0}
 %autosetup -p1 -n %{name}-%{upstream_version}
 
+# Create a sysusers.d config file
+cat >getdns.sysusers.conf <<EOF
+u stubby - 'stubby DNS daemon account' %{_sysconfdir}/stubby -
+EOF
+
 %build
 %cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_STATIC=OFF \
   -DPATH_TRUST_ANCHOR_FILE=%{_sharedstatedir}/unbound/root.key \
 %if %{with stubby}
   -DBUILD_STUBBY=ON \
 %endif
 
 %cmake_build
@@ -98,16 +103,18 @@ install -d -m 0750 %{buildroot}%{_localstatedir}/cache/stubby
 install -d -m 0755 %{buildroot}%{_sysconfdir}/stubby
 install -d %__cmake_builddir/stubby/stubby.yml %{buildroot}%{_sysconfdir}/stubby/stubby.yml
 rm -rf %{buildroot}%{_docdir}/stubby
 %endif
 
 rm -rf %{buildroot}%{_libdir}/*.la
 rm -rf %{buildroot}%{_docdir}/%{name}
 
+install -m0644 -D getdns.sysusers.conf %{buildroot}%{_sysusersdir}/getdns.conf
+
 %files
 %{_libdir}/libgetdns*so.10*
 %doc README.md NEWS AUTHORS ChangeLog
 %license LICENSE
 
 %files utils
 %{_bindir}/getdns_query
 %{_bindir}/getdns_server_mon
@@ -117,51 +124,49 @@ rm -rf %{buildroot}%{_docdir}/%{name}
 %{_bindir}/stubby
 %{_mandir}/*/stubby.1*
 %dir %attr(0755,root,root) %{_sysconfdir}/stubby
 %config(noreplace) %{_sysconfdir}/stubby/stubby.yml
 %attr(0644,root,root) %{_unitdir}/stubby.service
 %dir %attr(0750,stubby,stubby) %{_localstatedir}/cache/stubby
 %doc stubby/README.md stubby/AUTHORS stubby/NEWS stubby/ChangeLog
 %endif
+%{_sysusersdir}/getdns.conf
 
 %files devel
 %{_libdir}/libgetdns*.so
 %{_includedir}/getdns/
 %{_libdir}/pkgconfig/*.pc
 %{_mandir}/*/*.3*
 %doc spec
 
 %post
 %{?ldconfig}
 
 %postun
 %{?ldconfig}
 %end
 
 %if %{with stubby}
-%pre stubby
-getent group stubby >/dev/null || groupadd -r stubby
-getent passwd stubby >/dev/null || \
-useradd -r -g stubby -d %{_sysconfdir}/stubby -s /sbin/nologin \
-    -c "stubby DNS daemon account" stubby
-exit 0
 
 %post stubby
 %systemd_post stubby.service
 
 %preun stubby
 %systemd_preun stubby.service
 
 %postun stubby
 %systemd_postun_with_restart stubby.service
 %end
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.7.3-8
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.3-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.3-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.3-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git gitit/gitit.spec gitit/gitit.spec.tmp
index fcd5f1a5e5..0b9272ce0b 100644
--- gitit/gitit.spec
+++ gitit/gitit.spec.tmp
@@ -38,17 +38,16 @@ Provides:       bundled(js-yui2) = 2.7.0
 # I couldn't find any version information for bluetrip or tango icons.
 Provides:       bundled(bluetrip)
 Provides:       bundled(tango-icon-theme)
 
 # We install a systemd service file.
 BuildRequires:  systemd
 
 # Want to create a user for gitit.
-Requires(pre):  shadow-utils
 
 # Begin cabal-rpm deps:
 BuildRequires:  ghc-Cabal-devel
 BuildRequires:  ghc-rpm-macros
 BuildRequires:  ghc-HStringTemplate-devel
 BuildRequires:  ghc-HTTP-devel
 BuildRequires:  ghc-SHA-devel
 BuildRequires:  ghc-aeson-devel
@@ -236,16 +235,21 @@ This package provides the Haskell %{name} profiling library.
 %endif
 
 
 %prep
 # Begin cabal-rpm setup:
 %setup -q
 # End cabal-rpm setup
 
+# Create a sysusers.d config file
+cat >gitit.sysusers.conf <<EOF
+u gitit - 'Account for gitit wiki service' %{_sharedstatedir}/gitit -
+EOF
+
 
 %build
 # Begin cabal-rpm build:
 %ghc_lib_build
 # End cabal-rpm build
 
 
 %install
@@ -264,22 +268,18 @@ cp -a %SOURCE1 %{buildroot}%{_sysconfdir}/gitit/
 mkdir -p %{buildroot}%{_unitdir}
 cp -a %SOURCE2 %{buildroot}%{_unitdir}
 
 # Install home directory for gitit user.
 # We need some structure here (a "wiki" subdir, for the actual contents)
 # which is why it's created in the package.
 mkdir -p %{buildroot}%{_sharedstatedir}/gitit/wiki
 
-%pre
-getent group gitit >/dev/null || groupadd -r gitit
-getent passwd gitit >/dev/null || \
-    useradd -r -g gitit -d %{_sharedstatedir}/gitit -s /sbin/nologin \
-    -c "Account for gitit wiki service" gitit
-exit 0
+install -m0644 -D gitit.sysusers.conf %{buildroot}%{_sysusersdir}/gitit.conf
+
 
 %post
 %systemd_post gitit.service
 
 %preun
 %systemd_preun gitit.service
 
 %postun
@@ -293,16 +293,17 @@ exit 0
 # End cabal-rpm files
 %{_unitdir}/gitit.service
 %config(noreplace) %{_sysconfdir}/gitit
 # We want to install /var/lib/gitit/wiki and make it owned by the
 # gitit user created in %pre... I forget if this is the best way to do that.
 # (I guess the alternative is to try and make the directories in %post).
 %attr(-,gitit,gitit) %dir %{_sharedstatedir}/gitit/
 %attr(-,gitit,gitit) %dir %{_sharedstatedir}/gitit/wiki/
+%{_sysusersdir}/gitit.conf
 
 
 %files common
 # Begin cabal-rpm files:
 %license LICENSE
 %doc CHANGES
 %{_datadir}/%{pkgver}
 # End cabal-rpm files
diff --git gitolite3/gitolite3.spec gitolite3/gitolite3.spec.tmp
index 4633b69c7b..73be9b22d6 100644
--- gitolite3/gitolite3.spec
+++ gitolite3/gitolite3.spec.tmp
@@ -4,33 +4,32 @@
 %global gitolite_homedir /var/lib/%{name}
 %else
 %global gitolite_homedir %{_sharedstatedir}/%{name}
 %endif
 
 Name:           gitolite3
 Epoch:          1
 Version:        3.6.13
-Release:        6%{?dist}
+Release:        7%{?dist}
 Summary:        Highly flexible server for git directory version tracker
 
 License:        GPL-2.0-only AND CC-BY-SA-1.0
 URL:            http://github.com/sitaramc/gitolite
 Source0:        https://github.com/sitaramc/gitolite/archive/v%{version}.tar.gz
 Source1:        gitolite3-README-fedora
 # Upstream: https://github.com/sitaramc/gitolite/commit/c656af01b73a5cc4f80512
 Source2:        compile-1
 
 
 BuildArch:      noarch
 BuildRequires:      perl-generators
 Provides:       perl(%{name}) = %{version}-%{release}
 Requires:       git
 Requires:       openssh-clients
-Requires(pre):  shadow-utils
 Recommends:       subversion
 
 %description
 Gitolite allows a server to host many git repositories and provide access
 to many developers, without having to give them real userids on the server.
 The essential magic in doing this is ssh's pubkey access and the authorized
 keys file, and the inspiration was an older program called gitosis.
 
@@ -41,16 +40,21 @@ without requiring root permissions, and with no additional software than git
 itself and perl. It also has several other neat features described below and
 elsewhere in the doc/ directory.
 
 
 %prep
 %setup -qn gitolite-%{version}
 cp %{SOURCE1} .
 
+# Create a sysusers.d config file
+cat >gitolite3.sysusers.conf <<EOF
+u gitolite3 - 'git repository hosting' %{gitolite_homedir} /bin/sh
+EOF
+
 
 %build
 #This page intentionally left blank.
 
 %install
 rm -rf $RPM_BUILD_ROOT
 
 # Directory structure
@@ -65,38 +69,37 @@ cp -pr src/lib/Gitolite $RPM_BUILD_ROOT%{perl_vendorlib}
 echo "%{version}-%{release}" >src/VERSION
 cp -a src/* $RPM_BUILD_ROOT%{_datadir}/%{name}
 cp %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/%{name}/commands/
 ln -s %{_datadir}/%{name}/gitolite $RPM_BUILD_ROOT%{_bindir}/gitolite
 
 # empty authorized_keys file
 touch $RPM_BUILD_ROOT%{gitolite_homedir}/.ssh/authorized_keys
 
+install -m0644 -D gitolite3.sysusers.conf %{buildroot}%{_sysusersdir}/gitolite3.conf
+
 
-%pre
-# Add "gitolite" user per https://fedoraproject.org/wiki/Packaging:UsersAndGroups
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-useradd -r -g %{name} -d %{gitolite_homedir} -s /bin/sh \
-        -c "git repository hosting" %{name}
-exit 0
 
 
 %files
 %{_bindir}/*
 %{perl_vendorlib}/*
 %{_datadir}/%{name}
 # make homedir non world readable
 %attr(750,%{name},%{name}) %dir %{gitolite_homedir}
 %attr(750,%{name},%{name}) %dir %{gitolite_homedir}/.ssh
 %config(noreplace) %attr(640,%{name},%{name}) %{gitolite_homedir}/.ssh/authorized_keys
 %doc gitolite3-README-fedora COPYING README.markdown CHANGELOG
+%{_sysusersdir}/gitolite3.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1:3.6.13-7
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.6.13-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.6.13-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.6.13-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git gkrellm/gkrellm.spec gkrellm/gkrellm.spec.tmp
index e65dc71597..cbc9079b0b 100644
--- gkrellm/gkrellm.spec
+++ gkrellm/gkrellm.spec.tmp
@@ -27,17 +27,17 @@ Additional features are:
   * A gui popup for configuration of chart sizes and resolutions.
 
 
 %package daemon
 Summary:        The GNU Krell Monitors Server
 # systemd >= 186 for scriptlet macros
 BuildRequires:  systemd >= 186
 BuildRequires: make
-Requires(pre):  shadow-utils systemd
+Requires(pre):  systemd
 Requires(post,preun,postun): systemd
 
 
 %description daemon
 gkrellmd listens for connections from gkrellm clients. When a gkrellm
 client connects to a gkrellmd server all builtin monitors collect their
 data from the server.
 
@@ -54,16 +54,21 @@ Development files for the GNU Krell Monitors.
 %autosetup -p1
 
 for i in gkrellmd.1 gkrellm.1 README Changelog.OLD Changelog-plugins.html \
     src/gkrellm.h server/gkrellmd.h; do
    sed -i -e "s@/usr/lib/gkrellm2*/plugins@%{_libdir}/gkrellm2/plugins@" $i
    sed -i -e "s@/usr/local/lib/gkrellm2*/plugins@/usr/local/%{_lib}/gkrellm2/plugins@" $i
 done
 
+# Create a sysusers.d config file
+cat >gkrellm.sysusers.conf <<EOF
+u gkrellmd - 'GNU Krell daemon' / -
+EOF
+
 
 %build
 make %{?_smp_mflags} PREFIX=%{_prefix} \
     PKGCONFIGDIR=%{_libdir}/pkgconfig \
     INCLUDEDIR=%{_includedir} \
     SINSTALLDIR=%{_sbindir} \
     CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -Wno-error=incompatible-pointer-types" \
     LDFLAGS="$RPM_LD_FLAGS"
@@ -81,22 +86,19 @@ make install DESTDIR=%{buildroot} PREFIX=%{_prefix} \
     PKGCONFIGDIR=%{buildroot}%{_libdir}/pkgconfig \
     INCLUDEDIR=%{buildroot}%{_includedir} \
     CFGDIR=%{buildroot}%{_sysconfdir}
 %find_lang %name
 
 desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
 appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.metainfo.xml
 
+install -m0644 -D gkrellm.sysusers.conf %{buildroot}%{_sysusersdir}/gkrellm.conf
+
 
-%pre daemon
-getent group gkrellmd >/dev/null || groupadd -r gkrellmd
-getent passwd gkrellmd >/dev/null || \
-useradd -r -g gkrellmd -M -d / -s /sbin/nologin -c "GNU Krell daemon" gkrellmd
-:
 
 %post daemon
 %systemd_post gkrellmd.service
 
 %preun daemon
 %systemd_preun gkrellmd.service
 
 %postun daemon
@@ -120,12 +122,13 @@ useradd -r -g gkrellmd -M -d / -s /sbin/nologin -c "GNU Krell daemon" gkrellmd
 %{_libdir}/pkgconfig/%{name}.pc
 
 %files daemon
 %license %{_licensedir}/%{name}*
 %{_unitdir}/gkrellmd.service
 %{_sbindir}/gkrellmd
 %{_mandir}/man1/gkrellmd.*
 %config(noreplace) %{_sysconfdir}/gkrellmd.conf
+%{_sysusersdir}/gkrellm.conf
 
 
 %changelog
 %autochangelog
diff --git glusterfs/glusterfs.spec glusterfs/glusterfs.spec.tmp
index eb067ebb1d..482581674d 100644
--- glusterfs/glusterfs.spec
+++ glusterfs/glusterfs.spec.tmp
@@ -191,37 +191,36 @@
 
 ##-----------------------------------------------------------------------------
 ## All package definitions should be placed here in alphabetical order
 ##
 Summary:          Distributed File System
 %if ( 0%{_for_fedora_koji_builds} )
 Name:             glusterfs
 Version:          11.1
-Release:          8%{?prereltag:%{prereltag}}%{?dist}
+Release:          9%{?prereltag:%{prereltag}}%{?dist}
 %else
 Name:             @PACKAGE_NAME@
 Version:          @PACKAGE_VERSION@
-Release:          0.@PACKAGE_RELEASE@%{?dist}.21
+Release:          0.@PACKAGE_RELEASE@%{?dist}.22
 %endif
 License:          GPL-2.0-only OR LGPL-3.0-or-later
 URL:              http://docs.gluster.org/
 %if ( 0%{_for_fedora_koji_builds} )
 Source0:          http://bits.gluster.org/pub/gluster/glusterfs/src/glusterfs-%{version}%{?prereltag}.tar.gz
 Source1:          glusterd.sysconfig
 Source2:          glusterfsd.sysconfig
 Source7:          glusterfsd.service
 Source8:          glusterfsd.init
 %else
 Source0:          @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz
 %endif
 Patch0001:        0001-configure.ac.patch
 Patch0002:        0002-contrib-aclocal-python.m4.patch
 
-Requires(pre):    shadow-utils
 BuildRequires:    systemd
 
 %if 0%{!?_without_tcmalloc:1}
 Requires:         gperftools-libs%{?_isa}
 %endif
 
 Requires:         libglusterfs0%{?_isa} = %{version}-%{release}
 Requires:         libgfrpc0%{?_isa} = %{version}-%{release}
@@ -816,16 +815,21 @@ This package provides the glusterfs thin-arbiter translator.
 %patch 0002 -p1
 %if ( ! %{_usepython3} )
 echo "fixing python shebangs..."
 for f in api events extras geo-replication libglusterfs tools xlators; do
 find $f -type f -exec sed -i 's|/usr/bin/python3|/usr/bin/python2|' {} \;
 done
 %endif
 
+# Create a sysusers.d config file
+cat >glusterfs.sysusers.conf <<EOF
+u gluster - 'GlusterFS daemons' %{_rundir}/gluster -
+EOF
+
 %build
 %ifarch armv7hl
 %set_build_flags
 export CFLAGS="$(echo $CFLAGS) -DUATOMIC_NO_LINK_ERROR"
 %endif
 sed -i -e 's/--quiet//' configure.ac
 ./autogen.sh && %configure \
         %{?_with_asan} \
@@ -979,16 +983,18 @@ mv -v %{buildroot}/sbin/* %{buildroot}%{_sbindir}/
 
 %global bashcompdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null)
 %if "%{bashcompdir}" == ""
 %global bashcompdir ${sysconfdir}/bash_completion.d
 %endif
 
 ##-----------------------------------------------------------------------------
 ## All package definitions should be placed here in alphabetical order
+
+install -m0644 -D glusterfs.sysusers.conf %{buildroot}%{_sysusersdir}/glusterfs.conf
 ##
 %post
 %{?ldconfig}
 %if ( 0%{!?_without_syslog:1} )
 %if ( 0%{?fedora} ) || ( 0%{?rhel} )
 %systemd_postun_with_restart rsyslog
 %endif
 %endif
@@ -1113,20 +1119,16 @@ else
 fi
 exit 0
 %endif
 
 ##-----------------------------------------------------------------------------
 ## All package definitions should be placed here in alphabetical order
 ##
 %pre
-getent group gluster > /dev/null || groupadd -r gluster
-getent passwd gluster > /dev/null || useradd -r -g gluster -d %{_rundir}/gluster -s /sbin/nologin -c "GlusterFS daemons" gluster
-exit 0
-
 ##-----------------------------------------------------------------------------
 ## All package definitions should be placed here in alphabetical order
 ##
 %if ( 0%{!?_without_events:1} )
 %preun events
 if [ $1 -eq 0 ]; then
     if [ -f %glustereventsd_svcfile ]; then
         %service_stop glustereventsd
@@ -1286,16 +1288,17 @@ exit 0
 %endif
 
 %if ( 0%{?_without_server:1} )
 #exclude ganesha related files
 %exclude %{_sysconfdir}/ganesha/ganesha-ha.conf.sample
 %exclude %{_libexecdir}/ganesha/*
 %exclude %{_prefix}/lib/ocf/resource.d/heartbeat/*
 %endif
+%{_sysusersdir}/glusterfs.conf
 
 %files cli
 %{_sbindir}/gluster
 %{_mandir}/man8/gluster.8*
 %{bash_completions_dir}/gluster.bash
 
 %files client-xlators
 %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/cluster
@@ -1630,16 +1633,19 @@ exit 0
 %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features
      %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/thin-arbiter.so
 %dir %{_datadir}/glusterfs/scripts
      %{_datadir}/glusterfs/scripts/setup-thin-arbiter.sh
 %config %{_sysconfdir}/glusterfs/thin-arbiter.vol
 %{_unitdir}/gluster-ta-volume.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 11.1-9
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 11.1-8
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 11.1-7
 - Rebuilt for the bin-sbin merge (2nd attempt)
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 11.1-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git gmediarender/gmediarender.spec gmediarender/gmediarender.spec.tmp
index c1e9df6987..c02765b772 100644
--- gmediarender/gmediarender.spec
+++ gmediarender/gmediarender.spec.tmp
@@ -4,17 +4,17 @@
 # commit
 %global forgeurl https://github.com/hzeller/gmrender-resurrect
 #%%global commit 4f221e6b85abf85957b547436e982d7a501a1718
 #%%global shortcommit %%(c=%%{commit}; echo ${c:0:7})
 
 
 Name:    gmediarender
 Version: 0.0.9
-Release: 12%{?dist}
+Release: 13%{?dist}
 Summary: Resource efficient UPnP/DLNA renderer
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License: GPL-2.0-or-later
 # Following is for Forge-hosted projects packaging automation
 # https://fedoraproject.org/wiki/Forge-hosted_projects_packaging_automation
 
 %forgemeta
 
@@ -24,31 +24,36 @@ Source:  %{forgesource}
 BuildRequires:  gcc
 BuildRequires: systemd
 BuildRequires: automake
 BuildRequires: libupnp-devel
 BuildRequires: gstreamer1-devel
 BuildRequires: make
 
 Requires: gstreamer1-plugins-good
-Requires(pre): shadow-utils
 Requires: firewalld-filesystem
 Requires(post): firewalld-filesystem
 %{?systemd_requires}
 Recommends: gstreamer1-plugins-bad-free
 
 %description
 GMediaRender is a resource efficient UPnP/DLNA renderer.
 
 %prep
 #%%setup -q -n %%repo-%%{commit}
 # Replace above with the following if using forge macro
 %forgeautosetup
 autoreconf -vfi
 
+# Create a sysusers.d config file
+cat >gmediarender.sysusers.conf <<EOF
+u gmediarender - 'GMediaRender DLNA/UPnP Renderer' %{_datadir}/%{name} -
+m gmediarender audio
+EOF
+
 %build
 %configure
 make %{?_smp_mflags}
 
 %install
 install -d %{buildroot}%{_bindir}
 install -m 0755 src/%{name} %{buildroot}%{_bindir}
 
@@ -58,21 +63,18 @@ install -m 0644 data/grender-*.png %{buildroot}%{_datadir}/%{name}
 install -d %{buildroot}%{_unitdir}
 install -m 0644 dist-scripts/fedora/%{name}.service %{buildroot}%{_unitdir}
 
 install -d %{buildroot}%{_prefix}/lib/firewalld/services
 install -m 0644 dist-scripts/fedora/*.xml %{buildroot}%{_prefix}/lib/firewalld/services
 # Remove ssdp.xml as firewalld already provides it. RHBZ 1768706
 rm %{buildroot}%{_prefix}/lib/firewalld/services/ssdp.xml
 
-%pre
-getent group %{name} &>/dev/null || groupadd -r %{name}
-getent passwd %{name} &>/dev/null || \
-    useradd -r -g %{name} -G audio -M -d %{_datadir}/%{name} -s /sbin/nologin \
-    -c "GMediaRender DLNA/UPnP Renderer" %{name}
+install -m0644 -D gmediarender.sysusers.conf %{buildroot}%{_sysusersdir}/gmediarender.conf
+
 
 %post
 %systemd_post %{name}.service
 %firewalld_reload
 
 %preun
 %systemd_preun %{name}.service
 
@@ -86,18 +88,22 @@ fi
 %files
 %doc README.md
 %license COPYING
 %{_bindir}/%{name}
 %dir %attr(0755, %{name}, %{name}) %{_datadir}/%{name}
 %{_datadir}/%{name}/grender-*.png
 %{_unitdir}/%{name}.service
 %{_prefix}/lib/firewalld/services/%{name}.xml
+%{_sysusersdir}/gmediarender.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.0.9-13
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.0.9-12
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 0.0.9-11
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.0.9-10
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git gns3-server/gns3-server.spec gns3-server/gns3-server.spec.tmp
index 416318efeb..b865507d2a 100644
--- gns3-server/gns3-server.spec
+++ gns3-server/gns3-server.spec.tmp
@@ -1,17 +1,17 @@
 # For pre-release
 %global git_tag %{version}
 
 # Filter auto-generated deps from bundled shell script (which depends on busybox only)
 %global __requires_exclude_from ^%{python3_sitelib}/gns3server/compute/docker/resources/.*$
 
 Name:           gns3-server
 Version:        2.2.53
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        Graphical Network Simulator 3
 
 # Automatically converted from old format: GPLv3 - review is highly recommended.
 License:        GPL-3.0-only
 URL:            http://gns3.com
 Source0:        https://github.com/GNS3/gns3-server/archive/v%{git_tag}/%{name}-%{git_tag}.tar.gz
 Source1:        gns3.service
 Patch0:         0001-changing-busybox-udhcpc-script-path.patch
@@ -60,16 +60,21 @@ sed -i -r 's/aiohttp>=3.10.10,<3.11/aiohttp>=3.9.3/' requirements.txt
 sed -i -r 's/Jinja2>=3.1.5,<3.2/jinja2>=2.11.3/' requirements.txt
 sed -i -r 's/jsonschema>=4.23,<4.24/jsonschema>=3.2.0/' requirements.txt
 sed -i -r 's/platformdirs>=2.4.0,<3/platformdirs>=2.4.0/' requirements.txt
 sed -i -r 's/py-cpuinfo>=9.0.0,<10.0/py-cpuinfo>=8.0.0/' requirements.txt
 sed -i -r 's/async-timeout>=5.0.1,<5.1/async-timeout>=4.0.2/' requirements.txt
 sed -i -r 's/sentry-sdk.*//g' requirements.txt
 sed -i -r 's/truststore.*//g' requirements.txt
 
+# Create a sysusers.d config file
+cat >gns3-server.sysusers.conf <<EOF
+u gns3 - 'gns3 server' /var/lib/gns3 -
+EOF
+
 %build
 %py3_build
 
 %install
 %py3_install
 
 # Remove shebang
 find %{buildroot}/%{python3_sitelib}/ -name '*.py' -print \
@@ -85,58 +90,58 @@ rm -f %{buildroot}/%{python3_sitelib}/gns3server/symbols/.gitkeep
 mkdir -p %{buildroot}%{_unitdir}
 install -m 644 %{SOURCE1} %{buildroot}%{_unitdir}
 mkdir -p  %{buildroot}%{_sharedstatedir}/gns3
 
 # Don't bundle OVMF_CODE.fd OVMF_VARS.fd with the package
 rm -fv %{buildroot}/%{python3_sitelib}/gns3server/disks/OVMF_CODE.fd
 rm -fv %{buildroot}/%{python3_sitelib}/gns3server/disks/OVMF_VARS.fd
 
+install -m0644 -D gns3-server.sysusers.conf %{buildroot}%{_sysusersdir}/gns3-server.conf
+
 %check
 
 
 %files
 %license LICENSE
 %doc README.md AUTHORS CHANGELOG
 %{python3_sitelib}/gns3_server*.egg-info/
 %ghost %{python3_sitelib}/gns3server/disks/OVMF_CODE.fd
 %ghost %{python3_sitelib}/gns3server/disks/OVMF_VARS.fd
 %{python3_sitelib}/gns3server/
 %{_bindir}/gns3server
 %{_bindir}/gns3vmnet
 %{_bindir}/gns3loopback
 %{_unitdir}/gns3.service
 %dir %attr(0755,gns3,gns3) %{_sharedstatedir}/gns3
+%{_sysusersdir}/gns3-server.conf
 
 %files doc
 %license LICENSE
 %doc docs/_build/html
 
-%pre
-getent group gns3 >/dev/null || groupadd -r gns3
-getent passwd gns3 >/dev/null || \
-       useradd -r -g gns3 -d /var/lib/gns3 -s /sbin/nologin \
-               -c "gns3 server" gns3
-exit 0
 
 %post
 [ -d "/var/lib/gns3" ] && chown -R gns3:gns3 %{_sharedstatedir}/gns3
 %systemd_post gns3.service
 
 # Replace bundled OVMF_CODE.fd OVMF_VARS.fd with Fedora ones
 cp -fp %{_datadir}/edk2/ovmf/OVMF_CODE.fd %{python3_sitelib}/gns3server/disks/OVMF_CODE.fd
 cp -fp %{_datadir}/edk2/ovmf/OVMF_VARS.fd %{python3_sitelib}/gns3server/disks/OVMF_VARS.fd
 
 %preun
 %systemd_preun gns3.service
 
 %postun
 %systemd_postun_with_restart gns3.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.2.53-2
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Wed Jan 22 2025 Alexey Kurov <nucleo@fedoraproject.org> - 2.2.53-1
 - Update to 2.2.53
 
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.52-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Dec  2 2024 Alexey Kurov <nucleo@fedoraproject.org> - 2.2.52-1
 - Update to 2.2.52
diff --git golang-github-shopify-toxiproxy/golang-github-shopify-toxiproxy.spec golang-github-shopify-toxiproxy/golang-github-shopify-toxiproxy.spec.tmp
index 656eedf217..36457d6860 100644
--- golang-github-shopify-toxiproxy/golang-github-shopify-toxiproxy.spec
+++ golang-github-shopify-toxiproxy/golang-github-shopify-toxiproxy.spec.tmp
@@ -26,17 +26,17 @@ repository contains) and a client communicating with the proxy over HTTP. You
 configure your application to make all test connections go through Toxiproxy
 and can then manipulate their health via HTTP. See Usage below on how to set
 up your project.}
 
 %global golicenses      LICENSE
 %global godocs          CHANGELOG.md CREATING_TOXICS.md README.md README-client.md
 
 Name:           %{goname}
-Release:        19%{?dist}
+Release:        20%{?dist}
 Summary:        TCP proxy to simulate network and system conditions for resiliency testing
 
 License:        MIT
 URL:            %{gourl}
 Source0:        %{gosource}
 # Stolen from Debian:
 Source1:        toxiproxy-server.1
 Source2:        toxiproxy-cli.1
@@ -46,33 +46,37 @@ Source5:        toxiproxy.logrotate
 
 %{?systemd_requires}
 BuildRequires:  systemd-rpm-macros
 BuildRequires:  golang(github.com/gorilla/mux)
 BuildRequires:  golang(github.com/sirupsen/logrus)
 BuildRequires:  golang(github.com/urfave/cli)
 BuildRequires:  golang(golang.org/x/crypto/ssh/terminal)
 BuildRequires:  golang(gopkg.in/tomb.v1)
-Requires(pre):  shadow-utils
 
 %description
 %{common_description}
 
 %package -n toxiproxy
 Summary:       %{summary}
 
 %description -n toxiproxy
 %{common_description}
 
 %gopkg
 
 %prep
 %goprep
 mv client/README.md README-client.md
 
+# Create a sysusers.d config file
+cat >golang-github-shopify-toxiproxy.sysusers.conf <<EOF
+u toxiproxy - 'Toxiproxy-server account' %{_sharedstatedir}/toxiproxy -
+EOF
+
 %build
 %gobuild -o %{gobuilddir}/bin/toxiproxy-cli     %{goipath}/cli
 %gobuild -o %{gobuilddir}/bin/toxiproxy-server  %{goipath}/cmd
 
 %install
 %gopkginstall
 install -m 0755 -vd                     %{buildroot}%{_bindir}
 install -m 0755 -vp %{gobuilddir}/bin/* %{buildroot}%{_bindir}/
@@ -88,27 +92,23 @@ install -d -m 0755 %{buildroot}%{_unitdir}
 install -p -m 0644 %{SOURCE4} %{buildroot}%{_unitdir}/toxiproxy.service
 
 install -d -m 0755 %{buildroot}%{_sysconfdir}/logrotate.d
 install -p -m 0644 %{SOURCE5} %{buildroot}%{_sysconfdir}/logrotate.d/toxiproxy
 
 install -d -m 0755 %{buildroot}%{_sharedstatedir}/toxiproxy
 install -d -m 0755 %{buildroot}%{_localstatedir}/log/toxiproxy
 
+install -m0644 -D golang-github-shopify-toxiproxy.sysusers.conf %{buildroot}%{_sysusersdir}/golang-github-shopify-toxiproxy.conf
+
 %if %{with check}
 %check
 %gocheck
 %endif
 
-%pre  -n toxiproxy
-getent group toxiproxy >/dev/null || groupadd -r toxiproxy
-getent passwd toxiproxy >/dev/null || \
-    useradd -r -g toxiproxy -d %{_sharedstatedir}/toxiproxy -s /sbin/nologin \
-    -c "Toxiproxy-server account" toxiproxy
-exit 0
 
 %post  -n toxiproxy
 %systemd_post toxiproxy.service
 
 %preun  -n toxiproxy
 %systemd_preun toxiproxy.service
 
 %postun  -n toxiproxy
@@ -123,18 +123,22 @@ exit 0
 %config(noreplace) %{_sysconfdir}/logrotate.d/toxiproxy
 %{_unitdir}/toxiproxy.service
 %{_mandir}/man1/toxiproxy-server.1.*
 %{_mandir}/man1/toxiproxy-cli.1.*
 %attr(0775,root,toxiproxy) %dir %{_localstatedir}/log/toxiproxy
 %attr(0750,toxiproxy,toxiproxy) %dir %{_sharedstatedir}/toxiproxy
 
 %gopkgfiles
+%{_sysusersdir}/golang-github-shopify-toxiproxy.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.1.4-20
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.4-19
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.4-18
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Sun Feb 11 2024 Maxwell G <maxwell@gtmx.me> - 2.1.4-17
 - Rebuild for golang 1.22.0
diff --git gr-funcube/gr-funcube.spec gr-funcube/gr-funcube.spec.tmp
index f344895f01..4dcc827a3d 100644
--- gr-funcube/gr-funcube.spec
+++ gr-funcube/gr-funcube.spec.tmp
@@ -3,17 +3,17 @@
 %global git_date 20240726
 
 %global git_short_commit %(echo %{git_commit} | cut -c -8)
 %global git_suffix %{git_date}git%{git_short_commit}
 
 Name:          gr-funcube
 URL:           https://github.com/dl1ksv/gr-funcube
 Version:       3.10.0~rc3^%{git_suffix}
-Release:       4%{?dist}
+Release:       5%{?dist}
 # Automatically converted from old format: GPLv3+ - review is highly recommended.
 License:       GPL-3.0-or-later
 BuildRequires: cmake
 BuildRequires: gcc-c++
 BuildRequires: gnuradio-devel
 BuildRequires: hidapi-devel
 BuildRequires: doxygen
 BuildRequires: graphviz
@@ -52,61 +52,65 @@ Requires:      %{name} = %{version}-%{release}
 #BuildArch:    noarch
 
 %description doc
 Documentation files for gr-funcube.
 
 %prep
 %autosetup -p1 -n %{name}-%{git_commit}
 
+# Create a sysusers.d config file
+cat >gr-funcube.sysusers.conf <<EOF
+g rtlsdr -
+EOF
+
 %build
 %cmake -DENABLE_DOXYGEN=on -DGR_PKG_DOC_DIR=%{_docdir}/%{name}
 %cmake_build
 
 %check
 # Temporary disabled until resolved ppc64le problems
 #cd %{_vpath_builddir}
 #make test
 
 %install
 %cmake_install
 
 # udev rule
 install -Dpm 0644 %{S:1} %{buildroot}%{_udevrulesdir}/10-funcube.rules
 
+install -m0644 -D gr-funcube.sysusers.conf %{buildroot}%{_sysusersdir}/gr-funcube.conf
+
 %ldconfig_scriptlets
 
-%pre
-# sharing group with the rtl-sdr package not to introduce new group
-# todo: consolidate also with the uhd package (usrp group) to have one generic
-# group e.g. 'sdr' for this class of devices
-getent group rtlsdr >/dev/null || \
-  %{_sbindir}/groupadd -r rtlsdr >/dev/null 2>&1
-exit 0
 
 %files
 %exclude %{_docdir}/%{name}/html
 %exclude %{_docdir}/%{name}/xml
 %license COPYING
 %doc README.md
 %{_libdir}/*.so.*
 %{python3_sitearch}/funcube
 %{_datadir}/gnuradio/grc/blocks/*
 %{_udevrulesdir}/10-funcube.rules
+%{_sysusersdir}/gr-funcube.conf
 
 %files devel
 %{_includedir}/funcube
 %{_libdir}/*.so
 %{_libdir}/cmake/funcube
 
 %files doc
 %doc %{_docdir}/%{name}/html
 %doc %{_docdir}/%{name}/xml
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.10.0~rc3^20240726gitcbda6c6c-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.10.0~rc3^20240726gitcbda6c6c-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Nov 28 2024 Jaroslav Škarvada <jskarvad@redhat.com> - 3.10.0~rc3^20240726gitcbda6c6c-3
 - Rebuilt for new spdlog
   Resolves: rhbz#2329123
 
 * Tue Nov 26 2024 František Zatloukal <fzatlouk@redhat.com> - 3.10.0~rc3^20240726gitcbda6c6c-2
diff --git icecast/icecast.spec icecast/icecast.spec.tmp
index 5198874756..44bd8fd2ab 100644
--- icecast/icecast.spec
+++ icecast/icecast.spec.tmp
@@ -7,17 +7,17 @@
 %global with_systemd 1
 %endif # 0%{?fedora} || 0%{?rhel} >= 7
 
 # Setup _pkgdocdir if not defined already.
 %{!?_pkgdocdir:%global _pkgdocdir	%{_docdir}/%{name}-%{version}}
 
 Name:		icecast
 Version:	2.4.4
-Release:	19%{?dist}
+Release:	20%{?dist}
 Summary:	ShoutCast compatible streaming media server
 
 # admin/xspf.xsl:	GPLv2+
 # COPYING:		GPLv2 text
 # src/fserve.c:		GPLv2
 # src/thread/thread.c:	GPLv2+
 # src/avl/avl.c:	BSD
 # web/xml2json.xslt:	BSD
@@ -57,17 +57,16 @@ BuildRequires:	libtheora-devel >= 1.0
 BuildRequires:	libvorbis-devel >= 1.0
 BuildRequires:	libxml2-devel
 BuildRequires:	libxslt-devel
 BuildRequires:	openssl-devel
 BuildRequires:	speex-devel
 
 Requires:	mailcap
 
-Requires(pre):	shadow-utils
 
 %if 0%{?with_systemd}
 BuildRequires:	systemd
 
 %{?systemd_requires}
 %else # 0%{?with_systemd}
 Requires(post):		/sbin/chkconfig
 Requires(preun):	/sbin/chkconfig
@@ -98,16 +97,21 @@ This package contains the documentation files for %{name}.
 
 %prep
 %autosetup -p 1
 %{_bindir}/find doc/ -type f | xargs %{__chmod} 0644
 %{__cp} -a doc/ html/
 %{_bindir}/find html/ -name 'Makefile*' | xargs %{__rm} -f
 autoreconf -f
 
+# Create a sysusers.d config file
+cat >icecast.sysusers.conf <<EOF
+u icecast - '%{name} streaming server' /usr/share/%{name} -
+EOF
+
 
 %build
 %configure \
 	--with-curl \
 	--enable-largefile \
 	--enable-maintainer-mode \
 	--with-ogg \
 	--with-openssl \
@@ -137,22 +141,19 @@ autoreconf -f
 	%{buildroot}%{_pkgdocdir}/{conf,examples}
 %{__cp} -a html/ AUTHORS ChangeLog COPYING NEWS TODO %{buildroot}%{_pkgdocdir}
 %if 0%{?fedora} || 0%{?rhel} >= 7
 %{__rm} -f %{buildroot}%{_pkgdocdir}/COPYING
 %endif # 0%{?fedora} || 0%{?rhel} >= 7
 %{__cp} -a conf/*.dist %{buildroot}%{_pkgdocdir}/conf
 %{__cp} -a examples/%{name}_auth-1.0.tar.gz %{buildroot}%{_pkgdocdir}/examples
 
+install -m0644 -D icecast.sysusers.conf %{buildroot}%{_sysusersdir}/icecast.conf
+
 
-%pre
-%{_bindir}/getent passwd %{name} >/dev/null ||					\
-	%{_sbindir}/useradd -M -r -d /usr/share/%{name} -s /sbin/nologin	\
-		-c "%{name} streaming server" %{name} > /dev/null 2>&1 || :
-exit 0
 
 
 %post
 %if 0%{?with_systemd}
 %systemd_post %{name}.service
 %else # 0%{?with_systemd}
 /sbin/chkconfig --add %{name}
 %endif # 0%{?with_systemd}
@@ -192,26 +193,30 @@ fi
 %{_datadir}/%{name}
 %{_sysconfdir}/logrotate.d/%{name}
 %if 0%{?with_systemd}
 %{_unitdir}/%{name}.service
 %else # 0%{?with_systemd}
 %dir %attr(-,%{name},%{name}) %{_localstatedir}/run/%{name}
 %{_initrddir}/%{name}
 %endif # 0%{?with_systemd}
+%{_sysusersdir}/icecast.conf
 
 
 %files doc
 %if 0%{?fedora} || 0%{?rhel} >= 7
 %license %{_datadir}/licenses/%{name}*
 %endif # 0%{?fedora} || 0%{?rhel} >= 7
 %doc %{_pkgdocdir}
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.4.4-20
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.4-19
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Sep 02 2024 Miroslav Suchý <msuchy@redhat.com> - 2.4.4-18
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.4-17
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git icecream/icecream.spec icecream/icecream.spec.tmp
index 0b3bc492a8..aef219fc9a 100644
--- icecream/icecream.spec
+++ icecream/icecream.spec.tmp
@@ -34,17 +34,16 @@ BuildRequires: libcap-ng-devel
 BuildRequires: lzo-devel libzstd-devel libarchive-devel
 BuildRequires: docbook2X
 BuildRequires: environment(modules)
 BuildRequires: firewalld-filesystem
 BuildRequires: autoconf automake libtool
 
 Requires:         firewalld-filesystem
 Requires:         environment(modules)
-Requires(pre):    shadow-utils
 Requires(post):   systemd
 Requires(preun):  systemd
 Requires(postun): systemd
 Requires(post):   findutils
 
 %if %{with selinux}
 # For SELinux protection:
 BuildRequires: checkpolicy selinux-policy-devel hardlink
@@ -85,16 +84,21 @@ This package contains development files for %{name}.
 %prep
 %autosetup -p1 -n %{name}-%{version}%{preversion}
 
 mkdir SELinux
 cp -p %{SOURCE3} %{SOURCE4} %{SOURCE5} SELinux
 mkdir fedora
 cp -p %{SOURCE6} %{SOURCE7} %{SOURCE9} %{SOURCE10} %{SOURCE11} fedora
 
+# Create a sysusers.d config file
+cat >icecream.sysusers.conf <<EOF
+u icecc - 'Icecream distributed compiler' %{_localstatedir}/cache/icecream -
+EOF
+
 %build
 ./autogen.sh
 
 %configure \
     --disable-static \
     --enable-shared \
     --enable-clang-rewrite-includes \
     --enable-clang-wrappers 
@@ -167,29 +171,24 @@ fi;
 . %{_sysconfdir}/selinux/config; \
 FILE_CONTEXT=%{_sysconfdir}/selinux/%1/contexts/files/file_contexts; \
 selinuxenabled; \
 if [ $? == 0  -a "${SELINUXTYPE}" == %1 -a -f ${FILE_CONTEXT}.%{name} ]; then \
 	fixfiles -C ${FILE_CONTEXT}.%{name} restore; \
 	rm -f ${FILE_CONTEXT}.%name; \
 fi;
 
+install -m0644 -D icecream.sysusers.conf %{buildroot}%{_sysusersdir}/icecream.conf
+
 %pre
 %if %{with selinux}
 for selinuxvariant in %{selinux_variants}; do
 	%saveFileContext ${selinuxvariant}
 done
 %endif
-
-getent group icecc >/dev/null || groupadd -r icecc
-getent passwd icecc >/dev/null || \
-	useradd -r -g icecc -d %{_localstatedir}/cache/icecream \
-	-s /sbin/nologin -c "Icecream distributed compiler" icecc
-exit 0
-
 %post
 /sbin/ldconfig
 %if %{with selinux}
 for selinuxvariant in %{selinux_variants}; do
 	semodule -s ${selinuxvariant} -i \
 		%{_datadir}/selinux/${selinuxvariant}/icecream.pp 2>/dev/null
 done
 
@@ -260,16 +259,17 @@ exit 0
 %{_unitdir}/icecc*.service
 %attr(0775, root, icecc) %{_localstatedir}/cache/icecream
 %attr(0775, root, icecc) /run/icecc
 %{_mandir}/man*/*
 %{_tmpfilesdir}/icecream.conf
 %{?with_selinux:%{_datadir}/selinux/*/icecream.pp}
 %{_prefix}/lib/firewalld/services/icecream.xml
 %{_prefix}/lib/firewalld/services/icecream-scheduler.xml
+%{_sysusersdir}/icecream.conf
 
 %files devel
 %dir %{_includedir}/icecc/
 %{_includedir}/icecc/*.h
 %{_libdir}/libicecc.so
 %{_libdir}/pkgconfig/icecc.pc
 
 %changelog
diff --git iguanaIR/iguanaIR.spec iguanaIR/iguanaIR.spec.tmp
index f6ea3a2bc3..c16167300b 100644
--- iguanaIR/iguanaIR.spec
+++ iguanaIR/iguanaIR.spec.tmp
@@ -1,16 +1,16 @@
 %global commit6 e23b9d3726b010c9e747786ffe72e38debc8cfef
 %global shortcommit %(c=%{commit6}; echo ${c:0:7})
 %global repo https://github.com/iguanaworks/iguanair-lirc/archive
 %global __python %{__python3}
 
 Name:           iguanaIR
 Version:        1.1.0
-Release:        42%{?dist}
+Release:        43%{?dist}
 Epoch:          2
 Summary:        Driver for Iguanaworks USB IR transceiver
 
 # Automatically converted from old format: GPLv2 and LGPLv2 - review is highly recommended.
 License:        GPL-2.0-only AND LicenseRef-Callaway-LGPLv2
 URL:            http://iguanaworks.net/ir
 Source0:        http://iguanaworks.net/downloads/%{name}-%{version}.tar.bz2
 Source1:        iguanaIR.service
@@ -104,16 +104,21 @@ patch -p1 < %{SOURCE10}
 patch -p1 < %{SOURCE11}
 patch -p1 < %{SOURCE12}
 git apply --whitespace=fix %{SOURCE13}
 dos2unix Makefile
 patch -l -p2 --fuzz 2 < %{SOURCE20}
 cd ..
 patch  -p1 --fuzz 2 < %{SOURCE21}
 
+# Create a sysusers.d config file
+cat >iguanair.sysusers.conf <<EOF
+u iguanair - 'Iguanaworks IR Daemon' %{_localstatedir}/run/%{name} -
+EOF
+
 
 
 %build
 ./runCmake -DLIBDIR="%{_libdir}"
 cd build
 make CFLAGS="%{optflags} -fpic -DFEDORA=1 -DHAVE_KERNEL_LIRC_H=1 -I.." %{?_smp_mflags}
 cp %{SOURCE4} .
 
@@ -170,23 +175,19 @@ install -m755 -d $RPM_BUILD_ROOT%{_localstatedir}/log/iguanaIR
 
 install -m755 -d $RPM_BUILD_ROOT/%{_tmpfilesdir}
 cat > $RPM_BUILD_ROOT/%{_tmpfilesdir}/%{name}.conf <<EOF
 d   /run/%{name}    0755    iguanair   iguanair
 EOF
 install -m 755 -d $RPM_BUILD_ROOT/run/%{name}
 install -m 644 -D %{SOURCE5} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
 
+install -m0644 -D iguanair.sysusers.conf %{buildroot}%{_sysusersdir}/iguanair.conf
+
 
-%pre
-getent group iguanair >/dev/null || groupadd -r iguanair
-getent passwd iguanair >/dev/null || \
-    useradd -r -g iguanair -d %{_localstatedir}/run/%{name} -s /sbin/nologin \
-    -c "Iguanaworks IR Daemon" iguanair
-exit 0
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %postun
@@ -209,16 +210,17 @@ exit 0
 %config(noreplace) /etc/sysconfig/%{name}
 %{_tmpfilesdir}/%{name}.conf
 %ghost %attr(755, iguanair, iguanair) /run/%{name}
 %attr(775, iguanair, iguanair) %{_localstatedir}/log/%{name}
 
 %if 0%{fedora} < 30
 %{_libdir}/python2.7/*
 %endif
+%{_sysusersdir}/iguanair.conf
 
 %files devel
 %{_includedir}/%{name}.h
 %{_libdir}/lib%{name}.so
 
 %files reflasher
 %{_datadir}/%{name}-reflasher/
 %{_bindir}/%{name}-reflasher
@@ -228,16 +230,19 @@ exit 0
 %config /etc/modprobe.d/60-blacklist-kernel-iguanair.conf
 %{_libdir}/lirc/plugins/iguanair.so
 %{_docdir}/lirc/plugindocs/iguanair.html
 %{_datadir}/lirc/configs/iguanair.conf
 %endif
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2:1.1.0-43
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2:1.1.0-42
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Sep 02 2024 Miroslav Suchý <msuchy@redhat.com> - 2:1.1.0-41
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2:1.1.0-40
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git inadyn-mt/inadyn-mt.spec inadyn-mt/inadyn-mt.spec.tmp
index e63580ac9a..781f5b14b3 100644
--- inadyn-mt/inadyn-mt.spec
+++ inadyn-mt/inadyn-mt.spec.tmp
@@ -1,11 +1,11 @@
 Name:           inadyn-mt
 Version:        2.28.10
-Release:        23%{?dist}
+Release:        24%{?dist}
 Summary:        Dynamic DNS Client
 # Automatically converted from old format: GPLv3 - review is highly recommended.
 License:        GPL-3.0-only
 URL:            http://inadyn-mt.sourceforge.net
 Source0:        http://prdownloads.sourceforge.net/inadyn-mt/inadyn-mt.v.0%{version}.tar.gz
 Source1:        inadyn-mt.conf
 Source2:        inadyn.service
 Source3:        inadyn-nm-dispatcher
@@ -20,17 +20,16 @@ BuildRequires:  autoconf
 BuildRequires:  gcc
 BuildRequires:  libao-devel
 BuildRequires:  systemd-units
 BuildRequires: make
 
 Obsoletes:      inadyn < %{version}
 Provides:       inadyn = %{version}-%{release}
 
-Requires(pre):    shadow-utils
 Requires(post):   systemd-units
 Requires(preun):  systemd-units
 Requires(postun): systemd-units
 
 Obsoletes:      inadyn-mt-units < %{version}-%{release}
 Provides:       inadyn-mi-units = %{version}-%{release}
 
 Obsoletes:      inadyn-mt-sysvinit < %{version}-%{release}
@@ -49,16 +48,21 @@ should then fill in /etc/inadyn.conf with the appropriate detail
 
 %prep
 %setup -q -n %name.v.0%{version}
 %patch -P1 -p1 -b .libao
 %patch -P2 -p1 -b .gcc10
 %patch -P3 -p1 -b .c99
 %patch -P4 -p1 -b .c23
 
+# Create a sysusers.d config file
+cat >inadyn-mt.sysusers.conf <<EOF
+u inadyn - 'Dynamic DNS client' /var/cache/inadyn-mt -
+EOF
+
 %build
 rm -rf bin/
 autoreconf
 %configure --prefix=/usr/share
 make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS"
 
 %install
 mkdir -p $RPM_BUILD_ROOT%{_sbindir}
@@ -81,22 +85,18 @@ cp -R extra/* $RPM_BUILD_ROOT%{_datadir}/inadyn-mt/extra
 mkdir -p ${RPM_BUILD_ROOT}%{_unitdir}
 install -p -m 0644 %{SOURCE2} ${RPM_BUILD_ROOT}%{_unitdir}
 
 mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/lib/NetworkManager/dispatcher.d
 install -p %{SOURCE3} ${RPM_BUILD_ROOT}%{_prefix}/lib/NetworkManager/dispatcher.d/30-inadyn
 
 mkdir -p $RPM_BUILD_ROOT/var/cache/inadyn-mt
 
-%pre
-getent group inadyn >/dev/null || groupadd -r inadyn
-getent passwd inadyn >/dev/null || \
-    useradd -r -g inadyn -d /var/cache/inadyn-mt -s /sbin/nologin \
-    -c "Dynamic DNS client" inadyn
-exit 0
+install -m0644 -D inadyn-mt.sysusers.conf %{buildroot}%{_sysusersdir}/inadyn-mt.conf
+
 
 %post
 %systemd_post inadyn.service
 [ $1 -gt 1 ] && chown -R inadyn: /var/cache/inadyn-mt || :
 
 %preun
 %systemd_preun inadyn.service
 
@@ -108,18 +108,22 @@ exit 0
 %doc readme.html
 %{_sbindir}/inadyn
 %{_unitdir}/inadyn.service
 %{_mandir}/man*/*
 %attr(640,inadyn,inadyn) %config(noreplace) %{_sysconfdir}/%{name}.conf
 %{_prefix}/lib/NetworkManager/
 %{_datadir}/%{name}/
 %attr(755,inadyn,inadyn) %dir /var/cache/inadyn-mt/
+%{_sysusersdir}/inadyn-mt.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.28.10-24
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Wed Jan 22 2025 Michael Cronenworth <mike@cchtml.com> - 2.28.10-23
 - C23 compatibility fixes
 
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.28.10-22
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Jul 29 2024 Miroslav Suchý <msuchy@redhat.com> - 2.28.10-21
 - convert license to SPDX
diff --git inn/inn.spec inn/inn.spec.tmp
index ca952fa132..68f67368ab 100644
--- inn/inn.spec
+++ inn/inn.spec.tmp
@@ -1,14 +1,14 @@
 %global _hardened_build 1
 
 Summary: The InterNetNews system, an Usenet news server
 Name: inn
 Version: 2.7.2
-Release: 2%{?dist}
+Release: 3%{?dist}
 # most files are under ISC, except:
 # contrib/analyze-traffic.in: public-domain
 # contrib/mm_ckpasswd: GPL-2.0-or-later
 # contrib/nnrp.access2readers.conf.in: public-domain
 # contrib/tunefeed.in: Perl
 # control/perl-nocem.in: GPL
 # control/pgpverify.in: BSD-4-Clause
 # innd/tinyleaf.c: MIT
@@ -71,17 +71,16 @@ BuildRequires: wget
 BuildRequires: zlib-devel
 BuildRequires: %{_bindir}/gpgv2
 BuildRequires: make
 %if 0%{?fedora} || 0%{?rhel} >= 8
 Recommends: perl(GD)
 Recommends: perl(subs)
 Recommends: uucp
 %endif
-Requires(pre): shadow-utils
 Requires: bash >= 2.0
 Requires: coreutils
 Requires: grep
 Requires: sed
 Requires: wget
 Requires(post): inews
 
 # XXX white out bogus perl requirement for now
@@ -130,16 +129,22 @@ Summary: Libraries provided by INN
 
 %description libs
 This package contains dynamic libraries provided by INN project
 
 %prep
 gpgv2 --keyring %{S:3} %{S:1} %{S:0}
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >inn.sysusers.conf <<EOF
+g news 13
+u news 9 'News server user' /etc/news -
+EOF
+
 %build
 %configure \
   --disable-static \
   --enable-largefiles \
   --enable-reduced-depends \
   --enable-shared \
   --enable-uucp-rnews \
   --bindir=%{_libexecdir}/news \
@@ -276,28 +281,24 @@ cat <<EOF >%{buildroot}%{_presetdir}/80-inn.preset
 enable innd-expire.timer
 enable innd-nntpsend.timer
 enable innd-rnews.timer
 EOF
 
 install -dm755 %{buildroot}%{_sysconfdir}/rsyslog.d
 install -pm644 %{S:30} %{buildroot}%{_sysconfdir}/rsyslog.d/inn.conf
 
+install -m0644 -D inn.sysusers.conf %{buildroot}%{_sysusersdir}/inn.conf
+
 %check
 LD_LIBRARY_PATH=%{buildroot}%{_libdir} make -C tests test
 
 %global inn_units_with_restart innd.service innd-expire.timer innd-nntpsend.timer innd-rnews.timer
 %global inn_units innd-expire.service innd-nntpsend.service innd-rnews.service
 
-%pre -n inews
-getent group news >/dev/null || groupadd -g 13 -r news
-getent passwd news >/dev/null || \
-useradd -r -u 9 -g news -d /etc/news  \
--c "News server user" news
-exit 0
 
 %pre
 getent group news >/dev/null || groupadd -g 13 -r news
 getent passwd news >/dev/null || \
 useradd -r -u 9 -g news -d /etc/news  \
 -c "News server user" news
 getent group uucp >/dev/null || groupadd -g 14 -r uucp
 if ! getent passwd uucp >/dev/null ; then
@@ -579,18 +580,22 @@ fi
 %exclude %{_mandir}/man3/libinn_uwildmat.3*
 
 %files -n inews
 %config(noreplace) %attr(-,news,news) %{_sysconfdir}/news/inn.conf
 %config(noreplace) %attr(-,news,news) %{_sysconfdir}/news/passwd.nntp
 %{_bindir}/inews
 %attr(0755,root,root) %{_libexecdir}/news/inews
 %{_mandir}/man1/inews*
+%{_sysusersdir}/inn.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.7.2-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.2-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sun Oct 13 2024 Dominik Mierzejewski <dominik@greysector.net> - 2.7.2-1
 - update to 2.7.2 (#2293907)
 
 * Mon Sep 02 2024 Miroslav Suchý <msuchy@redhat.com> - 2.7.1-10
 - convert license to SPDX
diff --git ipa-hcc/ipa-hcc.spec ipa-hcc/ipa-hcc.spec.tmp
index af9b9ffba8..8e1336d6ff 100644
--- ipa-hcc/ipa-hcc.spec
+++ ipa-hcc/ipa-hcc.spec.tmp
@@ -65,17 +65,17 @@
 
 %if %{with selinux}
     %global selinuxtype targeted
     %global modulename ipa-hcc
 %endif
 
 Name:           %{package_name}
 Version:        0.18
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        Hybrid Cloud Console extension for IPA
 
 BuildArch:      noarch
 
 License:        GPL-3.0-or-later
 URL:            https://github.com/podengo-project/ipa-hcc
 
 # tag names are generated by rpkg
@@ -164,17 +164,16 @@ Requires(post): %{ipa_name}-server >= %{ipa_version}
 Requires: httpd
 Requires: mod_ssl
 %if %{with selinux}
 Requires: selinux-policy >= %{selinux_policy_version}
 Requires(post): selinux-policy-base >= %{selinux_policy_version}
 Requires(post): (%{name}-selinux = %{version}-%{release} if selinux-policy-%{selinuxtype})
 %endif
 %{?systemd_requires}
-%{?sysusers_requires_compat}
 
 %description server
 This package contains IPA server plugins, LDAP schema extension, WebUI
 extension, and registration agent for Hybrid Cloud Console integration. The
 extensions require an account on https://console.redhat.com/ and registration
 with subscription manager.
 
 %posttrans server
@@ -188,21 +187,16 @@ if [ $? -eq 0 ]; then
 
     # restart httpd if running
     /bin/systemctl try-restart gssproxy.service httpd.service >/dev/null 2>&1 || :
 fi
 
 %pre server
 # create user account for service
 %if 0%{?sysusers_requires_compat:1}
-%sysusers_create_compat %{SOURCE1}
-%else
-# RHEL 8
-getent passwd ipahcc >/dev/null || useradd -r -s /sbin/nologin -d /var/cache/ipa-hcc -c "IPA Hybrid Cloud Console enrollment service" ipahcc
-usermod -a -G ipaapi ipahcc
 %endif
 
 %post server
 # ipa-hcc-update.timer is started by ipactl
 %systemd_post ipa-hcc-update.service
 %systemd_post ipa-hcc-update.timer
 /bin/systemctl daemon-reload
 
@@ -590,16 +584,19 @@ install -p -D -m 0644 %{SOURCE1} %{buildroot}%{_sysusersdir}/ipa-hcc.conf
 %files selinux
 %doc README.md CONTRIBUTORS.txt
 %license COPYING
 %{_datadir}/selinux/packages/%{selinuxtype}/%{modulename}.pp.*
 # with selinux
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.18-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.18-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Aug 10 2024 Fraser Tweedale <frase@frase.id.au> 0.18-1
 - test: use RHEL with golang 1.21 for backend vm
 - test: fix idm-domains-backend-deploy after RBAC changes
 - chore: supress mypy errors in generated stubs
 - fix(HMS-4323): print hcc reponse headers in debug
diff --git ip-sentinel/ip-sentinel.spec ip-sentinel/ip-sentinel.spec.tmp
index 90f99db666..cb2a90ebe0 100644
--- ip-sentinel/ip-sentinel.spec
+++ ip-sentinel/ip-sentinel.spec.tmp
@@ -1,16 +1,16 @@
 %{!?username:%global username	ip-sentinel}
 %global service		ip-sentinel
 %global homedir		%{_var}/lib/ip-sentinel
 
 Summary:	Tool to prevent unauthorized usage of IP addresses
 Name:		ip-sentinel
 Version:	0.12
-Release:	1931%{?dist}
+Release:	1932%{?dist}
 License:	GPL-2.0-only
 URL:		http://www.nongnu.org/ip-sentinel/
 Source0:	http://savannah.nongnu.org/download/ip-sentinel/%{name}-%{version}.tar.bz2
 Source1:	http://savannah.nongnu.org/download/ip-sentinel/%{name}-%{version}.tar.bz2.sig
 Source2:	ip-sentinel.service
 Patch0:		ip-sentinel-0.12-pidfile.patch
 Patch1:		ip-sentinel-0.12-glibc.patch
 Provides:	user(%username) = 1
@@ -19,17 +19,16 @@ BuildRequires:  gcc
 BuildRequires:	which systemd
 BuildRequires: make
 Obsoletes: ip-sentinel-sysvinit < %{version}-%{release}
 Provides: ip-sentinel-sysvinit = %{version}-%{release}
 Obsoletes: ip-sentinel-minit < %{version}-%{release}
 Provides: ip-sentinel-minit = %{version}-%{release}
 Obsoletes: ip-sentinel-upstart < %{version}-%{release}
 Provides: ip-sentinel-upstart = %{version}-%{release}
-Requires(pre):  shadow-utils
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 
 
 %description
 IP Sentinel is a tool that tries to prevent unauthorized usage of
 IP addresses within an ethernet broadcast domain by answering ARP
@@ -38,16 +37,21 @@ the MAC in their ARP tables and will send future packets to this
 invalid MAC, rendering the IP unreachable.
 
 
 %prep
 %setup -q
 %patch -P0 -p0 -b .pidfile
 %patch -P1 -p0
 
+# Create a sysusers.d config file
+cat >ip-sentinel.sysusers.conf <<EOF
+u ip-sentinel - 'IP sentinel user' %{homedir} -
+EOF
+
 %build
 %configure --enable-release \
 	   --with-initrddir=%{_initrddir} \
 	   --with-username=%username \
            --disable-dietlibc
 make %{?_smp_mflags} all
 
 
@@ -57,27 +61,23 @@ rm -rf $RPM_BUILD_ROOT
 make DESTDIR=$RPM_BUILD_ROOT install install-contrib
 install -m750 -d $RPM_BUILD_ROOT%homedir
 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/minit/
 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/ip-sentinel
 
 
 install -Dpm 755 %{SOURCE2} $RPM_BUILD_ROOT%{_unitdir}/ip-sentinel.service
 
+install -m0644 -D ip-sentinel.sysusers.conf %{buildroot}%{_sysusersdir}/ip-sentinel.conf
+
 %check
 make check
 
 
 
-%pre
-getent group ip-sentinel >/dev/null || groupadd -r ip-sentinel
-getent passwd ip-sentinel >/dev/null || \
-    useradd -r -g ip-sentinel -d %{homedir} -s /sbin/nologin \
-    -c "IP sentinel user" ip-sentinel
-exit 0
 
 %post
 %systemd_post ip-sentinel.service
 
 %preun
 %systemd_preun ip-sentinel.service
 
 %postun
@@ -96,18 +96,22 @@ exit 0
 
 %files
 %doc AUTHORS COPYING ChangeLog NEWS README THANKS
 %{_mandir}/*/*
 %{_sbindir}/*
 %{_unitdir}/ip-sentinel.service
 %{_sysconfdir}/sysconfig/ip-sentinel
 %attr(-,root,%username) %homedir
+%{_sysusersdir}/ip-sentinel.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.12-1932
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.12-1931
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.12-1930
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.12-1929
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git ipsilon/ipsilon.spec ipsilon/ipsilon.spec.tmp
index d3b6a28bff..43ff5d7e16 100644
--- ipsilon/ipsilon.spec
+++ ipsilon/ipsilon.spec.tmp
@@ -3,17 +3,17 @@
 %global snapdate 20241202
 %global commit 01109c17e79c95ddf338dd1a64d88b89a43c1847
 %global shortcommit %%(c=%%{commit}; echo ${c:0:7})
 
 # post-release format...
 %global snaprel %%{?snapdate:.git%%{snapdate}.%%{shortcommit}}
 
 # for rpmdev-bumpspec
-%global baserelease 0.3
+%global baserelease 0.4
 
 Name:       ipsilon
 Version:    3.0.5
 Release:    %{baserelease}%{?snaprel}%{?dist}
 Summary:    An Identity Provider Server
 
 # Automatically converted from old format: GPLv3+ - review is highly recommended.
 License:    GPL-3.0-or-later
@@ -54,17 +54,16 @@ Requires:       %{name}-provider = %{version}-%{release}
 Requires:       python3-mod_wsgi
 Requires:       python3-cherrypy
 Requires:       python3-jinja2
 Requires:       python3-lxml
 Requires:       python3-sqlalchemy
 Requires:       open-sans-fonts
 Requires:       font(fontawesome)
 Requires:       pam
-Requires(pre):  shadow-utils
 
 %description base
 The Ipsilon IdP server without installer
 
 
 %package filesystem
 Summary:        Package providing files required by Ipsilon
 # Automatically converted from old format: GPLv3+ - review is highly recommended.
@@ -256,16 +255,21 @@ Provides a theme for Ipsilon used for openSUSE Accounts.
 
 %prep
 %if %{defined snaprel}
 %autosetup -n %{name}-%{commit} -p1
 %else
 %autosetup -p1
 %endif
 
+# Create a sysusers.d config file
+cat >ipsilon.sysusers.conf <<EOF
+u ipsilon - 'Ipsilon Server' %{_sharedstatedir}/ipsilon -
+EOF
+
 
 %build
 %py3_build
 
 
 %install
 %py3_install
 mkdir -p %{buildroot}%{_libexecdir}/ipsilon
@@ -283,22 +287,18 @@ mkdir -p  %{buildroot}%{_sysconfdir}/pam.d
 cp %{buildroot}%{_datadir}/ipsilon/templates/install/pam/ipsilon.pamd %{buildroot}%{_sysconfdir}/pam.d/ipsilon
 
 #%check
 # The test suite is not being run because:
 #  1. The last step of %%install removes the entire test suite
 #  2. It increases build time a lot
 #  3. It adds more build dependencies (namely postgresql server and client libraries)
 
-%pre base
-getent group ipsilon >/dev/null || groupadd -r ipsilon
-getent passwd ipsilon >/dev/null || \
-    useradd -r -g ipsilon -d %{_sharedstatedir}/ipsilon -s /sbin/nologin \
-    -c "Ipsilon Server" ipsilon
-exit 0
+install -m0644 -D ipsilon.sysusers.conf %{buildroot}%{_sysusersdir}/ipsilon.conf
+
 
 
 %files filesystem
 %doc README.md
 %license COPYING
 %dir %{_datadir}/ipsilon
 %dir %{_datadir}/ipsilon/templates
 %dir %{_datadir}/ipsilon/templates/install
@@ -379,16 +379,17 @@ exit 0
 %{_datadir}/ipsilon/ui/fonts-local
 %{_libexecdir}/ipsilon/
 %{_sbindir}/ipsilon-upgrade-database
 %dir %attr(0751,root,root) %{_sharedstatedir}/ipsilon
 %dir %attr(0751,root,root) %{_sysconfdir}/ipsilon
 %dir %attr(0750,ipsilon,apache) %{_localstatedir}/cache/ipsilon
 %config(noreplace) %{_sysconfdir}/pam.d/ipsilon
 %dir %{_datadir}/ipsilon/themes
+%{_sysusersdir}/ipsilon.conf
 
 %files client
 %license COPYING
 %{_bindir}/ipsilon-client-install
 %{_datadir}/ipsilon/templates/install/saml2
 %{_datadir}/ipsilon/templates/install/openidc
 %{_mandir}/man*/ipsilon-client-install.1*
 
@@ -463,16 +464,19 @@ exit 0
 %{_datadir}/ipsilon/themes/Fedora
 
 %files theme-openSUSE
 %license COPYING
 %{_datadir}/ipsilon/themes/openSUSE
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.0.5-0.4.git20241202.01109c1
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Mon Jan 20 2025 Kevin Fenzi <kevin@scrye.com> - 3.0.5-0.3.git20241202.01109c1
 - Fix fallout due to /sbin merge.
 
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.5-0.2.git20241202.01109c1
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Dec 02 2024 Kevin Fenzi <kevin@scrye.com> - 3.0.5-0.1
 - Switch to a git snapshot.
diff --git jabberd/jabberd.spec jabberd/jabberd.spec.tmp
index 1cb4dafd50..f61f3bb003 100644
--- jabberd/jabberd.spec
+++ jabberd/jabberd.spec.tmp
@@ -9,17 +9,17 @@
 %bcond_with systemd
 %else
 %bcond_without systemd
 %endif
 
 Summary:        OpenSource server implementation of the Jabber protocols
 Name:           jabberd
 Version:        2.6.1
-Release:        30%{?dist}
+Release:        31%{?dist}
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:        GPL-2.0-or-later
 Source0:        https://github.com/jabberd2/jabberd2/releases/download/jabberd-%{version}/jabberd-%{version}.tar.xz
 Source1:        README.fedora
 Source2:        jabberd.init
 Source3:        jabberd.sysconfig
 Patch0:         jabberd-fedora-crypto-policy.patch
 Patch1:         jabberd-fix-paths.patch
@@ -37,17 +37,16 @@ BuildRequires:  perl-generators
 BuildRequires:  cppunit-devel
 %if %{with systemd}
 BuildRequires:          systemd-units
 Requires(post):         systemd-units systemd-sysv
 Requires(preun):        systemd-units
 Requires(postun):       systemd-units
 %else
 Requires(post):         openssl chkconfig /sbin/service
-Requires(pre):          shadow-utils
 Requires(preun):        chkconfig shadow-utils /sbin/service
 Requires(postun):       chkconfig /sbin/service
 %endif
 %if %{with pam}
 BuildRequires:  pam-devel
 %endif
 %if %{with sqlite}
 BuildRequires:  sqlite-devel
@@ -72,17 +71,16 @@ BuildRequires:  mysql-devel
 %if %{with postgresql}
 BuildRequires:  libpq-devel
 %endif
 BuildRequires:          libgsasl-devel udns-devel
 BuildRequires:          http-parser-devel
 BuildRequires:          autoconf libtool
 BuildRequires: make
 Requires(post):         openssl
-Requires(pre):          shadow-utils
 Requires(preun):        shadow-utils
 
 %description
 The jabberd project aims to provide an open-source server implementation of
 the Jabber protocols for instant messaging and XML routing. The goal of this
 project is to provide a scalable, reliable, efficient and extensible server
 that provides a complete set of features and is up to date with the latest
 protocol revisions.
@@ -113,16 +111,21 @@ This package defaults to use pam and sqlite.
 %patch -P4 -p1
 %patch -P5 -p1
 %patch -P7 -p1
 %patch -P8 -p1
 autoreconf --verbose --force --install
 %endif
 %patch -P6 -p1
 
+# Create a sysusers.d config file
+cat >jabberd.sysusers.conf <<EOF
+u jabber - 'Jabber Server' %{_var}/lib/%{name} -
+EOF
+
 %build
 export CFLAGS="%{optflags}"
 %configure \
         --sysconfdir=%{_sysconfdir}/%{name} \
         --localstatedir=%{_var}/lib \
 %if %{with pam}
         --enable-pam \
 %else
@@ -233,25 +236,20 @@ touch $RPM_BUILD_ROOT%{_sysconfdir}/jabberd/server.pem
 rm -f $RPM_BUILD_ROOT%{_bindir}/jabberd
 
 # we have our own start script
 rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/jabberd.cfg*
 
 # README.fedora
 cp %{SOURCE1} .
 
+install -m0644 -D jabberd.sysusers.conf %{buildroot}%{_sysusersdir}/jabberd.conf
+
 
 
-%pre
-#creating jabber user
-getent group jabber >/dev/null || groupadd -r jabber
-getent passwd jabber >/dev/null || \
-useradd -r -g jabber -d %{_var}/lib/%{name} -s /sbin/nologin \
-        -c "Jabber Server" jabber
-exit 0
 
 %post
 %if %{with systemd}
 %systemd_post %{name}.service
 if [ $1 -eq 1 ] ; then
         #replace default passwords, yet another hack
         export NEWPASS=$( dd if=/dev/urandom bs=20 count=1 2>/dev/null \
                                 | sha1sum | awk '{print $1}' )
@@ -351,18 +349,22 @@ fi
 %attr(750, jabber, jabber) %dir %{_sysconfdir}/%{name}/templates
 %config(noreplace) %{_sysconfdir}/%{name}/server.pem
 %attr(640, jabber, jabber) %config(noreplace) %{_sysconfdir}/%{name}/*xml*
 %attr(640, jabber, jabber) %config(noreplace) %{_sysconfdir}/%{name}/templates/*xml*
 %dir %{_datadir}/%{name}/
 %attr(644,root,root) %{_datadir}/%{name}/*
 %config(noreplace) %{_sysconfdir}/pam.d/%{name}
 %attr(700, jabber, jabber) %{_var}/lib/%{name}
+%{_sysusersdir}/jabberd.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.6.1-31
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-30
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 2.6.1-29
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-28
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git jack-audio-connection-kit/jack-audio-connection-kit.spec jack-audio-connection-kit/jack-audio-connection-kit.spec.tmp
index 53ebefcb85..c0ba998a6c 100644
--- jack-audio-connection-kit/jack-audio-connection-kit.spec
+++ jack-audio-connection-kit/jack-audio-connection-kit.spec.tmp
@@ -9,17 +9,17 @@
 %global pagroup   pulse-rt
 
 # Disable lto (#1872065, #1869059)
 %define _lto_cflags %{nil}
 
 Summary:       The Jack Audio Connection Kit
 Name:          jack-audio-connection-kit
 Version:       1.9.22
-Release:       8%{?dist}
+Release:       9%{?dist}
 # The entire source (~500 files) is a mixture of these three licenses
 # Automatically converted from old format: GPLv2 and GPLv2+ and LGPLv2+ - review is highly recommended.
 License:       GPL-2.0-only AND GPL-2.0-or-later AND LicenseRef-Callaway-LGPLv2+
 URL:           https://www.jackaudio.org
 Source0:       https://github.com/jackaudio/jack2/archive/v%{version}/v%{version}.tar.gz#/jack2-%{version}.tar.gz
 Source1:       %{name}-README.Fedora
 Source2:       %{name}-script.pa
 Source3:       %{name}-limits.conf
@@ -42,17 +42,16 @@ BuildRequires: libffado-devel
 %endif
 BuildRequires: libsamplerate-devel
 BuildRequires: libsndfile-devel
 BuildRequires: ncurses-devel
 BuildRequires: opus-devel
 BuildRequires: pkgconfig
 BuildRequires: python3
 
-Requires(pre): shadow-utils
 Requires:      pam
 
 Obsoletes:     %{name}-example-clients < 1.9.22
 
 %description
 JACK is a low-latency audio server, written primarily for the Linux operating
 system. It can connect a number of different applications to an audio device, as
 well as allowing them to share audio between themselves. Its clients can run in
@@ -83,16 +82,21 @@ Header files for the Jack Audio Connection Kit.
 Summary:       Example clients that use Jack 
 
 %description example-clients
 Small example clients that use the Jack Audio Connection Kit.
 
 %prep
 %autosetup -p1 -n jack2-%{version}
 
+# Create a sysusers.d config file
+cat >jack-audio-connection-kit.sysusers.conf <<EOF
+g jackuser -
+EOF
+
 %build
 %set_build_flags
 export PREFIX=%{_prefix}
 python3 ./waf configure \
    --mandir=%{_mandir}/man1 \
    --libdir=%{_libdir} \
    --doxygen \
    --dbus \
@@ -125,48 +129,51 @@ sed -e 's,@groupname@,%groupname,g; s,@pagroup@,%pagroup,g;' \
 install -p -m644 %{SOURCE1} README.Fedora
 
 # install pulseaudio script for jack (as documentation part)
 install -p -m644 %{SOURCE2} jack.pa
 
 # Fix permissions of the modules
 chmod 755 %{buildroot}%{_libdir}/jack/*.so %{buildroot}%{_libdir}/libjack*.so.*.*.*
 
-%pre
-getent group %groupname > /dev/null || groupadd -r %groupname
-exit 0
+install -m0644 -D jack-audio-connection-kit.sysusers.conf %{buildroot}%{_sysusersdir}/jack-audio-connection-kit.conf
+
 
 %files
 %doc ChangeLog.rst README.rst README_NETJACK2
 %doc README.Fedora
 %doc jack.pa
 %license COPYING
 %{_bindir}/jackd
 %{_libdir}/jack/
 %{_libdir}/libjack.so.0*
 %{_libdir}/libjacknet.so.0*
 %{_libdir}/libjackserver.so.0*
 %config(noreplace) %{_sysconfdir}/security/limits.d/*.conf
 
 %{_mandir}/man1/jackd*.1*
+%{_sysusersdir}/jack-audio-connection-kit.conf
 
 %files dbus
 %{_bindir}/jackdbus
 %{_datadir}/dbus-1/services/org.jackaudio.service
 %{_bindir}/jack_control
 
 %files devel
 %doc reference/html/
 %{_includedir}/jack/
 %{_libdir}/libjack.so
 %{_libdir}/libjacknet.so
 %{_libdir}/libjackserver.so
 %{_libdir}/pkgconfig/jack.pc
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.9.22-9
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.22-8
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Sep 02 2024 Miroslav Suchý <msuchy@redhat.com> - 1.9.22-7
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.22-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git jwhois/jwhois.spec jwhois/jwhois.spec.tmp
index 0b4b5d4788..db3a4a3b8e 100644
--- jwhois/jwhois.spec
+++ jwhois/jwhois.spec.tmp
@@ -1,13 +1,13 @@
 %{?!with_cache: %global with_cache 0}
 
 Name: jwhois
 Version: 4.0
-Release: 80%{?dist}
+Release: 81%{?dist}
 URL: http://www.gnu.org/software/jwhois/
 Source0: ftp://ftp.gnu.org/gnu/jwhois/jwhois-%{version}.tar.gz
 Source1: https://raw.githubusercontent.com/robert-scheck/jwhois/2bd561e06ca37cf6c2ef9f0a2e957e09f58e6972/example/jwhois.conf
 Patch0: jwhois-4.0-connect.patch
 Patch1: jwhois-4.0-ipv6match.patch
 Patch2: jwhois-4.0-fclose.patch
 Patch3: jwhois-4.0-select.patch
 Patch5: jwhois-4.0-multi-homed.patch
@@ -45,16 +45,21 @@ A whois client that accepts both traditional and finger-style queries.
 
 iconv -f iso-8859-1 -t utf-8 < doc/sv/jwhois.1 > doc/sv/jwhois.1_
 mv doc/sv/jwhois.1_ doc/sv/jwhois.1
 
 cp -pf %{SOURCE1} example/jwhois.conf
 
 autoreconf
 
+# Create a sysusers.d config file
+cat >jwhois.sysusers.conf <<EOF
+g jwhois -
+EOF
+
 %build
 %if %{with_cache}
 %configure --enable-sgid --localstatedir=%{_localstatedir}/cache/jwhois
 %else
 %configure
 %endif
 make %{?_smp_mflags}
 
@@ -74,35 +79,37 @@ rm -f "$RPM_BUILD_ROOT"%{_infodir}/dir
 # Make "whois.{%%alternative}" jwhois (because of localized manual pages).
 echo .so man1/jwhois.1 > $RPM_BUILD_ROOT/%{_mandir}/man1/whois.%{alternative}.1
 
 # Rename to alternative names
 touch $RPM_BUILD_ROOT%{_bindir}/whois
 chmod 755 $RPM_BUILD_ROOT%{_bindir}/whois
 touch $RPM_BUILD_ROOT%{_mandir}/man1/whois.1
 
+install -m0644 -D jwhois.sysusers.conf %{buildroot}%{_sysusersdir}/jwhois.conf
+
 %files -f %{name}.lang
 %doc AUTHORS COPYING ChangeLog NEWS README TODO
 %if %{with_cache}
 %attr(2755,root,jwhois) %{_bindir}/jwhois
 %attr(2775,root,jwhois) %{_localstatedir}/cache/jwhois/jwhois.db
 %else
 %attr(0755,root,root) %{_bindir}/jwhois
 %endif
 %ghost %verify(not md5 size mtime) %{_bindir}/whois
 %{_mandir}/man1/jwhois.1*
 %lang(sv) %{_mandir}/sv/man1/jwhois.1*
 %{_mandir}/man1/whois.%{alternative}.*
 %ghost %verify(not md5 size mtime) %{_mandir}/man1/whois.1.gz
 %{_infodir}/jwhois.info.*
 %config(noreplace) %{_sysconfdir}/jwhois.conf
+%{_sysusersdir}/jwhois.conf
 
 %if %{with_cache}
 %pre
-getent group jwhois >/dev/null || groupadd -r jwhois || :
 %endif
 
 %post
 %if 0%{?rhel} && 0%{?rhel} <= 7
 if [ -f %{_infodir}/jwhois.info ]; then # --excludedocs?
     /sbin/install-info %{_infodir}/jwhois.info %{_infodir}/dir || :
 fi
 %endif
@@ -120,16 +127,19 @@ if [ $1 = 0 ]; then
         /sbin/install-info --delete %{_infodir}/jwhois.info %{_infodir}/dir || :
     fi
 %endif
     %{_sbindir}/update-alternatives --remove \
             %{genname} %{_bindir}/jwhois
 fi
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.0-81
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Tue Jan 21 2025 Vitezlsav Crhonek <vcrhonek@redhat.com> - 4.0-80
 - Fix FTBFS with GCC 15
 
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.0-79
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.0-78
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git kismet/kismet.spec kismet/kismet.spec.tmp
index 20f0d72504..f478e83109 100644
--- kismet/kismet.spec
+++ kismet/kismet.spec.tmp
@@ -7,17 +7,17 @@
 ## ...local macros}
 
 %{!?apply:%global  apply(p:n:b:) %patch%%{-n:%%{-n*}} %%{-p:-p%%{-p*}} %%{-b:-b%%{-b*}} \
 %nil}
 
 Summary:        WLAN detector, sniffer and IDS
 Name:           kismet
 Version:        %_rpmversion
-Release:        8%{?dist}
+Release:        9%{?dist}
 License:        GPL-2.0-or-later
 URL:            http://www.kismetwireless.net/
 Source0:        http://www.kismetwireless.net/code/%{name}-%_version.tar.xz
 
 Patch0:         kismet-include.patch
 Patch1:         kismet-install.patch
 Patch2:         hak5-types.patch
 
@@ -57,33 +57,38 @@ sed -i 's!\$(prefix)/lib/!%{_libdir}/!g' plugin-*/Makefile
 # default
 sed -i \
     -e '\!^ouifile=/etc/manuf!d' \
     -e '\!^ouifile=/usr/share/wireshark/wireshark/manuf!d' \
     conf/kismet.conf
 
 sed -i s/@VERSION@/%{version}/g packaging/kismet.pc.in
 
+# Create a sysusers.d config file
+cat >kismet.sysusers.conf <<EOF
+g kismet -
+EOF
+
 %build
 
 export ac_cv_lib_uClibcpp_main=no # we do not want to build against uClibc++, even when available
 export LDFLAGS='-Wl,--as-needed'
 %configure \
            --sysconfdir=%cfgdir \
            CXXFLAGS="$RPM_OPT_FLAGS -D__STDC_FORMAT_MACROS" \
            --disable-python-tools
 
 %make_build
 
 
 %install
 BIN=$RPM_BUILD_ROOT/bin ETC=$RPM_BUILD_ROOT/etc %{__make} suidinstall DESTDIR=%{?buildroot} INSTALL="%{__install} -p"
 
-%pre
-getent group kismet >/dev/null || groupadd -f -r kismet
+install -m0644 -D kismet.sysusers.conf %{buildroot}%{_sysusersdir}/kismet.conf
+
 
 %files
 %doc README*
 %dir %attr(0755,root,root) %cfgdir
 %config(noreplace) %cfgdir/*
 %{_bindir}/kismet
 %{_bindir}/kismet_cap_kismetdb
 %{_bindir}/kismet_cap_pcapfile
@@ -104,18 +109,22 @@ getent group kismet >/dev/null || groupadd -f -r kismet
 %attr(4755,root,root) %{_bindir}/kismet_cap_nrf_52840
 %attr(4755,root,root) %{_bindir}/kismet_cap_nrf_mousejack
 %attr(4755,root,root) %{_bindir}/kismet_cap_nxp_kw41z
 %attr(4755,root,root) %{_bindir}/kismet_cap_rz_killerbee
 %attr(4755,root,root) %{_bindir}/kismet_cap_ti_cc_2531
 %attr(4755,root,root) %{_bindir}/kismet_cap_ti_cc_2540
 %{_datadir}/kismet
 %{_libdir}/pkgconfig/kismet.pc
+%{_sysusersdir}/kismet.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.0.2023.07.R1-9
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.0.2023.07.R1-8
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.0.2023.07.R1-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.0.2023.07.R1-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git knot-resolver/knot-resolver.spec knot-resolver/knot-resolver.spec.tmp
index 7e2e1a0c9a..2a5555329d 100644
--- knot-resolver/knot-resolver.spec
+++ knot-resolver/knot-resolver.spec.tmp
@@ -2,17 +2,17 @@
 %{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}}
 
 %define GPG_CHECK 1
 %define repodir %{_builddir}/%{name}-%{version}
 %define NINJA ninja-build
 
 Name:           knot-resolver
 Version:        5.7.4
-Release:        3%{?dist}
+Release:        4%{?dist}
 Summary:        Caching full DNS Resolver
 
 License:        GPL-3.0-or-later
 URL:            https://www.knot-resolver.cz/
 Source0:        https://secure.nic.cz/files/%{name}/%{name}-%{version}.tar.xz
 
 # LuaJIT only on these arches
 %if 0%{?rhel} == 7
@@ -61,26 +61,24 @@ BuildRequires:  pkgconfig(libprotobuf-c)
 
 # Distro-dependent dependencies
 %if 0%{?rhel} == 7
 BuildRequires:  lmdb-devel
 # Lua 5.1 version of the libraries have different package names
 Requires:       lua-basexx
 Requires:       lua-psl
 Requires:       lua-http
-Requires(pre):  shadow-utils
 %endif
 %if 0%{?fedora} || 0%{?rhel} > 7
 BuildRequires:  pkgconfig(lmdb)
 BuildRequires:  python3-sphinx
 Requires:       lua5.1-basexx
 Requires:       lua5.1-cqueues
 Requires:       lua5.1-http
 Recommends:     lua5.1-psl
-Requires(pre):  shadow-utils
 %endif
 
 # we do not build HTTP module on SuSE so the build requires is not needed
 %if "x%{?suse_version}" == "x"
 BuildRequires:  openssl-devel
 %endif
 
 %if 0%{?suse_version}
@@ -162,16 +160,21 @@ native C implementation, which doesn't require this package.
 %if 0%{GPG_CHECK}
 export GNUPGHOME=./gpg-keyring
 mkdir -m 700 ${GNUPGHOME}
 gpg2 --import %{SOURCE100}
 gpg2 --verify %{SOURCE1} %{SOURCE0}
 %endif
 %setup -q -n %{name}-%{version}
 
+# Create a sysusers.d config file
+cat >knot-resolver.sysusers.conf <<EOF
+u knot-resolver - 'Knot Resolver' %{_sysconfdir}/knot-resolver -
+EOF
+
 %build
 CFLAGS="%{optflags}" LDFLAGS="%{?__global_ldflags}" meson build_rpm \
 %if "x%{?rhel}" == "x"
     -Ddoc=enabled \
 %endif
     -Dsystemd_files=enabled \
     -Dclient=enabled \
 %if "x%{?suse_version}" == "x"
@@ -219,20 +222,19 @@ rm %{buildroot}%{_libdir}/knot-resolver/kres_modules/prometheus.lua
 %endif
 
 # rename doc directory for centos 7, opensuse
 %if 0%{?suse_version} || 0%{?rhel} == 7
 install -m 755 -d %{buildroot}/%{_pkgdocdir}
 mv %{buildroot}/%{_datadir}/doc/%{name}/* %{buildroot}/%{_pkgdocdir}/
 %endif
 
+install -m0644 -D knot-resolver.sysusers.conf %{buildroot}%{_sysusersdir}/knot-resolver.conf
+
 %pre
-getent group knot-resolver >/dev/null || groupadd -r knot-resolver
-getent passwd knot-resolver >/dev/null || useradd -r -g knot-resolver -d %{_sysconfdir}/knot-resolver -s /sbin/nologin -c "Knot Resolver" knot-resolver
-
 %if "x%{?rhel}" == "x"
 # upgrade-4-to-5
 if [ -f %{_unitdir}/kresd.socket ] ; then
 	export UPG_DIR=%{_sharedstatedir}/knot-resolver/.upgrade-4-to-5
 	mkdir -p ${UPG_DIR}
 	touch ${UPG_DIR}/.unfinished
 
 	for sock in kresd.socket kresd-tls.socket kresd-webmgmt.socket kresd-doh.socket ; do
@@ -344,16 +346,17 @@ fi
 %{_libdir}/knot-resolver/kres_modules/serve_stale.lua
 %{_libdir}/knot-resolver/kres_modules/ta_sentinel.lua
 %{_libdir}/knot-resolver/kres_modules/ta_signal_query.lua
 %{_libdir}/knot-resolver/kres_modules/ta_update.lua
 %{_libdir}/knot-resolver/kres_modules/view.lua
 %{_libdir}/knot-resolver/kres_modules/watchdog.lua
 %{_libdir}/knot-resolver/kres_modules/workarounds.lua
 %{_mandir}/man8/kresd.8.gz
+%{_sysusersdir}/knot-resolver.conf
 
 %files devel
 %{_includedir}/libkres
 %{_libdir}/pkgconfig/libkres.pc
 %{_libdir}/libkres.so
 
 %if "x%{?rhel}" == "x"
 %files doc
@@ -373,16 +376,19 @@ fi
 %files module-http
 %{_libdir}/knot-resolver/debug_opensslkeylog.so
 %{_libdir}/knot-resolver/kres_modules/http
 %{_libdir}/knot-resolver/kres_modules/http*.lua
 %{_libdir}/knot-resolver/kres_modules/prometheus.lua
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 5.7.4-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5.7.4-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Nov 26 2024 Jakub Ružička <jakub.ruzicka@nic.cz> - 5.7.4-2
 - Rebuilt for Knot DNS 3.4
 
 * Wed Jul 24 2024 Jakub Ružička <jakub.ruzicka@nic.cz> - 5.7.4-1
 - New upstream version 5.7.4
diff --git KoboDeluxe/KoboDeluxe.spec KoboDeluxe/KoboDeluxe.spec.tmp
index 0045aa2736..bb5a12890a 100644
--- KoboDeluxe/KoboDeluxe.spec
+++ KoboDeluxe/KoboDeluxe.spec.tmp
@@ -1,11 +1,11 @@
 Name:           KoboDeluxe
 Version:        0.5.1
-Release:        44%{?dist}
+Release:        45%{?dist}
 Summary:        Third person scrolling 2D shooter
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:        GPL-2.0-or-later
 URL:            http://olofson.net/kobodl/
 Source0:        http://olofson.net/kobodl/download/%{name}-%{version}.tar.bz2
 Source1:        %{name}-32.png
 Source2:        %{name}-64.png
 Source3:        %{name}-128.png
@@ -15,17 +15,16 @@ Patch1:         KoboDeluxe-defaults.patch
 Patch2:         KoboDeluxe-0.5.1-avoid-unistd-pipe-collision.patch
 Patch3:         KoboDeluxe-0.5.1-gcc44.patch
 Patch4:         KoboDeluxe-0.5.1-midi-crash-fix.patch
 BuildRequires:  gcc
 BuildRequires:  gcc-c++
 BuildRequires:  SDL_image-devel desktop-file-utils libappstream-glib
 BuildRequires: make
 Requires:       hicolor-icon-theme
-Requires(pre):  shadow-utils
 
 %description
 Kobo Deluxe is a 3'rd person  scrolling 2D shooter with a simple
 and responsive control system  - which you'll need to tackle the
 tons of enemy ships that shoot at you,  chase you, circle around
 you shooting,  or even  launch other ships at you,  while you're
 trying to  destroy the  labyrinth  shaped  bases.  There  are 50
 action packed  levels with  smoothly increasing  difficulty, and
@@ -37,16 +36,21 @@ to be dealt with successfully.
 %autosetup -p1
 sed -i 's|$(sharedstatedir)/kobo-deluxe/scores|%{_var}/games/kobo-deluxe|g' \
   configure
 iconv -f ISO-8859-1 -t UTF8 README > tmp;         mv tmp README
 iconv -f ISO-8859-1 -t UTF8 ChangeLog > tmp;      mv tmp ChangeLog
 iconv -f ISO2022JP -t UTF8 README.jp > tmp;       mv tmp README.jp
 iconv -f ISO2022JP -t UTF8 README.xkobo.jp > tmp; mv tmp README.xkobo.jp
 
+# Create a sysusers.d config file
+cat >kobodeluxe.sysusers.conf <<EOF
+g kobodl -
+EOF
+
 
 
 %build
 %configure --disable-dependency-tracking --enable-opengl
 %make_build
 
 
 %install
@@ -64,33 +68,36 @@ install -p -m 644 %{SOURCE3} \
   $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/128x128/apps/%{name}.png
 mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications
 desktop-file-install --dir $RPM_BUILD_ROOT%{_datadir}/applications %{SOURCE4}
 mkdir -p $RPM_BUILD_ROOT%{_datadir}/appdata
 install -p -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_datadir}/appdata
 appstream-util validate-relax --nonet \
   $RPM_BUILD_ROOT%{_datadir}/appdata/%{name}.appdata.xml
 
-%pre
-getent group kobodl >/dev/null || groupadd -r kobodl
-exit 0
+install -m0644 -D kobodeluxe.sysusers.conf %{buildroot}%{_sysusersdir}/kobodeluxe.conf
+
 
 %files
 %doc ChangeLog COPYING* README README.jp README.xkobo.jp README.sfont 
 %doc README.xkobo TODO
 %attr(2755,root,kobodl) %{_bindir}/kobodl
 %{_datadir}/kobo-deluxe
 %{_mandir}/man6/kobodl.6.gz
 %config(noreplace) %attr(0775,root,kobodl) %{_var}/games/kobo-deluxe
 %{_datadir}/appdata/%{name}.appdata.xml
 %{_datadir}/applications/%{name}.desktop
 %{_datadir}/icons/hicolor/*/apps/%{name}.png
+%{_sysusersdir}/kobodeluxe.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.5.1-45
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.5.1-44
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul  26 2024 Miroslav Suchý <msuchy@redhat.com> - 0.5.1-43
 - convert license to SPDX
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.5.1-42
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git koji/koji.spec koji/koji.spec.tmp
index cc2827aa58..e00bfe9579 100644
--- koji/koji.spec
+++ koji/koji.spec.tmp
@@ -4,17 +4,17 @@
 
 %define __python %{__python3}
 
 # If the definition isn't available for python3_pkgversion, define it
 %{?!python3_pkgversion:%global python3_pkgversion 3}
 
 Name: koji
 Version: 1.35.1
-Release: 6%{?dist}
+Release: 7%{?dist}
 # the included arch lib from yum's rpmUtils is GPLv2+
 # Automatically converted from old format: LGPLv2 and GPLv2+ - review is highly recommended.
 License: LicenseRef-Callaway-LGPLv2 AND GPL-2.0-or-later
 Summary: Build system tools
 URL: https://pagure.io/koji/
 Source0: https://releases.pagure.org/koji/koji-%{version}.tar.bz2
 
 Patch1: https://pagure.io/koji/pull-request/4258.patch#/0001-repos-check-for-newer-create-event.patch
@@ -129,17 +129,16 @@ Requires: %{name}-builder = %{version}-%{release}
 %description builder-plugins
 Plugins for the koji build daemon
 
 %package builder
 Summary: Koji RPM builder daemon
 # Automatically converted from old format: LGPLv2 - review is highly recommended.
 License: LicenseRef-Callaway-LGPLv2
 Requires: mock >= 0.9.14
-Requires(pre): /usr/sbin/useradd
 Requires: squashfs-tools
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 Requires: /usr/bin/svn
 Requires: /usr/bin/git
 Requires: createrepo_c >= 0.10.0
 Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release}
@@ -212,16 +211,22 @@ Provides: %{name}-web-code = %{version}-%{release}
 koji-web is a web UI to the Koji system.
 
 %prep
 %autosetup -p1
 # we'll be packaging these separately and don't want them registered
 # to the wheel we will produce.
 sed -e '/util\/koji/g' -e '/koji_cli_plugins/g' -i setup.py
 
+# Create a sysusers.d config file
+cat >koji.sysusers.conf <<EOF
+u kojibuilder - - /builddir /bin/bash
+m kojibuilder mock
+EOF
+
 %build
 %py3_build_wheel
 
 %install
 %py3_install_wheel %{name}-%{version}-py3-none-any.whl
 mkdir -p %{buildroot}/etc/koji.conf.d
 cp cli/koji.conf %{buildroot}/etc/koji.conf
 for D in kojihub builder plugins util www vm schemas ; do
@@ -244,16 +249,18 @@ extra_dirs='
     %{_prefix}/koji-hub-plugins
     %{_datadir}/koji-hub
     %{_datadir}/koji-web/lib/kojiweb
     %{_datadir}/koji-web/scripts'
 for fn in $extra_dirs ; do
     %py_byte_compile %{__python3} %{buildroot}$fn
 done
 
+install -m0644 -D koji.sysusers.conf %{buildroot}%{_sysusersdir}/koji.conf
+
 %files
 %{_bindir}/*
 %{_datadir}/koji
 %config(noreplace) /etc/koji.conf
 %dir /etc/koji.conf.d
 %doc docs Authors COPYING LGPL
 
 %files -n python%{python3_pkgversion}-koji
@@ -322,19 +329,18 @@ done
 %{_datadir}/koji-web
 
 %files builder
 %{_sbindir}/kojid
 %{_unitdir}/kojid.service
 %dir /etc/kojid
 %config(noreplace) /etc/kojid/kojid.conf
 %attr(-,kojibuilder,kojibuilder) /etc/mock/koji
+%{_sysusersdir}/koji.conf
 
-%pre builder
-/usr/sbin/useradd -r -s /bin/bash -G mock -d /builddir -M kojibuilder 2>/dev/null ||:
 
 %post builder
 %systemd_post kojid.service
 
 %preun builder
 %systemd_preun kojid.service
 
 %postun builder
@@ -362,16 +368,19 @@ done
 
 %preun utils
 %systemd_preun kojira.service
 
 %postun utils
 %systemd_postun kojira.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.35.1-7
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.35.1-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Nov 26 2024 Romain Geissler <romain.geissler@amadeus.com> - 1.35.1-5
 - Drop the cvs requirement.
 
 * Tue Nov 19 2024 Igor Raits <ignatenkobrain@fedoraproject.org> - 1.35.1-4
 - Fix symlink_if_latest() logic
diff --git libnxz/libnxz.spec libnxz/libnxz.spec.tmp
index ed92e5717e..a766ee5d49 100644
--- libnxz/libnxz.spec
+++ libnxz/libnxz.spec.tmp
@@ -1,15 +1,15 @@
 # Keep the *.la file around
 # See https://fedoraproject.org/wiki/Changes/RemoveLaFiles
 %global __brp_remove_la_files %nil
 
 Name:		libnxz
 Version:	0.64
-Release:	7%{?dist}
+Release:	8%{?dist}
 Summary:	Zlib implementation for POWER processors
 License:    Apache-2.0 OR GPL-2.0-or-later
 Url:		https://github.com/libnxz/power-gzip
 BuildRequires:	zlib-devel
 Source0:	%{url}/archive/v%{version}/%{name}-%{version}.tar.gz
 # Fixes for GCC 14 and zlib-ng compat usage
 Patch0:         %{url}/pull/209.patch
 
@@ -43,50 +43,59 @@ Requires:	%{name}-devel%{?_isa} = %{version}-%{release}
 
 %description	static
 The %{name}-static package contains static libraries for developing
 application that use %{name}.
 
 %prep
 %autosetup -p1 -n power-gzip-%{version}
 
+# Create a sysusers.d config file
+cat >libnxz.sysusers.conf <<EOF
+g nx-gzip -
+EOF
+
 %build
 %configure --enable-zlib-api
 %make_build
 
 %check
 # libnxz tests only work on P9 servers or newer, with Linux >= 5.8.
 # This combination is not guaranteed to have at build time.  Check if
 # NX GZIP engine device is available before deciding to run the tests.
 if [[ -w "/dev/crypto/nx-gzip" ]]; then
 	make check
 fi
 
 %install
 %make_install
 
-%pre
-%{_sbindir}/groupadd -r -f nx-gzip
+install -m0644 -D libnxz.sysusers.conf %{buildroot}%{_sysusersdir}/libnxz.conf
+
 
 %files
 %{_libdir}/%{soname}
 %{_libdir}/libnxz.so.0.%{version}
 %license %{_docdir}/%{name}/APACHE-2.0.txt
 %license %{_docdir}/%{name}/gpl-2.0.txt
 %doc README.md
+%{_sysusersdir}/libnxz.conf
 
 %files devel
 %{_includedir}/libnxz.h
 %{_libdir}/libnxz.so
 
 %files static
 %{_libdir}/libnxz.a
 %{_libdir}/libnxz.la
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.64-8
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Mon Jan 20 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.64-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.64-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.64-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git libservicelog/libservicelog.spec libservicelog/libservicelog.spec.tmp
index 4bff7ef899..c0313ffe12 100644
--- libservicelog/libservicelog.spec
+++ libservicelog/libservicelog.spec.tmp
@@ -1,25 +1,24 @@
 Name:          libservicelog
 Version:       1.1.19
-Release:       13%{?dist}
+Release:       14%{?dist}
 Summary:       Servicelog Database and Library
 
 #v29_notify_gram.c v29_notify_gram.h are GPLv2+
 License:       LGPL-2.0-only AND GPL-2.0-or-later
 
 URL:           https://github.com/power-ras/%{name}/releases
 Source:        https://github.com/power-ras/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
 
 # Link with needed libraries
 Patch0: libservicelog-1.1.9-libs.patch
 
 BuildRequires: sqlite-devel autoconf libtool bison librtas-devel flex
 BuildRequires: make
-Requires(pre): shadow-utils
 
 # because of librtas-devel
 ExclusiveArch: ppc %{power64}
 
 %description
 The libservicelog package contains a library to create and maintain a
 database for storing events related to system service.  This database
 allows for the logging of serviceable and informational events, and for
@@ -34,55 +33,64 @@ Requires:      pkgconfig sqlite-devel
 %description   devel
 Contains header files for building with libservicelog.
 
 
 %prep
 %setup -q
 %patch 0 -p1 -b .libs
 
+# Create a sysusers.d config file
+cat >libservicelog.sysusers.conf <<EOF
+g service -
+EOF
+
 %build
 autoreconf -fiv
 %configure --disable-static
 # disable "-Werror=format-security" checking gcc option until we fix
 # these errors are fixed in upstream code.
 CFLAGS="%{optflags} -fPIC -DPIC"
 CFLAGS=`echo $CFLAGS | sed 's/-Werror=format-security//'`
 make CFLAGS="$CFLAGS" %{?_smp_mflags}
 
 
 %install
 make install DESTDIR=%{buildroot}
 rm -f %{buildroot}%{_libdir}/*.la
 
+install -m0644 -D libservicelog.sysusers.conf %{buildroot}%{_sysusersdir}/libservicelog.conf
+
 %check
 make check || true
 
-%pre
-getent group service >/dev/null || /usr/sbin/groupadd -r service
 
 %post -p /sbin/ldconfig
 
 %postun -p /sbin/ldconfig
 
 %files
 %{!?_licensedir:%global license %%doc}
 %license COPYING
 %doc AUTHORS
 %{_libdir}/libservicelog-*.so.*
 %dir %attr(755, root, service) /var/lib/servicelog
 %config(noreplace) %verify(not md5 size mtime) %attr(644,root,service) /var/lib/servicelog/servicelog.db
+%{_sysusersdir}/libservicelog.conf
 
 %files devel
 %{_includedir}/servicelog-1
 %{_libdir}/*.so
 %{_libdir}/pkgconfig/servicelog-1.pc
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.1.19-14
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Mon Jan 20 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.19-13
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.19-12
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.19-11
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git libvirt-dbus/libvirt-dbus.spec libvirt-dbus/libvirt-dbus.spec.tmp
index 9321e210c2..163f5a7d58 100644
--- libvirt-dbus/libvirt-dbus.spec
+++ libvirt-dbus/libvirt-dbus.spec.tmp
@@ -3,17 +3,17 @@
 %global meson_version 0.49.0
 %global glib2_version 2.44.0
 %global libvirt_version 3.1.0
 %global libvirt_glib_version 0.0.7
 %global system_user libvirtdbus
 
 Name: libvirt-dbus
 Version: 1.4.1
-Release: 6%{?dist}
+Release: 7%{?dist}
 Summary: libvirt D-Bus API binding
 License: LGPL-2.1-or-later
 URL: https://libvirt.org/
 Source0: https://libvirt.org/sources/dbus/%{name}-%{version}.tar.xz
 
 BuildRequires: gcc
 BuildRequires: meson >= %{meson_version}
 BuildRequires: glib2-devel >= %{glib2_version}
@@ -24,38 +24,38 @@ BuildRequires: systemd-rpm-macros
 BuildRequires: systemd
 
 Requires: dbus
 Requires: glib2 >= %{glib2_version}
 Requires: libvirt-libs >= %{libvirt_version}
 Requires: libvirt-glib >= %{libvirt_glib_version}
 Requires: polkit
 
-Requires(pre): shadow-utils
 
 %description
 This package provides D-Bus API for libvirt
 
 %prep
 %autosetup
 
+# Create a sysusers.d config file
+cat >libvirt-dbus.sysusers.conf <<EOF
+u libvirtdbus - 'Libvirt D-Bus bridge' / -
+EOF
+
 %build
 %meson \
     -Dinit_script=systemd
 %meson_build
 
 %install
 %meson_install
 
-%pre
-getent group %{system_user} >/dev/null || groupadd -r %{system_user}
-getent passwd %{system_user} >/dev/null || \
-    useradd -r -g %{system_user} -d / -s /sbin/nologin \
-    -c "Libvirt D-Bus bridge" %{system_user}
-exit 0
+install -m0644 -D libvirt-dbus.sysusers.conf %{buildroot}%{_sysusersdir}/libvirt-dbus.conf
+
 
 %post
 %systemd_post %{name}.service
 %systemd_user_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 %systemd_user_preun %{name}.service
@@ -71,18 +71,22 @@ exit 0
 %{_unitdir}/libvirt-dbus.service
 %{_userunitdir}/libvirt-dbus.service
 %{_datadir}/dbus-1/services/org.libvirt.service
 %{_datadir}/dbus-1/system-services/org.libvirt.service
 %{_datadir}/dbus-1/system.d/org.libvirt.conf
 %{_datadir}/dbus-1/interfaces/org.libvirt.*.xml
 %{_datadir}/polkit-1/rules.d/libvirt-dbus.rules
 %{_mandir}/man8/libvirt-dbus.8*
+%{_sysusersdir}/libvirt-dbus.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.4.1-7
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.1-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.1-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.1-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git lighttpd/lighttpd.spec lighttpd/lighttpd.spec.tmp
index 5ff45c54ae..9fd56bac91 100644
--- lighttpd/lighttpd.spec
+++ lighttpd/lighttpd.spec.tmp
@@ -45,17 +45,17 @@
 %bcond_without tmpfiles
 %else
 %bcond_with    tmpfiles
 %endif
 
 Summary: Lightning fast webserver with light system requirements
 Name: lighttpd
 Version: 1.4.77
-Release: 2%{?dist}
+Release: 3%{?dist}
 License: BSD-3-Clause
 URL: http://www.lighttpd.net/
 Source0: http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-%{version}.tar.xz
 Source1: lighttpd.logrotate
 Source2: php.d-lighttpd.ini
 Source3: lighttpd.service
 Source10: index.html
 Source11: http://www.lighttpd.net/favicon.ico
@@ -309,28 +309,32 @@ Requires: %{name} = %{version}-%{release}
 
 %description mod_webdav
 WebDAV module for lighttpd.
 
 
 %package filesystem
 Summary: The basic directory layout for lighttpd
 BuildArch: noarch
-Requires(pre): /usr/sbin/useradd
 
 %description filesystem
 The lighttpd-filesystem package contains the basic directory layout
 for the lighttpd server including the correct permissions
 for the directories.
 
 
 %prep
 %setup -q
 %patch -P 0 -p0 -b .defaultconf
 
+# Create a sysusers.d config file
+cat >lighttpd.sysusers.conf <<EOF
+u lighttpd - 'lighttpd web server' %{webroot} -
+EOF
+
 %build
 autoreconf -if
 %configure \
     --libdir='%{_libdir}/lighttpd' \
     %{confswitch pcre} \
     %{confswitch pcre2} \
     %{confswitch nettle} \
     %{confswitch attr} \
@@ -405,19 +409,18 @@ mkdir -p %{buildroot}%{_var}/run/lighttpd
 # Setup tmpfiles.d config for the above
 mkdir -p %{buildroot}/usr/lib/tmpfiles.d
 echo 'D /run/lighttpd 0750 lighttpd lighttpd -' > \
     %{buildroot}/usr/lib/tmpfiles.d/lighttpd.conf
 %endif
 
 mkdir -p %{buildroot}%{_var}/lib/lighttpd/
 
-%pre filesystem
-/usr/sbin/useradd -s /sbin/nologin -M -r -d %{webroot} \
-    -c 'lighttpd web server' lighttpd &>/dev/null || :
+install -m0644 -D lighttpd.sysusers.conf %{buildroot}%{_sysusersdir}/lighttpd.conf
+
 
 %post
 %systemd_post lighttpd.service
 
 %preun
 %systemd_preun lighttpd.service
 
 %postun
@@ -583,18 +586,22 @@ mkdir -p %{buildroot}%{_var}/lib/lighttpd/
 %if %{with tmpfiles}
 %ghost %attr(0750, lighttpd, lighttpd) %{_var}/run/lighttpd/
 %else
 %attr(0750, lighttpd, lighttpd) %{_var}/run/lighttpd/
 %endif
 %attr(0750, lighttpd, lighttpd) %{_var}/lib/lighttpd/
 %attr(0750, lighttpd, lighttpd) %{_var}/log/lighttpd/
 %attr(0700, lighttpd, lighttpd) %dir %{webroot}/
+%{_sysusersdir}/lighttpd.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.4.77-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.77-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jan 10 2025 Gwyn Ciesla <gwync@protonmail.com> - 1.4.77-1
 - 1.4.77
 
 * Tue Sep 03 2024 Morten Stevens <mstevens@fedoraproject.org> - 1.4.76-4
 - Rebuilt for mbedTLS 3.6.1
diff --git liquidwar/liquidwar.spec liquidwar/liquidwar.spec.tmp
index 1a128ad6b2..d122d35980 100644
--- liquidwar/liquidwar.spec
+++ liquidwar/liquidwar.spec.tmp
@@ -1,12 +1,12 @@
 %define _hardened_build 1
 Name:           liquidwar
 Version:        5.6.5
-Release:        18%{?dist}
+Release:        19%{?dist}
 Summary:        Multiplayer wargame with liquid armies
 License:        GPL-2.0-or-later
 URL:            http://www.ufoot.org/liquidwar/v5
 Source0:        http://download.savannah.nongnu.org/releases/%{name}/%{name}-%{version}.tar.gz
 Source2:        liquidwar.sysconfig
 Source3:        liquidwar.logrotate
 Source4:        liquidwar-server.service
 Patch0:         liquidwar-5.6.5-python3.patch
@@ -31,17 +31,16 @@ Requires:       %{name} = %{version}-%{release}
 %description doc
 This package contains the documentation of LiquidWar in html, pdf, ps and txt
 format.
 
 
 %package server
 Summary:        Network game server for the LiquidWar game
 Requires:       %{name} = %{version}-%{release}
-Requires(pre):  /usr/sbin/useradd
 
 %description server
 This package contains the server for hosting network LiquidWar games.
 
 
 %prep
 %setup -q
 
@@ -50,16 +49,21 @@ This package contains the server for hosting network LiquidWar games.
 # don't strip the binaries please
 sed -i 's/install\(\s\+-c\)\?\s\+-s/install/g' Makefile.in
 # fix README.* encoding
 for i in de dk fr; do
   iconv -f ISO-8859-1 -t UTF8 README.$i > $i
   mv $i README.$i
 done
 
+# Create a sysusers.d config file
+cat >liquidwar.sysusers.conf <<EOF
+u liquidwar - 'LiquidWar Server' %{_datadir}/%{name} -
+EOF
+
 
 %build
 %configure --disable-target-opt \
   --disable-doc-pdf \
   --disable-doc-ps \
   --disable-doc-info \
 %ifnarch %{ix86}
   --disable-asm \
@@ -102,22 +106,21 @@ install -p -m 644 misc/%{name}.xpm \
 
 install -p -D -m 755 %{SOURCE4} \
         $RPM_BUILD_ROOT/%{_unitdir}/%{name}-server.service
 install -p -D -m 644 %{SOURCE2} \
         $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/%{name}-server
 install -p -D -m 644 %{SOURCE3} \
         $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/%{name}-server
 
+install -m0644 -D liquidwar.sysusers.conf %{buildroot}%{_sysusersdir}/liquidwar.conf
+
 %pre server
 user_uid=`id -u %{name} 2>/dev/null`
 if [ x"$user_uid" = x ] ; then
-    /usr/sbin/useradd -r -s /sbin/nologin -d %{_datadir}/%{name} -M \
-            -c 'LiquidWar Server' \
-            %{name} >/dev/null || :
 fi
 
 %post server
 %systemd_post liquidwar-server.service
 
 %preun server
 %systemd_post liquidwar-server.service
 
@@ -140,19 +143,23 @@ fi
 %doc liquidwardocs/*
 
 %files server
 %{_bindir}/%{name}-server
 %{_mandir}/man6/%{name}-server.6.gz
 %{_unitdir}/liquidwar-server.service
 %config(noreplace) %{_sysconfdir}/sysconfig/%{name}-server
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}-server
+%{_sysusersdir}/liquidwar.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 5.6.5-19
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5.6.5-18
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.6.5-17
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.6.5-16
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git lirc/lirc.spec lirc/lirc.spec.tmp
index 93e4452574..a2226f875e 100644
--- lirc/lirc.spec
+++ lirc/lirc.spec.tmp
@@ -4,17 +4,17 @@
 %global _hardened_build 1
 %global __python %{__python3}
 
 %global released 1
 #define tag     devel
 
 Name:           lirc
 Version:        0.10.0
-Release:        46%{?tag:.}%{?tag}%{?dist}
+Release:        47%{?tag:.}%{?tag}%{?dist}
 Summary:        The Linux Infrared Remote Control package
 
 %global repo    http://downloads.sourceforge.net/lirc/LIRC/%{version}
 %global tarball %{name}-%{version}%{?tag:-}%{?tag}.tar.gz
 
                 # lib/ciniparser* and lib/dictionary* are BSD, others GPLv2
 # Automatically converted from old format: GPLv2 and BSD - review is highly recommended.
 License:        GPL-2.0-only AND LicenseRef-Callaway-BSD
@@ -59,17 +59,16 @@ BuildRequires:  python%{python3_pkgversion}-setuptools
 BuildRequires:  socat
 BuildRequires:  systemd-devel
 BuildRequires: make
 
 Requires:       %{name}-libs = %{version}-%{release}
 Requires:       lockdev
 Suggests:       xorg-x11-misc-fonts
 
-Requires(pre):     shadow-utils
 Requires(post):    systemd
                    #for triggerun
 Requires(post):    systemd-sysv
 Requires(post):    policycoreutils
 Requires(postun):  systemd
 Requires(postun):  policycoreutils
 Requires(preun):   systemd
 
@@ -228,16 +227,24 @@ sed -i -e 's/#effective-user/effective-user /' lirc_options.conf
 sed -i -e '/^effective-user/s/=$/= lirc/' lirc_options.conf
 sed -i '/User=/s/; *//' systemd/lircd.service
 sed -i '/Group=/s/; *//' systemd/lircd.service
 sed -i 's/; *user=/User=/' systemd/irexec.service
 sed -i 's/; *group=/Group=/' systemd/irexec.service
 
 sed -i -e "s|/usr/local/etc/|%{_sysconfdir}/|" contrib/irman2lirc
 
+# Create a sysusers.d config file
+cat >lirc.sysusers.conf <<EOF
+u lirc - 'LIRC daemon user, runs lircd.' /var/log/lirc -
+m lirc dialout
+m lirc lock
+m lirc input
+EOF
+
 
 %build
 autoreconf -fi
 export PYTHON=/usr/bin/python3
 
 %configure \
         --docdir="%{_pkgdocdir}" \
         --enable-uinput \
@@ -271,26 +278,19 @@ install -Dpm 644 contrib/60-lirc.rules \
 install -Dpm 644 %{SOURCE2} \
     $RPM_BUILD_ROOT%{_udevrulesdir}/99-remote-control-lirc.rules
 cp -a %{SOURCE1} README.fedora
 
 mkdir -p $RPM_BUILD_ROOT/%{_tmpfilesdir}
 echo "d %{_rundir}/lirc  0755  lirc  lirc  -" \
     > $RPM_BUILD_ROOT%{_tmpfilesdir}/lirc.conf
 
+install -m0644 -D lirc.sysusers.conf %{buildroot}%{_sysusersdir}/lirc.conf
+
 
-%pre core
-getent group lirc >/dev/null || groupadd -r lirc
-getent passwd lirc >/dev/null || \
-    useradd -r -g lirc -d /var/log/lirc -s /sbin/nologin \
-        -c "LIRC daemon user, runs lircd." lirc
-usermod -a -G dialout lirc &> /dev/null || :
-usermod -a -G lock lirc &> /dev/null || :
-usermod -a -G input lirc &> /dev/null || :
-exit 0
 
 %post core
 %systemd_post lircd.service lircmd.service
 systemd-tmpfiles --create %{_tmpfilesdir}/lirc.conf
 
 %preun core
 %systemd_preun lircd.service lircmd.service
 
@@ -362,16 +362,17 @@ systemd-tmpfiles --create %{_tmpfilesdir}/lirc.conf
 %{_mandir}/man8/lirc*d.8*
 %{_mandir}/man8/lircd-setup.8*
 %{_mandir}/man8/lircd-uinput.8*
 %exclude %{_mandir}/man1/lirc-config-tool*
 %exclude %{_mandir}/man1/irdb-get*
 %exclude %{_mandir}/man1/lirc-setup*
 %exclude %{_mandir}/man1/irxevent*
 %exclude %{_mandir}/man1/xmode2*
+%{_sysusersdir}/lirc.conf
 
 %files libs
 %license COPYING COPYING.ciniparser COPYING.curl
 %{_libdir}/libirrecord.so.*
 %{_libdir}/liblirc_client.so.*
 %{_libdir}/liblirc_driver.so.*
 %{_libdir}/liblirc.so.*
 
@@ -391,16 +392,19 @@ systemd-tmpfiles --create %{_tmpfilesdir}/lirc.conf
 %license COPYING COPYING.ciniparser COPYING.curl
 %doc ChangeLog
 %{_pkgdocdir}
 
 %files disable-kernel-rc
 %{_udevrulesdir}/99-remote-control-lirc.rules
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.10.0-47
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.10.0-46
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Sep 02 2024 Miroslav Suchý <msuchy@redhat.com> - 0.10.0-45
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.10.0-44
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git lizardfs/lizardfs.spec lizardfs/lizardfs.spec.tmp
index a3e3278c8d..1cad6beb20 100644
--- lizardfs/lizardfs.spec
+++ lizardfs/lizardfs.spec.tmp
@@ -1,14 +1,14 @@
 %define __cmake_in_source_build 1
 
 Name:		lizardfs
 Summary:	Distributed, fault tolerant file system
 Version:	3.12.0
-Release:	29%{?dist}
+Release:	30%{?dist}
 # LizardFS is under GPLv3 while crcutil is under ASL 2.0 and there's one header,
 # src/common/coroutine.h, under the Boost license
 # Automatically converted from old format: GPLv3 and ASL 2.0 and Boost - review is highly recommended.
 License:	GPL-3.0-only AND Apache-2.0 AND BSL-1.0
 URL:		http://www.lizardfs.org/
 Source:		https://github.com/lizardfs/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
 Source1:	pam-lizardfs
 Source2:	95-lizardfs.conf
@@ -122,22 +122,16 @@ Summary:		LizardFS administration utility
 
 %description adm
 LizardFS command line administration utility.
 
 
 # Scriptlets - master
 ############################################################
 
-%pre master
-getent group %{liz_group} >/dev/null || groupadd -r %{liz_group}
-getent passwd %{liz_user} >/dev/null || \
-	useradd -r -g %{liz_group} -d %{liz_datadir} -s /sbin/nologin \
-	-c "LizardFS System Account" %{liz_user}
-exit 0
 
 %post master
 %systemd_post lizardfs-master.service
 
 %preun master
 %systemd_preun lizardfs-master.service
 
 %postun master
@@ -209,16 +203,22 @@ for i in src/tools/mfstools.sh src/master/mfsrestoremaster.in \
 	 utils/coverage.sh utils/cpp-interpreter.sh utils/wireshark/plugins/lizardfs/generate.sh; do
 	sed -i 's@#!/usr/bin/env bash@#!/bin/bash@' $i
 done
 # Remove /usr/bin/env from python3 scripts
 for i in src/cgi/cgiserv.py.in src/cgi/chart.cgi.in src/cgi/lizardfs-cgiserver.py.in src/cgi/mfs.cgi.in utils/wireshark/plugins/lizardfs/make_dissector.py; do
 	sed -i 's@#!/usr/bin/env python3@#!/usr/bin/python3@' $i
 done
 
+# Create a sysusers.d config file
+cat >lizardfs.sysusers.conf <<EOF
+g mfs -
+u mfs - 'LizardFS System Account' %{liz_datadir} -
+EOF
+
 
 %build
 # Build code taken almost completely ./configure, but with some changes to use
 # Fedora's build flags
 rm -rf build-pack
 mkdir -p build-pack
 cd build-pack
 
@@ -255,16 +255,18 @@ install -d -m755 %{buildroot}%{_unitdir}
 for f in rpm/service-files/*.service ; do
 	install -m644 "$f" %{buildroot}%{_unitdir}/$(basename "$f")
 done
 mkdir -p %{buildroot}%{_sysconfdir}/pam.d
 install -m644 %{SOURCE1} %{buildroot}%{_sysconfdir}/pam.d/lizardfs
 mkdir -p %{buildroot}%{_sysconfdir}/security/limits.d
 install -m644 %{SOURCE2} %{buildroot}%{_sysconfdir}/security/limits.d/95-lizardfs.conf
 
+install -m0644 -D lizardfs.sysusers.conf %{buildroot}%{_sysusersdir}/lizardfs.conf
+
 
 %files master
 %doc NEWS README.md UPGRADE
 %license COPYING
 %{_sbindir}/mfsmaster
 %{_sbindir}/mfsrestoremaster
 %{_sbindir}/mfsmetadump
 %{_sbindir}/mfsmetarestore
@@ -287,16 +289,17 @@ install -m644 %{SOURCE2} %{buildroot}%{_sysconfdir}/security/limits.d/95-lizardf
 %dir %{liz_confdir}
 %config %{liz_confdir}/mfsexports.cfg.dist
 %config %{liz_confdir}/mfstopology.cfg.dist
 %config %{liz_confdir}/mfsgoals.cfg.dist
 %config %{liz_confdir}/mfsmaster.cfg.dist
 %config %{liz_confdir}/globaliolimits.cfg.dist
 %config(noreplace) %{_sysconfdir}/pam.d/lizardfs
 %config(noreplace) %{_sysconfdir}/security/limits.d/95-lizardfs.conf
+%{_sysusersdir}/lizardfs.conf
 
 
 %files metalogger
 %doc NEWS README.md UPGRADE
 %license COPYING
 %{_sbindir}/mfsmetalogger
 %{_mandir}/man5/mfsmetalogger.cfg.5*
 %{_mandir}/man8/mfsmetalogger.8*
@@ -408,16 +411,19 @@ install -m644 %{SOURCE2} %{buildroot}%{_sysconfdir}/security/limits.d/95-lizardf
 %license COPYING
 %{_bindir}/lizardfs-admin
 %{_mandir}/man8/lizardfs-admin.8*
 %{_bindir}/lizardfs-probe
 %{_mandir}/man8/lizardfs-probe.8*
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.12.0-30
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Artur Frenszek-Iwicki <fedora@svgames.pl> - 3.12.0-29
 - Fix FTBFS
 
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.0-28
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Aug 07 2024 Miroslav Suchý <msuchy@redhat.com> - 3.12.0-27
 - convert license to SPDX
RPMAutoSpec usage detected, not changing the spec file.
diff --git lockdev/lockdev.spec lockdev/lockdev.spec.tmp
index d0ca9e28be..ccf2818a71 100644
--- lockdev/lockdev.spec
+++ lockdev/lockdev.spec.tmp
@@ -16,17 +16,16 @@ URL: https://alioth.debian.org/projects/lockdev/
 
 # This is a nightly snapshot downloaded via
 # https://alioth.debian.org/snapshots.php?group_id=100443
 Source0: lockdev-%{version}.%{checkout}.tar.gz
 
 Patch1: lockdev-euidaccess.patch
 Patch2: 0001-major-and-minor-functions-moved-to-sysmacros.h.patch
 
-Requires(pre): shadow-utils
 Requires(post): glibc
 Requires(postun): glibc
 Requires: systemd
 
 BuildRequires: autoconf
 BuildRequires: automake
 BuildRequires: libtool
 BuildRequires: perl-interpreter
@@ -50,16 +49,21 @@ package contains the development headers.
 
 %prep
 %setup -q -n lockdev-scm-%{co_date}
 
 # Replace access() calls with euidaccess() (600636#c33)
 %patch -P1 -p1 -b .access
 %patch -P2 -p1
 
+# Create a sysusers.d config file
+cat >lockdev.sysusers.conf <<EOF
+g lock 54
+EOF
+
 %build
 # Generate version information from git release tag
 ./scripts/git-version > VERSION
 
 # To satisfy automake
 touch ChangeLog
 
 # Bootstrap autotools
@@ -82,33 +86,34 @@ mkdir -p %{buildroot}%{_lockdir}
 # install /usr/lib/tmpfiles.d/lockdev.conf (#1324184)
 mkdir -p ${RPM_BUILD_ROOT}%{_tmpfilesdir}
 cat > ${RPM_BUILD_ROOT}%{_tmpfilesdir}/lockdev.conf <<EOF
 # See tmpfiles.d(5) for details
 
 d %{_lockdir} 0775 root lock -
 EOF
 
-%pre
-getent group lock >/dev/null 2>&1 || groupadd -g 54 -r -f lock >/dev/null 2>&1 || :
+install -m0644 -D lockdev.sysusers.conf %{buildroot}%{_sysusersdir}/lockdev.conf
+
 
 %post
 if [ $1 -eq 1 ] ; then
 # for the time until first reboot
 %tmpfiles_create lockdev.conf
 fi
 
 %files
 %{license} COPYING
 %doc AUTHORS
 %ghost %dir %attr(0775,root,lock) %{_lockdir}
 %attr(2711,root,lock)  %{_sbindir}/lockdev
 %{_tmpfilesdir}/lockdev.conf
 %{_libdir}/*.so.*
 %{_mandir}/man8/*
+%{_sysusersdir}/lockdev.conf
 
 %files devel
 %{_libdir}/*.so
 %{_libdir}/pkgconfig/lockdev.pc
 %{_mandir}/man3/*
 %{_includedir}/*
 
 %changelog
diff --git lpf/lpf.spec lpf/lpf.spec.tmp
index f618b25a9d..54a887ed0a 100644
--- lpf/lpf.spec
+++ lpf/lpf.spec.tmp
@@ -1,16 +1,16 @@
 %global commit f9032ddd26ffb33fd140e0b9d5ee72c445608077
 %global shortcommit %(c=%{commit}; echo ${c:0:7})
 %global gitdate 20210927
 #%%global rel .%%{gitdate}.%%{shortcommit}
 
 Name:           lpf
 Version:        0.3
-Release:        12%{?rel}%{?dist}
+Release:        13%{?rel}%{?dist}
 Summary:        Local package factory - build non-redistributable rpms
 
 # Icon from iconarchive.com
 License:        MIT
 URL:            https://github.com/sergiomb2/lpf
 #Source0:        %%{url}/archive/%%{commit}/lpf-%%{version}%%{?rel}.tar.gz
 Source0:        %{url}/archive/v%{version}/lpf-%{version}%{?rel}.tar.gz
 Patch1:         https://github.com/sergiomb2/lpf/commit/4f414697e6977da5fdeff7632ec3ea86ffdfbdfb.patch
@@ -24,21 +24,19 @@ BuildRequires:  make
 BuildRequires:  desktop-file-utils
 BuildRequires:  python3-devel
 Requires:       hicolor-icon-theme
 Requires:       inotify-tools
 Requires:       polkit
 Requires:       procps-ng
 Requires:       rpmdevtools
 Requires:       rpm-build
-Requires:       shadow-utils
 Requires:       sudo
 Requires:       dnf
 Requires:       zenity
-Requires(pre):  shadow-utils
 #for lpf-gui
 Requires:      python3-gobject-base
 
 
 %description
 lpf (Local Package Factory) is designed to handle two separate
 problems:
  - Packages built from sources which does not allow redistribution.
@@ -48,34 +46,35 @@ It works by downloading sources, possibly requiring a user to accept
 license terms and then building and installing rpm package(s) locally.
 Besides being interactive the operation is similar to akmod and dkms.
 
 
 %prep
 %autosetup -p1
 #-n lpf-%%{commit}
 
+# Create a sysusers.d config file
+cat >lpf.sysusers.conf <<EOF
+u pkg-build - 'lpf local package build user' /var/lib/lpf -
+EOF
+
 
 %build
 
 
 %install
 make DESTDIR=%{buildroot} install
 desktop-file-validate %{buildroot}%{_datadir}/applications/lpf.desktop
 
+install -m0644 -D lpf.sysusers.conf %{buildroot}%{_sysusersdir}/lpf.conf
+
 %check
 appstream-util validate-relax --nonet appdata/lpf-gui.appdata.xml
 
 
-%pre
-getent group pkg-build >/dev/null || groupadd -r pkg-build
-getent passwd pkg-build >/dev/null || \
-    useradd -r -g pkg-build -d /var/lib/lpf -s /sbin/nologin \
-        -c "lpf local package build user" pkg-build
-exit 0
 
 
 %files
 %doc README.md LICENSE
 %{_bindir}/lpf
 %{_bindir}/lpf-gui
 %{_rpmconfigdir}/macros.d/macros.lpf
 %{_datadir}/lpf
@@ -83,19 +82,23 @@ exit 0
 %{_datadir}/applications/lpf-gui.desktop
 %{_datadir}/applications/lpf-notify.desktop
 %{_datadir}/icons/hicolor/*/apps/lpf*.png
 %{_datadir}/appdata/lpf-gui.appdata.xml
 %{_datadir}/man/man1/lpf*
 %{_libexecdir}/lpf-kill-pgroup
 %attr(440, root, root) %config(noreplace) %{_sysconfdir}/sudoers.d/pkg-build
 %attr(2775, pkg-build, pkg-build)/var/lib/lpf
+%{_sysusersdir}/lpf.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.3-13
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-12
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sun Nov 03 2024 Sérgio Basto <sergio@serjux.com> - 0.3-11
 - Only requires dnf to work with dnf5 Resolves: rhbz#2209396
 
 * Thu Oct 24 2024 Sérgio Basto <sergio@serjux.com> - 0.3-10
 - (#2319776) fixes dnf install for dnf5
diff --git lttng-tools/lttng-tools.spec lttng-tools/lttng-tools.spec.tmp
index 496526f56a..7f7f99246c 100644
--- lttng-tools/lttng-tools.spec
+++ lttng-tools/lttng-tools.spec.tmp
@@ -4,17 +4,17 @@
     %define arg_python --enable-python-bindings
 %else
     %define arg_python --disable-python-bindings
 %endif
 
 
 Name:           lttng-tools
 Version:        2.13.14
-Release:        2%{?dist}
+Release:        3%{?dist}
 License:        GPL-2.0-only AND LGPL-2.1-only
 URL:            http://lttng.org
 Summary:        LTTng control and utility programs
 Source0:        http://lttng.org/files/lttng-tools/%{name}-%{version}.tar.bz2
 Source1:        http://lttng.org/files/lttng-tools/%{name}-%{version}.tar.bz2.asc
 # gpg2 --export --export-options export-minimal 7F49314A26E0DE78427680E05F1B2A0789F12B11 > gpgkey-7F49314A26E0DE78427680E05F1B2A0789F12B11.gpg
 Source2:        gpgkey-7F49314A26E0DE78427680E05F1B2A0789F12B11.gpg
 Source3:        lttng-sessiond.service
@@ -33,17 +33,16 @@ BuildRequires:  systemtap-sdt-devel
 BuildRequires:  userspace-rcu-devel >= 0.11.0
 
 # For check
 BuildRequires:  babeltrace
 BuildRequires:  hostname
 BuildRequires:  kmod
 BuildRequires:  procps-ng
 
-Requires(pre):  shadow-utils
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 
 #GCC crash when building this package on arm with hardening activated (See bug 987192).
 %ifnarch %{arm}
 %global _hardened_build 1
 %endif
@@ -69,16 +68,21 @@ BuildRequires:  python3-devel
 
 %description -n python3-lttng
 This package provides Python bindings for LTTng
 %endif
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >lttng-tools.sysusers.conf <<EOF
+g tracing -
+EOF
+
 %build
 # The build flags include -Wl,--as-needed by default, and this causes
 # some tests to fail (eg. regression/ust/libc-wrapper)
 %undefine _ld_as_needed
 # Reinitialize libtool with the fedora version to remove Rpath
 autoreconf -vif
 touch doc/man/*.1 doc/man/*.3 doc/man/*.8
 
@@ -96,19 +100,18 @@ make check
 %install
 make DESTDIR=%{buildroot} install
 rm -vf %{buildroot}%{_libdir}/*.la
 rm -vf %{buildroot}%{python3_sitearch}/*.la
 install -D -m644 %{_sourcedir}/lttng-sessiond.service %{buildroot}%{_unitdir}/lttng-sessiond.service
 # Install upstream bash auto completion for lttng
 install -D -m644 extras/lttng-bash_completion %{buildroot}%{_sysconfdir}/bash_completion.d/lttng
 
-%pre
-getent group tracing >/dev/null || groupadd -r tracing
-exit 0
+install -m0644 -D lttng-tools.sysusers.conf %{buildroot}%{_sysusersdir}/lttng-tools.conf
+
 
 %post
 /sbin/ldconfig
 %systemd_post lttng-sessiond.service
 
 %preun
 %systemd_preun lttng-sessiond.service
 
@@ -166,16 +169,17 @@ exit 0
 %{_defaultdocdir}/%{name}/live-reading-howto.txt
 %{_defaultdocdir}/%{name}/python-howto.txt
 %{_defaultdocdir}/%{name}/quickstart.txt
 %{_defaultdocdir}/%{name}/snapshot-howto.txt
 %{_defaultdocdir}/%{name}/streaming-howto.txt
 %{_unitdir}/lttng-sessiond.service
 %{_sysconfdir}/bash_completion.d/
 %{_datadir}/xml/lttng/session.xsd
+%{_sysusersdir}/lttng-tools.conf
 
 %files -n %{name}-devel
 %{_mandir}/man3/lttng-health-check.3.gz
 %{_defaultdocdir}/%{name}/live-reading-protocol.txt
 %{_defaultdocdir}/%{name}/valgrind-howto.txt
 %{_includedir}/*
 %{_libdir}/*.so
 %{_libdir}/pkgconfig/lttng-ctl.pc
@@ -184,16 +188,19 @@ exit 0
 %files -n python%{python3_pkgversion}-lttng
 %{_defaultdocdir}/%{name}/python-howto.txt
 %{python3_sitelib}/lttng.py
 %{python3_sitelib}/__pycache__/*.pyc
 %{python3_sitearch}/_lttng.so*
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.13.14-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.13.14-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Sep 04 2024 Kienan Stewart <kstewart@efficios.com> - 2.13.14-1
 - New upstream release
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.13.13-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git macromilter/macromilter.spec macromilter/macromilter.spec.tmp
index 9d9593937e..2c53a6c5c8 100644
--- macromilter/macromilter.spec
+++ macromilter/macromilter.spec.tmp
@@ -1,14 +1,14 @@
 Summary:           Milter to check mails for suspicious Microsoft VBA macro code
 Name:              macromilter
 URL:               https://github.com/sbidy/MacroMilter
 Version:           3.7.0
 License:           MIT
-%global            baserelease      16
+%global            baserelease      17
 
 # Build from release or from git snapshot
 %bcond_without     snapshot
 
 # Build python2 up till fc31 and rhel7, use python3 on fc32+ and rhel8+
 %if ( 0%{?fedora} && 0%{?fedora} >= 32 ) || ( 0%{?rhel} && 0%{?rhel} >= 8 )
 %bcond_without     python3
 %else
@@ -38,17 +38,16 @@ Source2:           macromilter.logrotate
 Source3:           macromilter.tmpfilesd
 Source4:           README.fedora
 #Patch0:            macromilter-3.4.3-var-lib.patch
 
 BuildArch:         noarch
 
 BuildRequires:     systemd
 
-Requires(pre):     shadow-utils
 Requires(post):    systemd
 Requires(preun):   systemd
 Requires(postun):  systemd
 
 %if 0%{?with_python3}
 BuildRequires:     python%{python3_pkgversion}-devel
 Requires:          python%{python3_pkgversion}-oletools
 Requires:          python%{python3_pkgversion}-pymilter
@@ -79,16 +78,21 @@ be rejected.
 %prep
 %if ! 0%{?with_snapshot}
 %autosetup -n MacroMilter-%{version}
 %else
 %autosetup -n MacroMilter-%{commit}
 %endif
 cp -pf %{SOURCE4} .
 
+# Create a sysusers.d config file
+cat >macromilter.sysusers.conf <<EOF
+u macromilter - 'MacroMilter service' %{_localstatedir}/lib/%{name} -
+EOF
+
 
 %build
 # Empty build section, most likely nothing required.
 
 
 %install
 install -D -p -m 755 %{name}/macromilter.py %{buildroot}%{_bindir}/%{name}
 %if 0%{?with_python3}
@@ -98,21 +102,19 @@ sed -e '1i #!%{_bindir}/python2' -i %{buildroot}%{_bindir}/%{name}
 %endif
 touch -c -r %{name}/macromilter.py %{buildroot}%{_bindir}/%{name}
 install -D -p -m 644 %{name}/config.yaml %{buildroot}%{_sysconfdir}/%{name}/config.yaml
 install -D -p -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
 install -D -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
 install -D -p -m 644 %{SOURCE3} %{buildroot}%{_tmpfilesdir}/%{name}.conf
 mkdir -p %{buildroot}{/run,%{_localstatedir}/{lib,log}}/%{name}/
 
+install -m0644 -D macromilter.sysusers.conf %{buildroot}%{_sysusersdir}/macromilter.conf
+
 
-%pre
-getent group %{name} > /dev/null || %{_sbindir}/groupadd -r %{name}
-getent passwd %{name} > /dev/null || %{_sbindir}/useradd -r -g %{name} -d %{_localstatedir}/lib/%{name} -s /sbin/nologin -c "MacroMilter service" %{name}
-exit 0
 
 
 %post
 %systemd_post %{name}.service
 
 
 %preun
 %systemd_preun %{name}.service
@@ -130,18 +132,22 @@ exit 0
 %config(noreplace) %{_sysconfdir}/%{name}/config.yaml
 %dir %{_sysconfdir}/logrotate.d/
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
 %{_unitdir}/%{name}.service
 %{_tmpfilesdir}/%{name}.conf
 %dir %attr(0755,%{name},%{name}) /run/%{name}/
 %dir %attr(0750,%{name},%{name}) %{_localstatedir}/lib/%{name}/
 %dir %attr(0750,%{name},%{name}) %{_localstatedir}/log/%{name}/
+%{_sysusersdir}/macromilter.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.7.0-0.17.20191111git2761838
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.7.0-0.16.20191111git2761838
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.7.0-0.15.20191111git2761838
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.7.0-0.14.20191111git2761838
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git maradns/maradns.spec maradns/maradns.spec.tmp
index fdd98efc50..0c4d0f2c78 100644
--- maradns/maradns.spec
+++ maradns/maradns.spec.tmp
@@ -1,40 +1,44 @@
 Name:		maradns
 Version:	3.5.0036
-Release:	6%{?dist}
+Release:	7%{?dist}
 Summary:	Authoritative and recursive DNS server made with security in mind
 
 Source0:	http://www.maradns.org/download/3.5/%{version}/%{name}-%{version}.tar.xz
 # http://maradns.samiam.org/download/patches/3rd_party/Thomasz-Torcz-systemd-2013-10-14.patch
 Patch0:		%{name}-0001-add-systemd-unit-files.patch
 # parts of MaraDNS – the files in coLunacyDNS/lunacy – are under MIT (Lua) license,
 # but we don't package them
 License:	BSD-2-Clause
 URL:		http://www.maradns.org/
 
 BuildRequires: make
 BuildRequires:	gcc
 %{?systemd_requires}
 BuildRequires:	systemd
-Requires(pre):	shadow-utils
 
 %description
 MaraDNS is a package that implements the Domain Name Service (DNS), an
 essential internet service. MaraDNS has the following advantages:
 	* Secure.
 	* Supported.
 	* Easy to use.
 	* Small.
 	* Open Source.
 
 %prep
 %setup -q
 %autopatch -p1
 
+# Create a sysusers.d config file
+cat >maradns.sysusers.conf <<EOF
+u maradns - 'MaraDns chroot user' /etc/maradns -
+EOF
+
 %build
 
 # We don't use %%configure here because this is a homebrew configure not generated by autoconf
 ./configure --ipv6 --libdir=%{_libdir}
 
 # recursive resolver is shipped in versioned directory
 # first compile Deadwood, otherwise we have no control over make flags
 pushd deadwood-%{version}/src
@@ -83,16 +87,18 @@ install -p -D -m 0644 -t %{buildroot}%{_mandir}/man8/ \
 # NOTE: upstream ships slightly different named units
 # migration to upstream units in Fedora will be done sometime in the future
 mkdir -p %{buildroot}%{_unitdir}
 install -p -D -m 0644 -t %{buildroot}%{_unitdir}/ \
 	build/maradns.service \
 	build/maradns-zoneserver.service \
 	build/maradns-deadwood.service
 
+install -m0644 -D maradns.sysusers.conf %{buildroot}%{_sysusersdir}/maradns.conf
+
 %files
 %doc doc/en/credits.txt doc/en/faq.txt doc/en/{examples,tutorial,html}
 %license COPYING
 %config(noreplace) %{_sysconfdir}/mararc
 %config(noreplace) %{_sysconfdir}/dwood3rc
 %attr(-,maradns,maradns) %{_sysconfdir}/maradns/
 %attr(-,maradns,maradns) /var/cache/deadwood/
 %{_unitdir}/%{name}.service
@@ -111,25 +117,21 @@ install -p -D -m 0644 -t %{buildroot}%{_unitdir}/ \
 %{_mandir}/man1/fetchzone.1*
 %{_mandir}/man1/Deadwood.1*
 %{_mandir}/man5/csv1.5*
 %{_mandir}/man5/csv2.5*
 %{_mandir}/man5/csv2_txt.5*
 %{_mandir}/man5/mararc.5*
 %{_mandir}/man8/maradns.8*
 %{_mandir}/man8/zoneserver.8*
+%{_sysusersdir}/maradns.conf
 
 
 %pre
 if [ $1 -eq 1 ]; then
-	getent group maradns >/dev/null || groupadd -r maradns
-	getent passwd maradns >/dev/null || \
-	useradd -r -g maradns -d /etc/maradns -s /sbin/nologin \
-		-c "MaraDns chroot user" maradns
-	exit 0
 fi
 
 
 %post
 if [ $1 -eq 1 ]; then
 	# correct UID/GID of maradns user
 	sed --in-place -e "s/^maradns_uid.*/maradns_uid = $(id -u maradns)/" %{_sysconfdir}/mararc
 	sed --in-place -e "s/^maradns_gid.*/maradns_gid = $(id -g maradns)/" %{_sysconfdir}/mararc
@@ -143,16 +145,19 @@ fi
 %preun
 %systemd_preun maradns.service maradns-zoneserver.service maradns-deadwood.service
 
 %postun
 %systemd_postun_with_restart maradns.service maradns-zoneserver.service maradns-deadwood.service
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.5.0036-7
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Mon Jan 20 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.5.0036-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.5.0036-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.5.0036-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git mariadb10.11/mariadb10.11.spec mariadb10.11/mariadb10.11.spec.tmp
index 0992729b2f..4fa8e01513 100644
--- mariadb10.11/mariadb10.11.spec
+++ mariadb10.11/mariadb10.11.spec.tmp
@@ -152,17 +152,17 @@
 #   'community-mysql' names are deprecated and to be removed in future Fedora
 %bcond_without conflicts_community_mysql
 
 # Make long macros shorter
 %global sameevr   %{epoch}:%{version}-%{release}
 
 Name:             %{majorname}%{majorversion}
 Version:          %{package_version}
-Release:          3%{?with_debug:.debug}%{?dist}
+Release:          4%{?with_debug:.debug}%{?dist}
 Epoch:            3
 
 Summary:          A very fast and robust SQL database server
 URL:              http://mariadb.org
 License:          ( GPL-2.0-only OR Apache-2.0 ) AND ( GPL-2.0-or-later OR Apache-2.0 ) AND BSD-2-Clause AND BSD-3-Clause AND CC-BY-4.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-or-later AND ( GPL-3.0-or-later WITH Bison-exception-2.2 ) AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND OpenSSL AND MIT AND OFL-1.1 AND CC0-1.0 AND PHP-3.0 AND PHP-3.01 AND zlib AND dtoa AND FSFAP AND blessing AND Info-ZIP AND Boehm-GC
 
 Source0:          https://downloads.mariadb.org/interstitial/mariadb-%{version}/source/mariadb-%{version}.tar.gz
 %if %{with bundled_fmt}
@@ -530,17 +530,16 @@ Requires:         %{_sysconfdir}/my.cnf.d
 %if %{with require_mysql_selinux}
 # The *-selinux package should only be required on SELinux enabled systems. Therefore the following rich dependency syntax should be used:
 Requires:         (mysql-selinux >= 1.0.10 if selinux-policy-targeted)
 # This ensures that the *-selinux package and all its dependencies are not pulled into containers and other systems that do not use SELinux.
 # https://fedoraproject.org/wiki/SELinux/IndependentPolicy#Adding_dependency_to_the_spec_file_of_corresponding_package
 %endif
 
 Requires:         coreutils
-Requires(pre):    /usr/sbin/useradd
 # We require this to be present for %%{_tmpfilesdir}
 Requires:         systemd
 # Make sure it's there when scriptlets run, too
 %{?systemd_requires}
 # RHBZ#1496131; use 'iproute' instead of 'net-tools'
 Requires:         iproute
 
 %{?with_conflicts_mysql:Conflicts: mysql-server}
@@ -896,16 +895,21 @@ fi
 # Check if the PCRE version that upstream use, is the same as the one present in system
 pcre_system_version=`pkgconf /usr/%{_lib}/pkgconfig/libpcre2-*.pc --modversion 2>/dev/null | head -n 1`
 
 if [ "$pcre_system_version" != "$pcre_version" ] ; then
   echo -e "\n Warning: Error: Bundled PCRE version is not correct. \n\tSystem version number: $pcre_system_version \n\tUpstream version number: $pcre_version\n"
 fi
 %endif
 
+# Create a sysusers.d config file
+cat >mariadb10.11.sysusers.conf <<EOF
+u mysql 27 'MySQL Server' %{dbdatadir} -
+EOF
+
 
 
 %build
 # fail quickly and obviously if user tries to build as root
 %if %runselftest
     if [ x"$(id -u)" = "x0" ]; then
         echo "mysql's regression tests fail if run as root."
         echo "If you really need to build the RPM as root, use"
@@ -1297,16 +1301,18 @@ rm %{buildroot}%{_mandir}/man1/myrocks_hotbackup.1*
 rm %{buildroot}%{_mandir}/man1/maria{,db-}backup.1*
 rm %{buildroot}%{_mandir}/man1/mbstream.1*
 %endif
 
 %if %{without s3}
 rm %{buildroot}%{_mandir}/man1/aria_s3_copy.1*
 %endif
 
+install -m0644 -D mariadb10.11.sysusers.conf %{buildroot}%{_sysusersdir}/mariadb10.11.conf
+
 %check
 %if %{with test}
 %if %runselftest
 # The cmake build scripts don't provide any simple way to control the
 # options for mysql-test-run, so ignore the make target and just call it
 # manually.  Nonstandard options chosen are:
 # --force to continue tests after a failure
 # no retries please
@@ -1368,20 +1374,16 @@ rm %{buildroot}%{_mandir}/man1/aria_s3_copy.1*
 # NOTE: the Spider SE has 2 more hidden testsuites "oracle" and "oracle2".
 #       however, all of the tests fail with: "failed: 12521: Can't use wrapper 'oracle' for SQL connection"
 
 %endif
 %endif
 
 
 
-%pre -n %{pkgname}-server
-/usr/sbin/groupadd -g 27 -o -r mysql >/dev/null 2>&1 || :
-/usr/sbin/useradd -M -N -g mysql -o -r -d %{dbdatadir} -s /sbin/nologin \
-  -c "MySQL Server" -u 27 mysql >/dev/null 2>&1 || :
 
 %post -n %{pkgname}-server
 %systemd_post %{daemon_name}.service
 
 %preun -n %{pkgname}-server
 %systemd_preun %{daemon_name}.service
 
 %postun -n %{pkgname}-server
@@ -1670,16 +1672,17 @@ fi
 %attr(0750,mysql,mysql) %dir %{logfiledir}
 # This does what it should.
 # RPMLint error "conffile-without-noreplace-flag /var/log/mariadb/mariadb.log" is false positive.
 %attr(0660,mysql,mysql) %config %ghost %verify(not md5 size mtime) %{logfile}
 %config(noreplace) %{logrotateddir}/%{daemon_name}
 
 %{_tmpfilesdir}/%{majorname}.conf
 %{_sysusersdir}/%{majorname}.conf
+%{_sysusersdir}/mariadb10.11.conf
 
 %if %{with cracklib}
 %files -n %{pkgname}-cracklib-password-check
 %config(noreplace) %{_sysconfdir}/my.cnf.d/cracklib_password_check.cnf
 %{_libdir}/%{majorname}/plugin/cracklib_password_check.so
 %{_datadir}/selinux/packages/targeted/%{majorname}-plugin-cracklib-password-check.pp
 %endif
 
@@ -1799,16 +1802,19 @@ fi
 %attr(-,mysql,mysql) %{_datadir}/mysql-test
 %{_mandir}/man1/{mysql_client_test,mysqltest,mariadb-client-test,mariadb-test}.1*
 %{_mandir}/man1/my_safe_process.1*
 %{_mandir}/man1/mysql-stress-test.pl.1*
 %{_mandir}/man1/mysql-test-run.pl.1*
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3:10.11.10-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3:10.11.10-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Nov 29 2024 Timothée Ravier <tim@siosm.fr> - 3:10.11.10-2
 - Split mariadb-access & mariadb-find-rows into a client-utils subpackage
 
 * Sat Nov 16 2024 Michal Schorm <mschorm@redhat.com> - 3:10.11.10-1
 - Rebase to 10.11.10
diff --git mgetty/mgetty.spec mgetty/mgetty.spec.tmp
index c03f297563..4a5c289be2 100644
--- mgetty/mgetty.spec
+++ mgetty/mgetty.spec.tmp
@@ -3,17 +3,17 @@
 # PIE is broken on s390 (#868839, #872148)
 %ifnarch s390 s390x
 %global _hardened_build 1
 %endif
 
 Summary: A getty replacement for use with data and fax modems
 Name: mgetty
 Version: 1.2.1
-Release: 24%{?dist}
+Release: 25%{?dist}
 Source: ftp://mgetty.greenie.net/pub/mgetty/source/1.2/mgetty-%{version}.tar.gz
 Source1: ftp://mgetty.greenie.net/pub/mgetty/source/1.2/mgetty-%{version}.tar.gz.asc
 Source2: logrotate.mgetty
 Source3: logrotate.sendfax
 Source4: logrotate.vgetty
 Source5: logrotate.vm
 Source6: vgetty@.service
 Source7: mgetty@.service
@@ -65,17 +65,16 @@ Requires(post): systemd
 Requires(postun): systemd
 URL: http://mgetty.greenie.net/
 
 %package sendfax
 Summary: Provides support for sending faxes over a modem
 Requires: mgetty = %{version}
 Requires: coreutils
 Requires: netpbm-progs
-Requires(pre): /usr/sbin/useradd
 Conflicts: hylafax+
 
 %package voice
 Summary: A program for using your modem and mgetty as an answering machine
 Requires: mgetty = %{version}
 Requires(post): systemd
 Requires(postun): systemd
 
@@ -145,16 +144,21 @@ rm -r voice/libmgsm
 %patch -P 25 -p1 -b .sd
 %patch -P 26 -p1 -b .makefile
 %patch -P 27 -p1 -b .lockdev
 %patch -P 28 -p1 -b .hardening
 %patch -P 29 -p1 -b .sys_nerr-removed
 %patch -P 30 -p1 -b .manpage-typos
 %patch -P 31 -p1 -b .c99
 
+# Create a sysusers.d config file
+cat >mgetty.sysusers.conf <<EOF
+u fax %SENDFAX_UID 'mgetty fax spool user' /var/spool/fax -
+EOF
+
 %build
 %define makeflags CFLAGS="$RPM_OPT_FLAGS -Wall -DAUTO_PPP -D_FILE_OFFSET_BITS=64 -DHAVE_LOCKDEV -fno-strict-aliasing" LIBS="-llockdev" prefix=%{_prefix} spool=%{_var}/spool BINDIR=%{_bindir} SBINDIR=%{_sbindir} LIBDIR=%{_libdir}/mgetty+sendfax HELPDIR=%{_libdir}/mgetty+sendfax CONFDIR=%{_sysconfdir}/mgetty+sendfax MANDIR=%{_mandir} MAN1DIR=%{_mandir}/man1 MAN4DIR=%{_mandir}/man4 MAN5DIR=%{_mandir}/man5 MAN8DIR=%{_mandir}/man8 INFODIR=%{_infodir} ECHO='"echo -e"' INSTALL=%{__install}
 make %{makeflags}
 make -C voice %{makeflags}
 make -C tools %{makeflags}
 
 pushd frontends/X11/viewfax
 make OPT="$RPM_OPT_FLAGS" CONFDIR=%{_sysconfdir}/mgetty+sendfax
@@ -206,29 +210,28 @@ install -m 0644 %{SOURCE7} %{buildroot}%{_unitdir}/
 install -m 0644 distro/faxrunqd.service %{buildroot}%{_unitdir}/
 
 # remove file droppings from buildroot
 rm -f %{buildroot}%{_bindir}/cutbl
 
 # remove file conflict with netpbm:
 rm -f %{buildroot}%{_bindir}/g3topbm
 
+install -m0644 -D mgetty.sysusers.conf %{buildroot}%{_sysusersdir}/mgetty.conf
+
 %post
 %systemd_post mgetty@.service
 
 %preun
 %systemd_preun mgetty@.service
 
 %postun
 %systemd_postun_with_restart mgetty@.service
 exit 0
 
-%pre sendfax
-getent group fax >/dev/null || groupadd -g %SENDFAX_UID -r fax
-getent passwd fax >/dev/null || useradd -r -u %SENDFAX_UID -g fax -d /var/spool/fax -s /sbin/nologin -c "mgetty fax spool user" fax
 
 %post sendfax
 %systemd_post faxrunqd.service
 
 %preun sendfax
 %systemd_preun faxrunqd.service
 
 %postun sendfax
@@ -302,16 +305,17 @@ exit 0
 %config(noreplace) %{_sysconfdir}/mgetty+sendfax/faxrunq.config
 # sample config file doesn't use noreplace option to be installed always latest ver.
 %config %{_sysconfdir}/mgetty+sendfax/faxspool.rules.sample
 %config(noreplace) %{_sysconfdir}/mgetty+sendfax/faxheader
 # logrotate file name uses only sub-package name
 %config(noreplace) %{_sysconfdir}/logrotate.d/sendfax
 # faxrunqd unit file
 %{_unitdir}/faxrunqd.service
+%{_sysusersdir}/mgetty.conf
 
 %files voice
 %doc voice/doc/* voice/Announce voice/ChangeLog voice/Readme
 %dir %{_var}/spool/voice
 %dir %{_var}/spool/voice/incoming
 %dir %{_var}/spool/voice/messages
 %{_sbindir}/vgetty
 %{_bindir}/vm
@@ -376,16 +380,19 @@ exit 0
 %files viewfax
 %doc frontends/X11/viewfax/C* frontends/X11/viewfax/README
 %{_bindir}/viewfax
 %dir %{_libdir}/mgetty+sendfax
 %{_libdir}/mgetty+sendfax/viewfax.tif
 %{_mandir}/man1/viewfax.1*
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.2.1-25
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-24
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-23
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-22
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git milter-greylist/milter-greylist.spec milter-greylist/milter-greylist.spec.tmp
index bd5aae10fb..d7453b3b1d 100644
--- milter-greylist/milter-greylist.spec
+++ milter-greylist/milter-greylist.spec.tmp
@@ -13,17 +13,17 @@
 %else
 %global geoip_support		1
 %global maxminddb_support	0
 %endif
 
 Summary:		Milter for greylisting, the next step in the spam control war
 Name:			milter-greylist
 Version:		4.6.4
-Release:		16%{?dist}
+Release:		17%{?dist}
 # License is like BSD-4-Clause but without the 4th clause
 # We use spamd.c but not queue.h
 # See READNE for details
 # Automatically converted from old format: BSD with advertising - review is highly recommended.
 License:		LicenseRef-Callaway-BSD-with-advertising
 URL:			http://hcpnet.free.fr/milter-greylist/
 Source0:		ftp://ftp.espci.fr/pub/milter-greylist/milter-greylist-%{version}.tgz
 Source1:		README.fedora
@@ -47,17 +47,16 @@ BuildRequires:		libspf2-devel
 BuildRequires:		m4
 BuildRequires:		make
 BuildRequires:		%milter_devel_package
 BuildRequires:		perl-interpreter
 BuildRequires:		sed
 
 # Scriptlet dependencies
 BuildRequires:		systemd
-Requires(pre):		shadow-utils
 %{?systemd_requires}
 
 %if %{maxminddb_support}
 Recommends:		geolite2-country
 %endif
 
 %description
 Greylisting is a new method of blocking significant amounts of spam at
@@ -111,16 +110,21 @@ for i in `find -type f`; do
     sed -e 's|/var/milter-greylist/milter-greylist.sock|/run/milter-greylist/milter-greylist.sock|g;
 	    s|/var/milter-greylist/greylist.db|%{_localstatedir}/lib/milter-greylist/db/greylist.db|g;
 	    s|/var/milter-greylist/milter-greylist.pid|/run/milter-greylist.pid|g;
 	   ' "$i" >"$i.tmp"
     cmp -s "$i" "$i.tmp" || cat "$i.tmp" >"$i"
     rm -f "$i".tmp
 done
 
+# Create a sysusers.d config file
+cat >milter-greylist.sysusers.conf <<EOF
+u grmilter - 'Greylist-milter user' %{_localstatedir}/lib/milter-greylist -
+EOF
+
 
 %build
 # Harden the build if supported
 %global _hardened_build 1
 export CFLAGS="%{__global_cflags} -fno-strict-aliasing -D_GNU_SOURCE -std=gnu17"
 export LDFLAGS="-Wl,-z,now -Wl,-z,relro %{__global_ldflags} -Wl,--as-needed $LDLIBS"
 %configure \
 	--disable-drac				\
@@ -155,23 +159,18 @@ touch %{buildroot}/run/milter-greylist/milter-greylist.sock
 install -D -p -m 0644 %{SOURCE20} %{buildroot}%{_unitdir}/milter-greylist.service
 
 # Make sure /run/milter-greylist is re-created at boot time if /run is on tmpfs
 install -d -m 755 %{buildroot}%{_prefix}/lib/tmpfiles.d
 cat << EOF > %{buildroot}%{_prefix}/lib/tmpfiles.d/milter-greylist.conf
 d /run/milter-greylist 0710 root mail
 EOF
 
-%pre
-# Create account for milter-greylist to run as
-getent group grmilter >/dev/null || groupadd -r grmilter
-getent passwd grmilter >/dev/null || \
-	useradd -r -g grmilter -d %{_localstatedir}/lib/milter-greylist -s /sbin/nologin \
-	 -c "Greylist-milter user" grmilter
-exit 0
+install -m0644 -D milter-greylist.sysusers.conf %{buildroot}%{_sysusersdir}/milter-greylist.conf
+
 
 %post
 %systemd_post milter-greylist.service
 
 %preun
 %systemd_preun milter-greylist.service
 
 %postun
@@ -185,18 +184,22 @@ exit 0
 %dir %attr(0751,grmilter,grmilter) %{_localstatedir}/lib/milter-greylist/
 %dir %attr(0770,root,grmilter) %{_localstatedir}/lib/milter-greylist/db/
 %dir %attr(0710,root,mail) /run/milter-greylist/
 %{_mandir}/man5/greylist.conf.5*
 %{_mandir}/man8/milter-greylist.8*
 %ghost /run/milter-greylist/milter-greylist.sock
 %{_prefix}/lib/tmpfiles.d/milter-greylist.conf
 %{_unitdir}/milter-greylist.service
+%{_sysusersdir}/milter-greylist.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.6.4-17
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Paul Howarth <paul@city-fan.org> - 4.6.4-16
 - Build with -std=gnu17 due to issues with milter API (#2336394)
 
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.6.4-15
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Sep  2 2024 Miroslav Suchý <msuchy@redhat.com> - 4.6.4-14
 - Convert license to SPDX
diff --git milter-regex/milter-regex.spec milter-regex/milter-regex.spec.tmp
index 72f2988f27..177d48fb4c 100644
--- milter-regex/milter-regex.spec
+++ milter-regex/milter-regex.spec.tmp
@@ -2,17 +2,17 @@
 %if (0%{?rhel} && 0%{?rhel} <= 7) || (0%{?fedora} && 0%{?fedora} <= 25)
 %global milter_devel_package sendmail-devel
 %else
 %global milter_devel_package sendmail-milter-devel
 %endif
 
 Name:		milter-regex
 Version:	2.7
-Release:	16%{?dist}
+Release:	17%{?dist}
 Summary:	Milter plug-in for regular expression filtering
 License:	BSD-2-Clause
 URL:		http://www.benzedrine.ch/milter-regex.html
 Source0:	http://www.benzedrine.ch/milter-regex-%{version}.tar.gz
 # Note: signature made with ancient PGP key, needs gpg1 to verify
 Source10:	http://www.benzedrine.ch/milter-regex-%{version}.tar.gz.asc
 Source1:	milter-regex.service
 Source2:	milter-regex-options
@@ -20,33 +20,37 @@ Source3:	milter-regex.conf
 BuildRequires:	byacc
 BuildRequires:	coreutils
 BuildRequires:	gcc
 BuildRequires:	groff
 BuildRequires:	make
 BuildRequires:	%milter_devel_package >= 8.13
 BuildRequires:	sed
 BuildRequires:	systemd
-Requires(pre):	shadow-utils
 %{?systemd_requires}
 
 %description
 Milter-regex is a milter based filter that makes it possible to filter
 emails using regular expressions.
 
 %prep
 %setup -q
 
 # Customize config file location and dæmon user
 sed -i -e	's|/etc/milter-regex\.conf|%{_sysconfdir}/mail/milter-regex.conf|;
 		 s|_milter-regex|mregex|' milter-regex.[8c]
 
 # Copy out the license text from the source code
 head -n +31 milter-regex.c > LICENSE
 
+# Create a sysusers.d config file
+cat >milter-regex.sysusers.conf <<EOF
+u mregex - 'Regex Milter' %{_localstatedir}/spool/milter-regex -
+EOF
+
 %build
 make %{?_smp_mflags} -f Makefile.linux \
 	CFLAGS="%{optflags} -Wextra -Wwrite-strings -DYYMAXDEPTH=8192 -std=gnu17" \
 	LDFLAGS="-Wl,-z,now -Wl,-z,relro %{?__global_ldflags} -Wl,--as-needed -L/usr/lib/libmilter -lmilter -lpthread"
 
 %install
 mkdir -p \
 	%{buildroot}%{_unitdir} \
@@ -58,22 +62,18 @@ install -p -m 755 milter-regex %{buildroot}%{_sbindir}/
 install -p -m 644 milter-regex.8 %{buildroot}%{_mandir}/man8/
 install -p -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/milter-regex.service
 install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/milter-regex
 install -p -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/mail/milter-regex.conf
 
 # Create a ghost sock file so we can remove it on package deletion
 : > %{buildroot}%{_localstatedir}/spool/milter-regex/sock
 
-%pre
-getent group mregex >/dev/null || groupadd -r mregex
-getent passwd mregex >/dev/null || \
-	useradd -r -g mregex -d %{_localstatedir}/spool/milter-regex \
-		-s /sbin/nologin -c "Regex Milter" mregex
-exit 0
+install -m0644 -D milter-regex.sysusers.conf %{buildroot}%{_sysusersdir}/milter-regex.conf
+
 
 %post
 %systemd_post milter-regex.service
 
 %preun
 %systemd_preun milter-regex.service
 
 %postun
@@ -83,18 +83,22 @@ exit 0
 %license LICENSE
 %{_sbindir}/milter-regex
 %{_unitdir}/milter-regex.service
 %config(noreplace) %{_sysconfdir}/sysconfig/milter-regex
 %config(noreplace) %{_sysconfdir}/mail/milter-regex.conf
 %dir %attr(755,root,mregex) %{_localstatedir}/spool/milter-regex/
 %ghost %{_localstatedir}/spool/milter-regex/sock
 %{_mandir}/man8/milter-regex.8*
+%{_sysusersdir}/milter-regex.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.7-17
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Paul Howarth <paul@city-fan.org> - 2.7-16
 - Build with -std=gnu17 due to issues with milter API (#2336394)
 
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.7-15
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.7-14
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git minetest/minetest.spec minetest/minetest.spec.tmp
index a1d407124d..3b026f57c0 100644
--- minetest/minetest.spec
+++ minetest/minetest.spec.tmp
@@ -1,13 +1,13 @@
 %global irr_version 1.9.0mt13
 %global minetest_game_version 5.8.0
 Name:     minetest
 Version:  5.10.0
-Release:  3%{?dist}
+Release:  4%{?dist}
 Summary:  Multiplayer infinite-world block sandbox with survival mode
 
 # Automatically converted from old format: LGPLv2+ and CC-BY-SA - review is highly recommended.
 License:  LicenseRef-Callaway-LGPLv2+ AND LicenseRef-Callaway-CC-BY-SA
 URL:      https://luanti.org
 
 Source0:  https://github.com/minetest/minetest/archive/%{version}/%{name}-%{version}.tar.gz
 Source1:  %{name}.desktop
@@ -65,17 +65,16 @@ Provides:  bundled(irrlicht) = %{irr_version}
 %description
 Game of mining, crafting and building in the infinite world of cubic blocks with
 optional hostile creatures, features both single and the network multiplayer
 mode, mods. Public multiplayer servers are available.
 
 %package server
 Summary:  Minetest multiplayer server
 
-Requires(pre):    shadow-utils
 Requires(post):   systemd
 Requires(preun):  systemd
 Requires(postun): systemd
 Requires:         %{name}-data-common = %{version}-%{release}
 
 %description server
 Minetest multiplayer server. This package does not require X Window System.
 
@@ -97,16 +96,21 @@ cp %{SOURCE7} doc/
 
 # purge bundled jsoncpp and lua, and gmp :P
 rm -vrf lib/jsoncpp lib/lua lib/gmp
 
 find . -name .gitignore -print -delete
 find . -name .travis.yml -print -delete
 find . -name .luacheckrc -print -delete
 
+# Create a sysusers.d config file
+cat >minetest.sysusers.conf <<EOF
+u minetest - 'Minetest multiplayer server' %{_sharedstatedir}/%{name} /bin/bash
+EOF
+
 %build
 %ifarch aarch64
 %define _lto_cflags %{nil}
 %endif
 LDFLAGS="$LDFLAGS $(pkg-config --libs openssl)"
 export LDFLAGS
 # -DENABLE_FREETYPE=ON needed for Unicode in text chat
 %cmake -DENABLE_CURL=TRUE           \
@@ -168,22 +172,18 @@ cp -p %{SOURCE5} README.fedora
 mkdir __doc
 mv  %{buildroot}%{_datadir}/doc/luanti/* __doc
 rm -rf %{buildroot}%{_datadir}/doc/luanti
 
 %find_lang luanti
 
 appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/net.%{name}.%{name}.metainfo.xml
 
-%pre server
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-    useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /bin/bash \
-    -c "Minetest multiplayer server" %{name}
-exit 0
+install -m0644 -D minetest.sysusers.conf %{buildroot}%{_sysusersdir}/minetest.conf
+
 
 %post server
 %systemd_post %{name}@default.service
 
 %preun server
 %systemd_preun %{name}@default.service
 
 %postun server
@@ -211,23 +211,27 @@ exit 0
 %{_bindir}/luantiserver
 %{_unitdir}/%{name}@.service
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}-server
 %config(noreplace) %{_sysconfdir}/rsyslog.d/%{name}.conf
 %attr(-,minetest,minetest)%{_sharedstatedir}/%{name}/
 %config(noreplace) %attr(-,minetest,minetest)%{_sysconfdir}/%{name}/
 %attr(-,minetest,minetest)%{_sysconfdir}/sysconfig/%{name}/
 %{_mandir}/man6/luantiserver.*
+%{_sysusersdir}/minetest.conf
 
 %files data-common
 %license doc/lgpl-2.1.txt
 %{_datadir}/luanti/builtin
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 5.10.0-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5.10.0-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Jan 6 2025 Diego Herrera <dherrera@redhat.com> - 5.10.0-2
 - Added parameter to minetest@.service to be able to set the GameID
 
 * Tue Nov 12 2024 Gwyn Ciesla <gwync@protonmail.com> - 5.10.0-1
 - 5.10.0
diff --git mirrormanager2/mirrormanager2.spec mirrormanager2/mirrormanager2.spec.tmp
index 4eaa9df604..919e2a2f19 100644
--- mirrormanager2/mirrormanager2.spec
+++ mirrormanager2/mirrormanager2.spec.tmp
@@ -1,13 +1,13 @@
 %global toxenv py
 
 Name:           mirrormanager2
 Version:        1.0.0
-Release:        10%{?dist}
+Release:        11%{?dist}
 Summary:        Mirror management application
 
 # Most MirrorManager files are licensed under the MIT license. Some
 # imported/derivated parts like zebra-dump-parser or the the script
 # to generate the worldmaps are licensed under GPLv2 and GPLv2+
 # Automatically converted from old format: MIT and GPLv2+ and GPLv2 - review is highly recommended.
 License:        LicenseRef-Callaway-MIT AND GPL-2.0-or-later AND GPL-2.0-only
 URL:            https://github.com/fedora-infra/mirrormanager2/
@@ -61,31 +61,29 @@ Library to interact with MirrorManager's database
 %package crawler
 Summary:        Crawler for MirrorManager
 BuildArch:      noarch
 
 Requires:  %{name}-filesystem = %{version}-%{release}
 Requires:  %{name}-lib = %{version}-%{release}
 Requires:  python%{python3_pkgversion}-geoip2
 Requires:  logrotate
-Requires(pre):  shadow-utils
 
 %description crawler
 Install the crawler for MirrorManager, crawling all the mirrors to find out
 if they are up to date or not
 
 
 %package backend
 Summary:        Backend scripts for MirrorManager
 BuildArch:      noarch
 
 Requires:  %{name}-filesystem = %{version}-%{release}
 Requires:  %{name}-lib = %{version}-%{release}
 Requires:  logrotate
-Requires(pre):  shadow-utils
 
 %description backend
 Install a number of utility scripts to be used manually or in cron jobs to
 run MirrorManager.
 
 %package client
 Summary:        Fedora mirror management system downstream mirror tools
 BuildArch:      noarch
@@ -130,16 +128,21 @@ Base directories used by multiple subpackages
 
 %prep
 %autosetup -p1
 
 
 %generate_buildrequires
 %pyproject_buildrequires
 
+# Create a sysusers.d config file
+cat >mirrormanager2.sysusers.conf <<EOF
+u mirrormanager - 'MirrorManager' %{_localstatedir}/lib/mirrormanager -
+EOF
+
 %build
 # Recreating protobuf output
 protoc --python_out=mirrorlist mirrormanager.proto
 protoc --python_out=mirrormanager2/lib mirrormanager.proto
 %pyproject_wheel
 
 
 %install
@@ -211,23 +214,19 @@ install -m 0644 utility/country_continent.csv \
     $RPM_BUILD_ROOT/%{_datadir}/mirrormanager2/country_continent.csv
 
 # Fix the shebang for various scripts
 sed -e "s|#!/usr/bin/env python.*|#!%{__python3}|" -i \
     $RPM_BUILD_ROOT/%{_bindir}/* \
     $RPM_BUILD_ROOT/%{_datadir}/mirrormanager2/*.py \
     $RPM_BUILD_ROOT/%{python3_sitelib}/mirrormanager2/lib/umdl.py
 
+install -m0644 -D mirrormanager2.sysusers.conf %{buildroot}%{_sysusersdir}/mirrormanager2.conf
+
 
-%pre crawler
-getent group mirrormanager >/dev/null || groupadd -r mirrormanager
-getent passwd mirrormanager >/dev/null || \
-    useradd -r -g mirrormanager -d %{_localstatedir}/lib/mirrormanager -s /sbin/nologin \
-    -c "MirrorManager" mirrormanager
-exit 0
 
 %pre backend
 getent group mirrormanager >/dev/null || groupadd -r mirrormanager
 getent passwd mirrormanager >/dev/null || \
     useradd -r -g mirrormanager -d %{_localstatedir}/lib/mirrormanager -s /sbin/nologin \
     -c "MirrorManager" mirrormanager
 exit 0
 
@@ -269,16 +268,17 @@ MM2_SKIP_NETWORK_TESTS=1 %{pytest} tests
 
 
 %files crawler
 %config(noreplace) %{_sysconfdir}/logrotate.d/mm2_crawler
 %attr(755,mirrormanager,mirrormanager) %dir %{_localstatedir}/lib/mirrormanager
 %attr(755,mirrormanager,mirrormanager) %dir %{_localstatedir}/log/mirrormanager
 %attr(755,mirrormanager,mirrormanager) %dir %{_localstatedir}/log/mirrormanager/crawler
 %{_bindir}/mm2_crawler
+%{_sysusersdir}/mirrormanager2.conf
 
 
 %files backend
 %config(noreplace) %{_sysconfdir}/logrotate.d/mm2_umdl
 %attr(755,mirrormanager,mirrormanager) %dir /run/lock/mirrormanager
 %attr(755,mirrormanager,mirrormanager) %dir %{_localstatedir}/lib/mirrormanager
 %attr(755,mirrormanager,mirrormanager) %dir %{_localstatedir}/log/mirrormanager
 %attr(755,mirrormanager,mirrormanager) %dir /run/mirrormanager
@@ -303,16 +303,19 @@ MM2_SKIP_NETWORK_TESTS=1 %{pytest} tests
 
 %files statistics
 %{_bindir}/mm2_generate-worldmap
 %{_bindir}/mm2_propagation
 %{_bindir}/mirrorlist_statistics
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.0.0-11
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.0-10
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Dec 10 2024 Aurelien Bompard <abompard@fedoraproject.org> - 1.0.0-9
 - Patch the configuration file for the report-mirror client to update the server URL.
 
 * Mon Sep 02 2024 Miroslav Suchý <msuchy@redhat.com> - 1.0.0-8
 - convert license to SPDX
diff --git mlmmj/mlmmj.spec mlmmj/mlmmj.spec.tmp
index 3676260835..b78857d9c6 100644
--- mlmmj/mlmmj.spec
+++ mlmmj/mlmmj.spec.tmp
@@ -1,15 +1,15 @@
 %global __requires_exclude perl\\(.*[.]pl\\)|\/bin\/bash
 %global modulename mlmmj
 %global selinuxtype targeted
 
 Name:           mlmmj
 Version:        1.4.7
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        A simple and slim mailing list manager inspired by ezmlm
 License:        MIT
 URL:            https://codeberg.org/mlmmj/mlmmj
 Source0:        https://codeberg.org/%{name}/%{name}/releases/download/%{name}-%{version}.tar.gz
 Source1:        %{modulename}.te
 Source2:        %{modulename}.fc
 Source3:        README.SELinux
 
@@ -63,16 +63,21 @@ This package adds SELinux enforcement support to mlmmj.
 %autosetup
 # SELinux
 mkdir selinux
 cp -p %{SOURCE1} selinux/%{modulename}.te
 cp -p %{SOURCE2} selinux/%{modulename}.fc
 cp -p %{SOURCE3} selinux/README.SELinux
 touch selinux/%{modulename}.if
 
+# Create a sysusers.d config file
+cat >mlmmj.sysusers.conf <<EOF
+u mlmmj - 'mlmmj user' %{_localstatedir}/spool/%{name} -
+EOF
+
 %build
 %configure --enable-receive-strip
 %make_build
 # SELinux
 make -f %{_datadir}/selinux/devel/Makefile %{modulename}.pp
 bzip2 -9 %{modulename}.pp
 
 %install
@@ -80,20 +85,18 @@ bzip2 -9 %{modulename}.pp
 
 mkdir -p %{buildroot}%{_localstatedir}/spool/%{name}
 find contrib/ -type f -name *.pl -exec chmod -x {} ";"
 find contrib/ -type f -name *.cgi -exec chmod -x {} ";"
 
 # SELinux
 install -D -m 0644 %{modulename}.pp.bz2 %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{modulename}.pp.bz2
 
-%pre
-getent group mlmmj &>/dev/null || %{_sbindir}/groupadd -r mlmmj
-getent passwd mlmmj &>/dev/null || \
-    %{_sbindir}/useradd -r -g mlmmj -s /sbin/nologin -c "mlmmj user" -d %{_localstatedir}/spool/%{name} mlmmj
+install -m0644 -D mlmmj.sysusers.conf %{buildroot}%{_sysusersdir}/mlmmj.conf
+
 
 %pre selinux
 %selinux_relabel_pre -s %{selinuxtype}
 
 %post selinux
 %selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{modulename}.pp.bz2
 
 %postun selinux
@@ -107,23 +110,27 @@ fi
 %files
 %license COPYING
 %doc AUTHORS ChangeLog FAQ README* TODO TUNABLES.md UPGRADE
 %doc contrib/web/
 %{_bindir}/*
 %{_mandir}/man1/mlmmj*.1*
 %{_datadir}/%{name}/
 %dir %attr(0700,mlmmj,root) %{_localstatedir}/spool/%{name}
+%{_sysusersdir}/mlmmj.conf
 
 %files selinux
 %doc selinux/README.SELinux
 %{_datadir}/selinux/packages/%{selinuxtype}/%{modulename}.pp.*
 %ghost %verify(not md5 size mode mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{modulename}
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.4.7-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.7-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Aug 21 2024 Denis Fateyev <denis@fateyev.com> - 1.4.7-1
 - Update to 1.4.7 release
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.5-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git mock/mock.spec mock/mock.spec.tmp
index 5fd187246c..7b8293f20f 100644
--- mock/mock.spec
+++ mock/mock.spec.tmp
@@ -14,17 +14,17 @@
 %endif
 
 %global __python %{__python3}
 %global python_sitelib %{python3_sitelib}
 
 Summary: Builds packages inside chroots
 Name: mock
 Version: 6.0
-Release: 2%{?dist}
+Release: 3%{?dist}
 License: GPL-2.0-or-later
 # Source is created by
 # git clone https://github.com/rpm-software-management/mock.git
 # cd mock
 # git reset --hard %%{name}-%%{version}
 # tito build --tgz
 Source: https://github.com/rpm-software-management/%{name}/releases/download/%{name}-%{version}-1/%{name}-%{version}.tar.gz
 URL: https://github.com/rpm-software-management/mock/
@@ -112,17 +112,16 @@ BuildRequires: python%{python3_pkgversion}-templated-dictionary
 BuildRequires: perl-interpreter
 %else
 BuildRequires: perl
 %endif
 # hwinfo plugin
 Requires: util-linux
 Requires: coreutils
 Requires: procps-ng
-Requires: shadow-utils
 
 
 %description
 Mock takes an SRPM and builds it in a chroot.
 
 %package scm
 Summary: Mock SCM integration module
 Requires: %{name} = %{version}-%{release}
@@ -152,32 +151,35 @@ Requires: %{name} = %{version}-%{release}
 # This lets mock determine if a spec file needs to be processed with rpmautospec.
 Requires: python%{python3_pkgversion}-rpmautospec-core
 
 %description rpmautospec
 Mock plugin that preprocesses spec files using rpmautospec.
 
 %package filesystem
 Summary:  Mock filesystem layout
-Requires(pre):  shadow-utils
 BuildRequires:  systemd-rpm-macros
 
 %if %{with sysusers_compat}
-Requires(pre): shadow-utils
 %endif
 
 %description filesystem
 Filesystem layout and group for Mock.
 
 %prep
 %setup -q
 for file in py/mock.py py/mock-parse-buildlog.py; do
   sed -i 1"s|#!/usr/bin/python3 |#!%{__python} |" $file
 done
 
+# Create a sysusers.d config file
+cat >mock.sysusers.conf <<EOF
+g mock 135
+EOF
+
 %build
 for i in py/mockbuild/constants.py py/mock-parse-buildlog.py; do
     perl -p -i -e 's|^VERSION\s*=.*|VERSION="%{version}"|' $i
     perl -p -i -e 's|^SYSCONFDIR\s*=.*|SYSCONFDIR="%{_sysconfdir}"|' $i
     perl -p -i -e 's|^PYTHONDIR\s*=.*|PYTHONDIR="%{python_sitelib}"|' $i
     perl -p -i -e 's|^PKGPYTHONDIR\s*=.*|PKGPYTHONDIR="%{python_sitelib}/mockbuild"|' $i
 done
 for i in docs/mock.1 docs/mock-parse-buildlog.1; do
@@ -235,23 +237,21 @@ install -p -m 0644 docs/buildroot-lock-schema-*.json %{buildroot}%{_pkgdocdir}
 install -p -m 0644 docs/site-defaults.cfg %{buildroot}%{_pkgdocdir}
 
 mkdir -p %{buildroot}%{_sysusersdir}
 install -p -D -m 0644 %{name}.conf %{buildroot}%{_sysusersdir}
 
 sed -i 's/^_MOCK_NVR = None$/_MOCK_NVR = "%name-%version-%release"/' \
     %{buildroot}%{_libexecdir}/mock/mock
 
+install -m0644 -D mock.sysusers.conf %{buildroot}%{_sysusersdir}/mock.conf
+
 
 %if %{with sysusers_compat}
 %pre filesystem
-# Some of these older distributions do not ship with the %%sysusers_*_compat.
-# Instead of another ifdef/else here, we prefer to hardcode the scriptlet
-# content here.
-getent group 'mock' >/dev/null || groupadd -f -g '135' -r 'mock' || :
 %endif
 
 
 %check
 %if %{with lint}
 # ignore the errors for now, just print them and hopefully somebody will fix it one day
 pylint-3 py/mockbuild/ py/*.py py/mockbuild/plugins/* || :
 %endif
@@ -323,18 +323,22 @@ pylint-3 py/mockbuild/ py/*.py py/mockbuild/plugins/* || :
 %files filesystem
 %license COPYING
 %dir  %{_sysconfdir}/mock
 %dir  %{_sysconfdir}/mock/eol
 %dir  %{_sysconfdir}/mock/eol/templates
 %dir  %{_sysconfdir}/mock/templates
 %dir  %{_datadir}/cheat
 %config(noreplace) %{_sysusersdir}/mock.conf
+%{_sysusersdir}/mock.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 6.0-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 6.0-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Dec 19 2024 Pavel Raiskup <praiskup@redhat.com> 6.0-1
 - export_buildroot_image: new plugin for OCI image exports
 - buildroot_image: allow using OCI images as the base for buildroot
 - hermetic: do not install buildroot via DNF
 - podman: typofix in library call error-message
diff --git monotone/monotone.spec monotone/monotone.spec.tmp
index 114c523ed0..5c7e76aac3 100644
--- monotone/monotone.spec
+++ monotone/monotone.spec.tmp
@@ -1,11 +1,11 @@
 Name:            monotone
 Version:         1.1
-Release:         51%{?dist}
+Release:         52%{?dist}
 Summary:         A free, distributed version control system
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:         GPL-2.0-or-later
 URL:             http://monotone.ca/
 Source0:         http://monotone.ca/downloads/%{version}/%{name}-%{version}.tar.bz2
 Source1:         monotone.service
 Source2:         monotone.sysconfig
 Source3:         README.monotone-server
@@ -52,17 +52,16 @@ database, supports overlapping branches and extensible
 metadata, exchanges work over plain network protocols,
 performs history-sensitive merging, and delegates trust
 functions to client-side RSA certificates.
 
 
 %package server
 Summary: Standalone server setup for monotone
 Requires: monotone = %{version}-%{release}
-Requires(pre): shadow-utils
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 
 
 %description server
 This package provides an easy-to-use standalone server setup for monotone.
 
@@ -75,16 +74,21 @@ Requires: monotone = %{version}-%{release}
 %description -n perl-Monotone
 This is a simple Perl module to start a monotone automate sub-process
 and then pass commands to it.
 
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >monotone.sysusers.conf <<EOF
+u monotone - 'Monotone Netsync Server' %{_localstatedir}/lib/monotone -
+EOF
+
 
 %build
 export LC_MESSAGES=en_US
 %configure
 %make_build
 
 
 %check
@@ -137,16 +141,18 @@ install -m 0644 -p %{SOURCE3} .
 
 install -D -m 0644 -p contrib/Monotone.pm \
              %{buildroot}%{perl_vendorlib}/Monotone.pm
 
 mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
 mv %{buildroot}%{_sysconfdir}/bash_completion.d/monotone.bash_completion \
              %{buildroot}%{_datadir}/bash-completion/completions/%{name}.bash_completion
 
+install -m0644 -D monotone.sysusers.conf %{buildroot}%{_sysusersdir}/monotone.conf
+
 
 %files -f %{name}.lang
 %doc AUTHORS NEWS README UPGRADE
 %doc _doc/*
 %license COPYING
 %{_bindir}/mtn
 %{_bindir}/mtnopt
 %{_bindir}/mtn-cleanup
@@ -179,40 +185,37 @@ mv %{buildroot}%{_sysconfdir}/bash_completion.d/monotone.bash_completion \
 %dir %attr(0755,root,monotone) %{_sysconfdir}/monotone
 %dir %attr(0750,root,monotone) %{_sysconfdir}/monotone/private-keys
 %attr(0640,root,monotone) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_sysconfdir}/monotone/monotonerc
 %attr(0440,root,monotone) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_sysconfdir}/monotone/passphrase.lua
 %attr(0640,root,monotone) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_sysconfdir}/monotone/read-permissions
 %attr(0640,root,monotone) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_sysconfdir}/monotone/write-permissions
 %dir %attr(0770,monotone,monotone) %{_localstatedir}/lib/monotone
 %attr(0660,monotone,monotone) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_localstatedir}/lib/monotone/server.mtn
+%{_sysusersdir}/monotone.conf
 
 
-%pre server
-# Add "monotone" user per http://fedoraproject.org/wiki/Packaging/UsersAndGroups
-getent group monotone > /dev/null || groupadd -r monotone
-getent passwd monotone > /dev/null ||
-useradd -r -g monotone -r -d %{_localstatedir}/lib/monotone -s /sbin/nologin \
-        -c "Monotone Netsync Server" monotone
-exit 0
 
 
 %post server
 %systemd_post monotone.service
 
 
 %preun server
 %systemd_preun monotone.service
 
 
 %postun server
 %systemd_postun monotone.service
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.1-52
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.1-51
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul  26 2024 Miroslav Suchý <msuchy@redhat.com> - 1.1-50
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.1-49
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git mopidy/mopidy.spec mopidy/mopidy.spec.tmp
index f3cc42fd32..34d7d3fad4 100644
--- mopidy/mopidy.spec
+++ mopidy/mopidy.spec.tmp
@@ -1,13 +1,13 @@
 %global homedir %{_sharedstatedir}/%{name}
 
 Name:           mopidy
 Version:        4.0.0~a2
-Release:        3%{?dist}
+Release:        4%{?dist}
 Summary:        An extensible music server written in Python
 
 License:        Apache-2.0
 URL:            https://mopidy.com/
 Source0:        %{pypi_source}
 Source1:        mopidy.conf
 
 BuildArch:      noarch
@@ -28,17 +28,16 @@ BuildRequires:  gstreamer1-plugins-good
 BuildRequires:  libsoup3
 BuildRequires:  systemd-rpm-macros
 Requires:       python3-gstreamer1
 Requires:       libsoup3
 Requires:       gstreamer1-plugins-good
 Requires:       python3-tornado
 Requires:       python3-Pykka >= 4.0.0
 Requires:       python3-requests
-Requires(pre):  shadow-utils
 Suggests:       mopidy-mpd
 
 %description
 Mopidy plays music from local disk, and a plethora of streaming services and
 sources. You edit the playlist from any phone, tablet, or computer using a
 variety of MPD and web clients.
 
 %package doc
@@ -55,16 +54,21 @@ Documentation for Mopidy, an extensible music server written in Python.
 
 %prep
 %autosetup -n %{name}-4.0.0a2 -p1
 #HACK! revert to %%autosetup -n %%{name}-%%{version} -p1
 
 %generate_buildrequires
 %pyproject_buildrequires -p
 
+# Create a sysusers.d config file
+cat >mopidy.sysusers.conf <<EOF
+u mopidy - '%{summary}' %{homedir} -
+EOF
+
 %build
 %pyproject_wheel
 
 cd docs
 PYTHONPATH=../src make SPHINXBUILD=sphinx-build-3 html man
 rm _build/html/.buildinfo
 
 %install
@@ -76,25 +80,21 @@ install -d -m 0755 %{buildroot}%{_var}/cache/%{name}
 install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}
 touch %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf
 install -p -D extra/mopidyctl/mopidyctl %{buildroot}%{_sbindir}/mopidyctl
 install -p -D -m 0644 docs/_build/man/mopidy.1 %{buildroot}%{_mandir}/man1/%{name}.1
 install -p -D -m 0644 extra/mopidyctl/mopidyctl.8 %{buildroot}%{_mandir}/man8/mopidyctl.8
 install -p -D -m 0644 extra/systemd/mopidy.service %{buildroot}%{_unitdir}/%{name}.service
 install -p -D -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/%{name}/conf.d/mopidy.conf
 
+install -m0644 -D mopidy.sysusers.conf %{buildroot}%{_sysusersdir}/mopidy.conf
+
 %check
 %tox
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-    useradd -r -g %{name} -d %{homedir} -s /sbin/nologin \
-    -c "%{summary}" %{name}
-exit 0
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %postun
@@ -112,22 +112,26 @@ exit 0
 # Note: users are expected to put streaming service credentials here
 %attr(0640,%name,%name) %ghost %config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
 %{_bindir}/%{name}
 %{_sbindir}/mopidyctl
 %{_unitdir}/%{name}.service
 %{_mandir}/man1/%{name}.1.*
 %{_mandir}/man8/mopidyctl.8.*
 %{_datadir}/%{name}/conf.d/mopidy.conf
+%{_sysusersdir}/mopidy.conf
 
 %files doc
 %doc docs/_build/html
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.0.0~a2-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.0~a2-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Dec 14 2024 Tobias Girstmair <t-fedora@girst.at> - 4.0.0~a2-2
 - Fix test failures
 
 * Fri Dec 06 2024 Tobias Girstmair <t-fedora@girst.at> - 4.0.0~a2-1
 - Update to 4.0.0a2 (RHBZ#2330474) for Python 3.14 compatibility (RHBZ#2328700)
RPMAutoSpec usage detected, not changing the spec file.
diff --git mpdscribble/mpdscribble.spec mpdscribble/mpdscribble.spec.tmp
index b723198f42..5554d9a339 100644
--- mpdscribble/mpdscribble.spec
+++ mpdscribble/mpdscribble.spec.tmp
@@ -12,28 +12,32 @@ BuildRequires: cmake
 BuildRequires: gcc-g++
 BuildRequires: git
 BuildRequires: libcurl-devel
 BuildRequires: libgcrypt-devel
 BuildRequires: libmpdclient-devel >= 2.2
 BuildRequires: meson
 BuildRequires: systemd-devel
 
-Requires(pre): shadow-utils
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 
 %description
 mpdscribble is a music player daemon (mpd) client which submits information
 about tracks being played to Last.fm (formerly audioscrobbler)
 
 %prep
 %autosetup -S git_am
 
+# Create a sysusers.d config file
+cat >mpdscribble.sysusers.conf <<EOF
+u mpdscribble - 'Mpdscribble' %{_localstatedir}/cache/%{name} -
+EOF
+
 %build
 %meson
 %meson_build
 
 %check
 %meson_test
 
 %install
@@ -44,21 +48,18 @@ install -D -m 0644 -p %{SOURCE2} %{buildroot}%{_tmpfilesdir}/%{name}.conf
 install -d %{buildroot}%{_localstatedir}/run/%{name}
 
 # Make room for logs
 install -d %{buildroot}%{_localstatedir}/cache/%{name}
 
 # Remove installed docs (this will mess with versione/unversioned docdirs)
 rm -rf %{buildroot}%{_defaultdocdir}
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-useradd -r -g %{name} -d %{_localstatedir}/cache/%{name} -s /sbin/nologin \
--c "Mpdscribble" %{name} 2>/dev/null || :
+install -m0644 -D mpdscribble.sysusers.conf %{buildroot}%{_sysusersdir}/mpdscribble.conf
+
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %files
@@ -67,11 +68,12 @@ useradd -r -g %{name} -d %{_localstatedir}/cache/%{name} -s /sbin/nologin \
 %attr(0644,%{name},%{name}) %config(noreplace) %{_sysconfdir}/mpdscribble.conf
 %{_bindir}/mpdscribble
 %{_mandir}/man1/mpdscribble.1.gz
 %{_unitdir}/%{name}.service
 %{_userunitdir}/%{name}.service
 %{_tmpfilesdir}/%{name}.conf
 %attr(0755,%{name},%{name}) %dir %{_localstatedir}/run/%{name}
 %attr(0755,%{name},%{name}) %dir %{_localstatedir}/cache/%{name}
+%{_sysusersdir}/mpdscribble.conf
 
 %changelog
 %autochangelog
diff --git munin/munin.spec munin/munin.spec.tmp
index eab9b4ae3b..9db0da4644 100644
--- munin/munin.spec
+++ munin/munin.spec.tmp
@@ -1,11 +1,11 @@
 Name:           munin
 Version:        2.0.76
-Release:        4%{?dist}
+Release:        5%{?dist}
 Summary:        Network-wide resource monitoring tool
 License:        GPL-2.0-only
 URL:            http://munin-monitoring.org/
 
 Source0:        http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz
 Source1:        http://downloads.munin-monitoring.org/munin/stable/%{version}/%{name}-%{version}.tar.gz.asc
 # fpr=910846ADEE4C5D67C19B3E6F0A24C05998BA4133
 # gpg --recv-keys $fpr
@@ -87,17 +87,16 @@ Requires:       perl(Net::SSLeay)
 Requires:       perl(Net::Server)
 Requires:       perl(Params::Validate)
 Requires:       perl(RRDs)
 Requires:       perl(Storable)
 Requires:       perl(Taint::Runtime)
 Requires:       perl(Text::Balanced)
 Requires:       perl(Time::HiRes)
 Requires:       rrdtool
-Requires(pre):  shadow-utils
 %{?systemd_requires}
 
 BuildArch:      noarch
 
 # Some plugins are php or python3, remove them from autogenerated requires
 %global __requires_exclude ^/usr/bin/(php|python3)$
 
 
@@ -126,17 +125,16 @@ Requires:       firewalld-filesystem
 Requires:       hdparm
 Requires:       jo
 Requires:       perl(Cache::Cache)
 Requires:       perl(IO::Socket::INET6)
 Requires:       perl(Net::CIDR)
 Requires:       perl(Net::SSLeay)
 Requires:       perl(Net::Server)
 Requires:       procps-ng
-Requires(pre):  shadow-utils
 Requires(pre):  %{_sbindir}/semanage
 Requires(pre):  %{_sbindir}/restorecon
 %{?systemd_requires}
 BuildArch:      noarch
 
 
 %description node
 Munin is a highly flexible and powerful solution used to create graphs of
@@ -155,17 +153,16 @@ and is often done in a matter of minutes. You can also create plugins which
 relay information from other devices in your network that can't run Munin,
 such as a switch or a server running another operating system, by using
 SNMP or similar technology.
 
 
 %package common
 Summary:        Network-wide resource monitoring tool (common files)
 Requires:       acl
-Requires(pre):  shadow-utils
 %{?systemd_requires}
 BuildArch:      noarch
 
 
 %description common
 Munin is a highly flexible and powerful solution used to create graphs of
 virtually everything imaginable throughout your network, while still
 maintaining a rattling ease of installation and configuration.
@@ -260,16 +257,21 @@ sed -i -e 's,@@DBDIR@@,%{_sharedstatedir}/munin-node,g' node/_bin/munin-get.in
 %patch -P 101 -p1
 %patch -P 102 -p1
 %patch -P 103 -p1
 
 cp %SOURCE16 .
 cp %SOURCE17 .
 cp %SOURCE18 .
 
+# Create a sysusers.d config file
+cat >munin.sysusers.conf <<EOF
+u munin - 'Munin user' %{_sharedstatedir}/munin /bin/sh
+EOF
+
 
 %build
 make CONFIG=Makefile.config
 
 
 %install
 make CONFIG=Makefile.config DESTDIR=%{buildroot} install
 
@@ -390,21 +392,19 @@ touch %{buildroot}%{_localstatedir}/log/munin-node/munin-node.log
 
 ### Keep old apache munin.conf files (ghost) ###
 
 mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d
 touch %{buildroot}%{_sysconfdir}/httpd/conf.d/munin.conf
 touch %{buildroot}%{_sysconfdir}/httpd/conf.d/munin-cgi.conf
 touch %{buildroot}%{_sysconfdir}/munin/munin-htpasswd
 
+install -m0644 -D munin.sysusers.conf %{buildroot}%{_sysusersdir}/munin.conf
+
 
-%pre
-getent group munin >/dev/null || groupadd -r munin
-getent passwd munin >/dev/null || useradd -r -g munin -d %{_sharedstatedir}/munin -s /bin/sh -c "Munin user" munin
-exit 0
 
 
 %post
 # Create log files
 mkdir -p %{_localstatedir}/log/munin
 [ -f %{_localstatedir}/log/munin/munin-html.log ] || \
     /usr/bin/install -m 0640 -o munin -g adm /dev/null %{_localstatedir}/log/munin/munin-html.log
 [ -f %{_localstatedir}/log/munin/munin-limits.log ] || \
@@ -576,16 +576,17 @@ exit 0
 %attr(-, munin, munin) %dir %{_sharedstatedir}/munin/rrdcached
 %{_unitdir}/munin-rrdcached.service
 %dir %{_datadir}/munin/plugins
 %{_datadir}/munin/plugins/munin_stats
 %config(noreplace) %ghost %{_sysconfdir}/munin/munin-htpasswd
 %config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin.conf
 %config(noreplace) %ghost %{_sysconfdir}/httpd/conf.d/munin-cgi.conf
 %config(noreplace) %ghost %{_localstatedir}/www/html/munin/.htaccess
+%{_sysusersdir}/munin.conf
 
 
 %files node
 %doc %{_mandir}/man1/munin*
 %doc %{_mandir}/man3/Munin*
 %doc %{_mandir}/man5/munin-node.conf*
 %dir %{_sysconfdir}/munin
 %dir %{_sysconfdir}/munin/plugin-conf.d
@@ -654,16 +655,19 @@ exit 0
 %files cgi
 %{_unitdir}/munin-cgi-graph.service
 %{_unitdir}/munin-cgi-graph.socket
 %{_unitdir}/munin-cgi-html.service
 %{_unitdir}/munin-cgi-html.socket
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.0.76-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.76-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Oct 21 2024 Kim B. Heino <b@bbbs.net> - 2.0.76-3
 - Don't restart firewalld on package update, rhbz #2295597
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.76-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git mysql8.0/mysql8.0.spec mysql8.0/mysql8.0.spec.tmp
index d8fec16298..83fb612712 100644
--- mysql8.0/mysql8.0.spec
+++ mysql8.0/mysql8.0.spec.tmp
@@ -97,17 +97,17 @@
 %global obsolete_community_mysql_version 8.0.35-10
 %global community_mysql_version 8.0.36-1
 
 # Make long macros shorter
 %global sameevr   %{?epoch:%{epoch}:}%{version}-%{release}
 
 Name:             %{majorname}%{majorversion}
 Version:          %{package_version}
-Release:          3%{?with_debug:.debug}%{?dist}
+Release:          4%{?with_debug:.debug}%{?dist}
 Summary:          MySQL client programs and shared libraries
 URL:              http://www.mysql.com
 
 # Exceptions allow client libraries to be linked with most open source SW,
 # not only GPL code.  See README.mysql-license
 License:          GPL-2.0-or-later AND LGPL-2.1-only AND BSL-1.0 AND BSD-2-Clause
 
 Source0:          https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-boost-%{version}.tar.gz
@@ -382,17 +382,16 @@ Requires:         %{pkgname}-common = %{sameevr}
 Requires:         mariadb-connector-c-config
 %else
 Requires:         %{_sysconfdir}/my.cnf
 Requires:         %{_sysconfdir}/my.cnf.d
 %endif
 Requires:         %{pkgname}-errmsg = %{sameevr}
 %{?mecab:Requires: mecab-ipadic}
 Requires:         coreutils
-Requires(pre):    /usr/sbin/useradd
 # We require this to be present for %%{_tmpfilesdir}
 Requires:         systemd
 # Make sure it's there when scriptlets run, too
 %{?systemd_requires: %systemd_requires}
 # SYS_NICE capabilities; #1540946
 Recommends:       libcap
 # semanage
 Requires(post):   policycoreutils-python-utils
@@ -529,16 +528,21 @@ cat %{SOURCE52} | tee -a mysql-test/%{skiplist}
 cat %{SOURCE53} | tee -a mysql-test/%{skiplist}
 %endif
 
 
 
 cp %{SOURCE2} %{SOURCE3} %{SOURCE10} %{SOURCE11} %{SOURCE12} \
    %{SOURCE14} %{SOURCE15} %{SOURCE17} %{SOURCE18} %{SOURCE31} scripts
 
+# Create a sysusers.d config file
+cat >mysql8.0.sysusers.conf <<EOF
+u mysql 27 'MySQL Server' %{dbdatadir} -
+EOF
+
 %build
 # fail quickly and obviously if user tries to build as root
 %if %runselftest
     if [ x"$(id -u)" = "x0" ]; then
         echo "mysql's regression tests fail if run as root."
         echo "If you really need to build the RPM as root, use"
         echo "--nocheck to skip the regression tests."
         exit 1
@@ -725,16 +729,18 @@ french,german,greek,hungarian,italian,japanese,korean,norwegian,norwegian-ny,\
 polish,portuguese,romanian,russian,serbian,slovak,spanish,swedish,ukrainian}
 %endif
 
 %if ! %{with test}
 rm %{buildroot}%{_bindir}/{mysql_client_test,mysqlxtest,mysqltest_safe_process,zlib_decompress}
 rm -r %{buildroot}%{_datadir}/mysql-test
 %endif
 
+install -m0644 -D mysql8.0.sysusers.conf %{buildroot}%{_sysusersdir}/mysql8.0.conf
+
 
 
 %check
 %if %{with test}
 %if %runselftest
 pushd %_vpath_builddir
 # Note: disabling building of unittests to workaround #1989847
 #make test VERBOSE=1
@@ -779,20 +785,16 @@ export MTR_BUILD_THREAD=$(( $(date +%s) % 2200 ))
 popd
 popd
 
 %endif
 %endif
 
 
 
-%pre -n %{pkgname}-server
-/usr/sbin/groupadd -g 27 -o -r mysql >/dev/null 2>&1 || :
-/usr/sbin/useradd -M -N -g mysql -o -r -d %{dbdatadir} -s /sbin/nologin \
-  -c "MySQL Server" -u 27 mysql >/dev/null 2>&1 || :
 
 %post -n %{pkgname}-server
 %systemd_post %{daemon_name}.service
 if [ ! -e "%{logfile}" -a ! -h "%{logfile}" ] ; then
     install /dev/null -m0640 -omysql -gmysql "%{logfile}"
 fi
 
 %preun -n %{pkgname}-server
@@ -982,16 +984,17 @@ fi
 %{_tmpfilesdir}/%{daemon_name}.conf
 %attr(0755,mysql,mysql) %dir %{dbdatadir}
 %attr(0750,mysql,mysql) %dir %{_localstatedir}/lib/mysql-files
 %attr(0700,mysql,mysql) %dir %{_localstatedir}/lib/mysql-keyring
 %attr(0755,mysql,mysql) %dir %{pidfiledir}
 %attr(0750,mysql,mysql) %dir %{logfiledir}
 %attr(0640,mysql,mysql) %config %ghost %verify(not md5 size mtime) %{logfile}
 %config(noreplace) %{logrotateddir}/%{daemon_name}
+%{_sysusersdir}/mysql8.0.conf
 
 %if %{with devel}
 %files -n %{pkgname}-devel
 %{_bindir}/mysql_config*
 %exclude %{_bindir}/mysql_config_editor
 %{_includedir}/mysql
 %{_datadir}/aclocal/mysql.m4
 %dir %{_libdir}/mysql
@@ -1100,16 +1103,19 @@ fi
 %{_libdir}/mysql/plugin/test_services_command_services.so
 %{_libdir}/mysql/plugin/test_services_host_application_signal.so
 %{_libdir}/mysql/plugin/test_services_plugin_registry.so
 %{_libdir}/mysql/plugin/test_udf_services.so
 %{_libdir}/mysql/plugin/udf_example.so
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 8.0.40-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 8.0.40-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sun Dec 08 2024 Pete Walter <pwalter@fedoraproject.org> - 8.0.40-2
 - Rebuild for ICU 76
 
 * Mon Oct 21 2024 Lars Tangvald <lars.tangvald@oracle.com> - 8.0.40-1
 - Update to MySQL 8.0.40
RPMAutoSpec usage detected, not changing the spec file.
diff --git nats-server/nats-server.spec nats-server/nats-server.spec.tmp
index 69f71e2cc4..ab67889b60 100644
--- nats-server/nats-server.spec
+++ nats-server/nats-server.spec.tmp
@@ -24,51 +24,51 @@ Summary:        High-Performance server for NATS, the cloud native messaging sys
 
 # Upstream license specification: Apache-2.0
 License:        Apache-2.0
 URL:            %{gourl}
 Source0:        %{gosource}
 
 BuildRequires:  systemd-rpm-macros
 BuildRequires:  help2man
-Requires(pre):  shadow-utils
 
 %description
 %{common_description}
 
 %gopkg
 
 %prep
 %goprep
 
 %generate_buildrequires
 %go_generate_buildrequires
 
+# Create a sysusers.d config file
+cat >nats-server.sysusers.conf <<EOF
+u nats - 'NATS Server account' %{_sharedstatedir}/%{name} -
+EOF
+
 %build
 %gobuild -o %{gobuilddir}/bin/%{name} %{goipath}
 
 
 %install
 %gopkginstall
 install -m 0755 -vd                     %{buildroot}%{_sbindir}
 install -m 0755 -vp %{gobuilddir}/bin/* %{buildroot}%{_sbindir}/
 install -m 0755 -vd                     %{buildroot}%{_mandir}/man1
 help2man --no-discard-stderr --no-info --version-string=%{version} %{buildroot}%{_sbindir}/%{name} > %{buildroot}%{_mandir}/man1/%{name}.1
 install -m 0755 -vd                      %{buildroot}%{_unitdir}
 install -m 0755 -vp util/%{name}.service %{buildroot}%{_unitdir}/
 install -m 0755 -vd                         %{buildroot}%{_sysconfdir}
 install -m 0755 -vp docker/nats-server.conf %{buildroot}%{_sysconfdir}/
 mkdir -p %{buildroot}%{_sharedstatedir}/%{name}
 
-%pre
-getent group nats >/dev/null || groupadd -r nats
-getent passwd nats >/dev/null || \
-    useradd -r -g nats -d %{_sharedstatedir}/%{name} -s /sbin/nologin \
-    -c "NATS Server account" nats
-exit 0
+install -m0644 -D nats-server.sysusers.conf %{buildroot}%{_sysusersdir}/nats-server.conf
+
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %postun
@@ -87,11 +87,12 @@ exit 0
 %doc CODE-OF-CONDUCT.md GOVERNANCE.md MAINTAINERS.md README.md TODO.md
 %{_sbindir}/*
 %config(noreplace) %{_sysconfdir}/%{name}.conf
 %{_mandir}/man1/%{name}.1*
 %{_unitdir}/%{name}.service
 %attr(0750, nats, nats) %dir %{_sharedstatedir}/%{name}
 
 %gopkgfiles
+%{_sysusersdir}/nats-server.conf
 
 %changelog
 %autochangelog
diff --git netdata/netdata.spec netdata/netdata.spec.tmp
index cf9a896ee5..e656999fc8 100644
--- netdata/netdata.spec
+++ netdata/netdata.spec.tmp
@@ -51,17 +51,17 @@ ExcludeArch: s390x
 
 # el8 only
 %global judy_ver 1.0.5-netdata2
 
 %global netdata_conf_stock %{_prefix}/lib/%{name}
 
 Name:           netdata
 Version:        %{upver}%{?rcver:~%{rcver}}
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        Real-time performance monitoring
 # For a breakdown of the licensing, see license REDISTRIBUTED.md
 License:        GPL-3.0-or-later
 URL:            http://my-netdata.io
 Source0:        https://github.com/netdata/netdata/releases/download/v%{upver}%{?rcver:-%{rcver}}/%{name}-v%{upver}%{?rcver:-%{rcver}}.tar.gz
 # Use make-source.sh script to build tarball without closed source part
 #Source0:        %%{name}-%%{upver}%%{?rcver:-%%{rcver}}.tar.gz
 Source1:        netdata.tmpfiles.conf
@@ -172,18 +172,16 @@ queries, API calls, web site visitors, etc.
 netdata tries to visualize the truth of now, in its greatest detail,
 so that you can get insights of what is happening now and what just
 happened, on your systems and applications.
 
 %package data
 BuildArch:      noarch
 Summary:        Data files for netdata
 License:        GPL-3.0-or-later
-Requires:       /usr/sbin/useradd
-Requires:       /usr/sbin/groupadd
 Requires:       /usr/bin/systemctl
 
 %description data
 Data files for netdata
 
 %package conf
 BuildArch:      noarch
 Summary:        Configuration files for netdata
@@ -227,16 +225,22 @@ cp %{SOURCE5} .
 ### BEGIN go.d.plugin
 %if %{with plugin_go}
 pushd src/go
 tar -xf %{SOURCE20}
 popd
 %endif
 ### END go.d.plugin
 
+# Create a sysusers.d config file
+cat >netdata.sysusers.conf <<EOF
+u netdata - 'NetData User' /var/log/%{name} -
+m netdata systemd-journal
+EOF
+
 
 %build
 %cmake -G Ninja \
     -DCMAKE_INSTALL_PREFIX=/ \
 %if 0%{?rhel} && 0%{?rhel} == 8
     -DUSE_CXX_11=On \
     -DENABLE_CLOUD=Off \
 %else
@@ -341,22 +345,21 @@ sed -i -e '/NETDATA_STOCK_CONFIG_DIR/s;@STOCK_CONFIG_DIR@;%{netdata_conf_stock};
     
 rm -f %{buildroot}%{_sysconfdir}/%{name}/netdata-updater.conf
 rm -f %{buildroot}%{_libexecdir}/%{name}/netdata-updater.sh
 rm -rf %{buildroot}%{_prefix}/lib/netdata/system
 rm -rf %{buildroot}%{_localstatedir}/lib/%{name}/config
 
 cp -a %{buildroot}%{_datadir}/%{name}/web/v1/index.html %{buildroot}%{_datadir}/%{name}/web/index.html
 
+install -m0644 -D netdata.sysusers.conf %{buildroot}%{_sysusersdir}/netdata.conf
+
 %check
 %ctest
 
-%pre data
-getent group netdata > /dev/null || groupadd -r netdata
-getent passwd netdata > /dev/null || useradd -r -g netdata -G systemd-journal -c "NetData User" -s /sbin/nologin -d /var/log/%{name} netdata
 
 %post
 sed -i -e '/web files group/ s/root/netdata/' /etc/netdata/netdata.conf ||:
 sed -i -e '/stock config directory/ s;/etc/netdata/conf.d;/usr/lib/netdata/conf.d;' /etc/netdata/netdata.conf ||:
 sed -i -e '/stock health configuration directory/ s;/etc/netdata/conf.d/health.d;/usr/lib/netdata/conf.d/health.d;' /etc/netdata/netdata.conf ||:
 %systemd_post %{name}.service
 %tmpfiles_create %{name}.conf
 echo "Netdata config should be edited with %{_libexecdir}/%{name}/edit-config"
@@ -457,32 +460,36 @@ echo "Netdata config should be edited with %{_libexecdir}/%{name}/edit-config"
 %{_libexecdir}/%{name}/edit-config
 %{_sysconfdir}/netdata/.install-type
 
 %files data
 %doc README.md
 %license LICENSE REDISTRIBUTED.md
 %dir %{_datadir}/%{name}
 %attr(-, root, netdata) %{_datadir}/%{name}/web
+%{_sysusersdir}/netdata.conf
 
 %files freeipmi
 %doc README.md
 %license LICENSE REDISTRIBUTED.md
 %caps(cap_setuid=ep) %attr(4750,root,netdata) %{_libexecdir}/%{name}/plugins.d/freeipmi.plugin
 
 %if %{with plugin_go}
 %files go.d.plugin
 %doc README.md
 %license LICENSE REDISTRIBUTED.md
 %caps(cap_dac_read_search,cap_net_admin,cap_net_raw=eip) %attr(0750,root,netdata) %{_libexecdir}/%{name}/plugins.d/go.d.plugin
 %caps(cap_setuid=ep)%attr(4750,root,netdata) %{_libexecdir}/%{name}/plugins.d/ndsudo
 %endif
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.1.1-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.1-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Jan 07 2025 Didier Fabert <didier.fabert@gmail.com> 2.1.1-1
 - Update from upstream
 
 * Sat Dec 21 2024 Didier Fabert <didier.fabert@gmail.com> 2.1.0-3
 - go-module cannot be built in fc40
diff --git NetworkManager-fortisslvpn/NetworkManager-fortisslvpn.spec NetworkManager-fortisslvpn/NetworkManager-fortisslvpn.spec.tmp
index 42393b0bd3..a5b4e6dd54 100644
--- NetworkManager-fortisslvpn/NetworkManager-fortisslvpn.spec
+++ NetworkManager-fortisslvpn/NetworkManager-fortisslvpn.spec.tmp
@@ -3,17 +3,17 @@
 %global shortcommit %(c=%{commit}; echo ${c:0:7})
 
 %global ppp_version %(pkg-config --modversion pppd 2>/dev/null || echo bad)
 %global __provides_exclude ^libnm-.*\\.so
 
 Summary:    NetworkManager VPN plugin for Fortinet compatible SSLVPN
 Name:       NetworkManager-fortisslvpn
 Version:    1.4.1
-Release:    8.%{date}git%{shortcommit}%{?dist}
+Release:    9.%{date}git%{shortcommit}%{?dist}
 License:    GPL-2.0-or-later
 URL:        http://www.gnome.org/projects/NetworkManager/
 
 Source0:    https://gitlab.gnome.org/GNOME/%{name}/-/archive/%{commit}/%{name}-%{shortcommit}.tar.gz
 
 BuildRequires:  make
 BuildRequires:  gcc
 BuildRequires:  gtk3-devel >= 3.4
@@ -47,16 +47,21 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
 
 %description -n NetworkManager-fortisslvpn-gnome
 This package contains software for integrating VPN capabilities with
 the Fortinet compatible SSLVPN server with NetworkManager (GNOME files).
 
 %prep
 %autosetup -p1 -n %{name}-%{commit}
 
+# Create a sysusers.d config file
+cat >networkmanager-fortisslvpn.sysusers.conf <<EOF
+u nm-fortisslvpn - 'Default user for running openfortivpn spawned by NetworkManager' / -
+EOF
+
 %build
 autoreconf -fi
 %configure \
   --disable-static \
   --with-gtk4 \
   --with-pppd-plugin-dir=%{_libdir}/pppd/%{ppp_version} \
   --with-dist-version=%{version}-%{release}
 
@@ -70,40 +75,40 @@ make check
 
 rm -f %{buildroot}%{_libdir}/NetworkManager/lib*.la
 rm -f %{buildroot}%{_libdir}/pppd/%{ppp_version}/*.la
 
 mv %{buildroot}%{_sysconfdir}/dbus-1 %{buildroot}%{_datadir}/
 
 %find_lang %{name}
 
-%pre
-getent group nm-fortisslvpn >/dev/null || groupadd -r nm-fortisslvpn
-getent passwd nm-fortisslvpn >/dev/null || \
-        useradd -r -g nm-fortisslvpn -d / -s /sbin/nologin \
-        -c "Default user for running openfortivpn spawned by NetworkManager" nm-fortisslvpn
-exit 0
+install -m0644 -D networkmanager-fortisslvpn.sysusers.conf %{buildroot}%{_sysusersdir}/networkmanager-fortisslvpn.conf
+
 
 %files -f %{name}.lang
 %license COPYING
 %doc AUTHORS README ChangeLog
 %{_libdir}/NetworkManager/libnm-vpn-plugin-fortisslvpn.so
 %{_datadir}/dbus-1/system.d/nm-fortisslvpn-service.conf
 %{_prefix}/lib/NetworkManager/VPN/nm-fortisslvpn-service.name
 %{_libexecdir}/nm-fortisslvpn-pinentry
 %{_libexecdir}/nm-fortisslvpn-service
 %{_libdir}/pppd/%{ppp_version}/nm-fortisslvpn-pppd-plugin.so
 %{_sharedstatedir}/NetworkManager-fortisslvpn
+%{_sysusersdir}/networkmanager-fortisslvpn.conf
 
 %files -n NetworkManager-fortisslvpn-gnome
 %{_libexecdir}/nm-fortisslvpn-auth-dialog
 %{_libdir}/NetworkManager/lib*.so*
 %{_datadir}/metainfo/network-manager-fortisslvpn.metainfo.xml
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.4.1-9.20231021gite201da5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.1-8.20231021gite201da5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Nov 27 2024 Adam Williamson <awilliam@redhat.com> - 1.4.1-7.20231021gite201da5
 - Rebuild for ppp 2.5.1
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.1-6.20231021gite201da5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git NetworkManager-openconnect/NetworkManager-openconnect.spec NetworkManager-openconnect/NetworkManager-openconnect.spec.tmp
index ea0f8b1564..3632e70297 100644
--- NetworkManager-openconnect/NetworkManager-openconnect.spec
+++ NetworkManager-openconnect/NetworkManager-openconnect.spec.tmp
@@ -19,17 +19,17 @@
 
 %global nm_version          1.2.0
 %global gtk3_version        3.4.0
 %global openconnect_version 9.01
 
 Summary:   NetworkManager VPN plugin for openconnect
 Name:      NetworkManager-openconnect
 Version:   1.2.10
-Release:   7%{?dist}
+Release:   8%{?dist}
 License:   GPL-2.0-or-later AND LGPL-2.1-only
 URL:       http://www.gnome.org/projects/NetworkManager/
 Source:    https://download.gnome.org/sources/NetworkManager-openconnect/1.2/%{name}-%{version}.tar.xz
 
 BuildRequires: make
 BuildRequires: gcc
 BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version}
 BuildRequires: pkgconfig(libnm) >= %{nm_version}
@@ -55,18 +55,16 @@ BuildRequires: pkgconfig(webkit2gtk-4.1)
 BuildRequires: pkgconfig(webkit2gtk-4.0)
 %endif
 
 Requires: NetworkManager   >= %{nm_version}
 Requires: openconnect      >= %{openconnect_version}
 Requires: dbus-common
 Obsoletes: NetworkManager-openconnect < 1.2.3-0
 
-Requires(pre): %{_sbindir}/useradd
-Requires(pre): %{_sbindir}/groupadd
 
 %global __provides_exclude ^libnm-.*\\.so
 
 %description
 This package contains software for integrating the openconnect VPN software
 with NetworkManager and the GNOME desktop
 
 %package gnome
@@ -77,16 +75,21 @@ Obsoletes: NetworkManager-openconnect < 1.2.3-0
 
 %description gnome
 This package contains software for integrating VPN capabilities with
 the OpenConnect client with NetworkManager (GNOME files).
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >networkmanager-openconnect.sysusers.conf <<EOF
+u nm-openconnect - 'NetworkManager user for OpenConnect' / -
+EOF
+
 %build
 %configure \
         --enable-more-warnings=yes \
         --disable-static \
 %if %{with libnm_glib}
         --with-libnm-glib \
 %else
         --without-libnm-glib \
@@ -99,21 +102,18 @@ make %{?_smp_mflags}
 
 %install
 make install DESTDIR=%{buildroot}
 
 rm -f %{buildroot}%{_libdir}/NetworkManager/lib*.la
 
 %find_lang %{name}
 
-%pre
-%{_sbindir}/groupadd -r nm-openconnect &>/dev/null || :
-%{_sbindir}/useradd  -r -s /sbin/nologin -d / -M \
-                     -c 'NetworkManager user for OpenConnect' \
-                     -g nm-openconnect nm-openconnect &>/dev/null || :
+install -m0644 -D networkmanager-openconnect.sysusers.conf %{buildroot}%{_sysusersdir}/networkmanager-openconnect.conf
+
 
 %if 0%{?rhel} && 0%{?rhel} <= 7
 %post
 /usr/bin/update-desktop-database &> /dev/null || :
 touch --no-create %{_datadir}/icons/hicolor
 if [ -x %{_bindir}/gtk-update-icon-cache ]; then
       %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
 fi
@@ -129,16 +129,17 @@ fi
 %files -f %{name}.lang
 %{_libdir}/NetworkManager/libnm-vpn-plugin-openconnect.so
 %{_datadir}/dbus-1/system.d/nm-openconnect-service.conf
 %{_prefix}/lib/NetworkManager/VPN/nm-openconnect-service.name
 %{_libexecdir}/nm-openconnect-service
 %{_libexecdir}/nm-openconnect-service-openconnect-helper
 %doc AUTHORS ChangeLog NEWS
 %license COPYING
+%{_sysusersdir}/networkmanager-openconnect.conf
 
 %files gnome
 %{_libexecdir}/nm-openconnect-auth-dialog
 %{_libdir}/NetworkManager/libnm-vpn-plugin-openconnect-editor.so
 %{_datadir}/metainfo/network-manager-openconnect.metainfo.xml
 
 %if %with gtk4
 %{_libdir}/NetworkManager/libnm-gtk4-vpn-plugin-openconnect-editor.so
@@ -146,16 +147,19 @@ fi
 
 %if %{with libnm_glib}
 %{_libdir}/NetworkManager/libnm-*-properties.so
 %{_sysconfdir}/NetworkManager/VPN/nm-openconnect-service.name
 %endif
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.2.10-8
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.10-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.10-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.10-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git NetworkManager-openvpn/NetworkManager-openvpn.spec NetworkManager-openvpn/NetworkManager-openvpn.spec.tmp
index 3c9414c0e0..7c469ee902 100644
--- NetworkManager-openvpn/NetworkManager-openvpn.spec
+++ NetworkManager-openvpn/NetworkManager-openvpn.spec.tmp
@@ -3,17 +3,17 @@
 %else
 %bcond_without gtk4
 %endif
 
 Summary:   NetworkManager VPN plugin for OpenVPN
 Name:      NetworkManager-openvpn
 Epoch:     1
 Version:   1.12.0
-Release:   3%{?dist}
+Release:   4%{?dist}
 License:   GPL-2.0-or-later
 URL:       http://www.gnome.org/projects/NetworkManager/
 
 Source0:   https://download.gnome.org/sources/NetworkManager-openvpn/1.12/%{name}-%{version}.tar.xz
 #Patch1: 0001-example.patch
 
 
 BuildRequires: make
@@ -26,17 +26,16 @@ BuildRequires: libsecret-devel
 
 %if %with gtk4
 BuildRequires: libnma-gtk4-devel
 %endif
 
 Requires: dbus
 Requires: NetworkManager >= 1:1.46.2
 Requires: openvpn
-Requires(pre): shadow-utils
 Obsoletes: NetworkManager-openvpn < 1:0.9.8.2-3
 
 
 %global __provides_exclude ^libnm-.*\\.so
 
 
 %description
 This package contains software for integrating VPN capabilities with
@@ -54,16 +53,21 @@ Obsoletes: NetworkManager-openvpn < 1:0.9.8.2-3
 %description -n NetworkManager-openvpn-gnome
 This package contains software for integrating VPN capabilities with
 the OpenVPN server with NetworkManager (GNOME files).
 
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >networkmanager-openvpn.sysusers.conf <<EOF
+u nm-openvpn - 'Default user for running openvpn spawned by NetworkManager' / -
+EOF
+
 
 %build
 if [ ! -f configure ]; then
   ./autogen.sh
 fi
 %configure \
         --disable-static \
 %if %with gtk4
@@ -74,51 +78,51 @@ fi
 make %{?_smp_mflags}
 
 
 %check
 make check
 
 
 %pre
-getent group nm-openvpn >/dev/null || groupadd -r nm-openvpn
-getent passwd nm-openvpn >/dev/null || \
-    useradd -r -g nm-openvpn -d / -s /sbin/nologin \
-    -c "Default user for running openvpn spawned by NetworkManager" nm-openvpn
-exit 0
-
 
 %install
 make install DESTDIR=%{buildroot} INSTALL="%{__install} -p"
 
 rm -f %{buildroot}%{_libdir}/NetworkManager/lib*.la
 
 %find_lang %{name}
 
+install -m0644 -D networkmanager-openvpn.sysusers.conf %{buildroot}%{_sysusersdir}/networkmanager-openvpn.conf
+
 %files -f %{name}.lang
 %{_libdir}/NetworkManager/libnm-vpn-plugin-openvpn.so
 %{_datadir}/dbus-1/system.d/nm-openvpn-service.conf
 %{_prefix}/lib/NetworkManager/VPN/nm-openvpn-service.name
 %{_libexecdir}/nm-openvpn-service
 %{_libexecdir}/nm-openvpn-service-openvpn-helper
 %doc AUTHORS README
 %license COPYING
+%{_sysusersdir}/networkmanager-openvpn.conf
 
 
 %files -n NetworkManager-openvpn-gnome
 %{_libexecdir}/nm-openvpn-auth-dialog
 %{_libdir}/NetworkManager/libnm-vpn-plugin-openvpn-editor.so
 %{_datadir}/metainfo/network-manager-openvpn.metainfo.xml
 
 %if %with gtk4
 %{_libdir}/NetworkManager/libnm-gtk4-vpn-plugin-openvpn-editor.so
 %endif
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1:1.12.0-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1:1.12.0-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:1.12.0-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Mon Jun 24 2024 Íñigo Huguet <ihuguet@redhat.com> - 1:1.12.0-1
 - Update to 1.12.0 release
diff --git newscache/newscache.spec newscache/newscache.spec.tmp
index d9439db2a2..32d7ae2284 100644
--- newscache/newscache.spec
+++ newscache/newscache.spec.tmp
@@ -1,32 +1,31 @@
 %define srcnamever	NewsCache-1.2rc6
 %define socketver	1.12.13
 
 Name: 		newscache
 Summary: 	Free cache server for USENET News
 Version: 	1.2
-Release: 	0.49.rc6%{?dist}
+Release: 	0.50.rc6%{?dist}
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:	GPL-2.0-or-later
 URL:		http://www.linuxhacker.at/newscache/
 Source0: 	http://src.linuxhacker.at/NewsCache/%{srcnamever}.tar.gz
 Source1:	http://src.linuxhacker.at/socket++/socket++-%{socketver}.tar.gz
 Source2:	%{name}.init
 Source3:	%{name}.service
 Patch1:		newscache-1.2rc6-config.patch
 Patch2:		newscache-1.2rc6-gcc43.patch
 Patch3:		socket++-1.12.12-drop_doc.patch
 Patch4:		newscache-glibc.patch
 BuildRequires: make
 BuildRequires:  gcc-c++
 BuildRequires:	libtool, texinfo, pam-devel
 BuildRequires:	systemd-units
 
-Requires(pre): shadow-utils
 Requires(post):	systemd-units
 Requires(preun): systemd-units
 Requires(postun): systemd-units
 
 
 
 %description
 NewsCache is a free cache server for USENET News. NewsCache acts to
@@ -52,16 +51,21 @@ mkdir -p too/deep
 mv socket++-%{socketver} too/deep
 
 pushd too/deep/socket++-%{socketver}
 %patch -P3 -p1
 popd
 
 %patch -P4 -p1
 
+# Create a sysusers.d config file
+cat >newscache.sysusers.conf <<EOF
+u news - 'News user' /etc/news -
+EOF
+
 %build
 
 # socket++ is a library from the same site as NewScache.
 # While it is used by newscache only, there is no reason
 # to ship it separately.
 
 pushd too/deep/socket++-%{socketver}
 ./autogen
@@ -116,23 +120,19 @@ pushd $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily
 cat <<EOF >%{name}
 #!/bin/bash
 /usr/sbin/newscacheclean
 
 EOF
 chmod 755 %{name}
 popd
 
+install -m0644 -D newscache.sysusers.conf %{buildroot}%{_sysusersdir}/newscache.conf
 
-%pre
 
-getent group news >/dev/null || groupadd -r news
-getent passwd news >/dev/null || \
-    useradd -r -g news -d /etc/news -s /sbin/nologin -c 'News user' news
-exit 0
 
 
 %post
 %systemd_post %{name}.service
 
 
 %preun
 %systemd_preun %{name}.service
@@ -150,19 +150,23 @@ exit 0
 %config(noreplace) %{_sysconfdir}/cron.daily/*
 #%config(noreplace) %{_initrddir}/*
 %{_unitdir}/%{name}.service
 %{_bindir}/*
 %{_sbindir}/*
 %doc AUTHORS COPYING NEWS README THANKS TODO
 %doc doc/newscache*.txt etc/*-dist
 %{_mandir}/*/*
+%{_sysusersdir}/newscache.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.2-0.50.rc6
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-0.49.rc6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 1.2-0.48.rc6
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-0.47.rc6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git nginx/nginx.spec nginx/nginx.spec.tmp
index 34ec48e3e3..762b98ae29 100644
--- nginx/nginx.spec
+++ nginx/nginx.spec.tmp
@@ -172,17 +172,16 @@ Requires:          nginx-mod-mail = %{epoch}:%{version}-%{release}
 Requires:          nginx-mod-stream = %{epoch}:%{version}-%{release}
 
 %description all-modules
 Meta package that installs all available nginx modules.
 
 %package filesystem
 Summary:           The basic directory layout for the Nginx server
 BuildArch:         noarch
-Requires(pre):     shadow-utils
 
 %description filesystem
 The nginx-filesystem package contains the basic directory layout
 for the Nginx server including the correct permissions for the
 directories.
 
 %if %{with geoip}
 %package mod-http-geoip
@@ -280,16 +279,21 @@ sed \
   -e 's|\(ngx_feature_libs="\)|\1-L%{_libdir}/openssl%{openssl_pkgversion} |' \
   -i auto/lib/openssl/conf
 %endif
 
 # Prepare sources for installation
 cp -a ../%{name}-%{version} ../%{name}-%{version}-%{release}-src
 mv ../%{name}-%{version}-%{release}-src .
 
+# Create a sysusers.d config file
+cat >nginx.sysusers.conf <<EOF
+u nginx - 'Nginx web server' %{_localstatedir}/lib/nginx -
+EOF
+
 
 %build
 # nginx does not utilize a standard configure script.  It has its own
 # and the standard configure options cause the nginx configure script
 # to error out.  This is is also the reason for the DESTDIR environment
 # variable.
 export DESTDIR=%{buildroot}
 # So the perl module finds its symbols:
@@ -467,23 +471,19 @@ sed -e "s|@@NGINX_ABIVERSION@@|%{nginx_abiversion}|g" \
 ## Install dependency generator
 install -Dpm0644 %{SOURCE16} %{buildroot}%{_fileattrsdir}/nginxmods.attr
 
 # install http-ssl-pass-dialog
 mkdir -p $RPM_BUILD_ROOT%{_libexecdir}
 install -m755 $RPM_SOURCE_DIR/nginx-ssl-pass-dialog \
         $RPM_BUILD_ROOT%{_libexecdir}/nginx-ssl-pass-dialog
 
+install -m0644 -D nginx.sysusers.conf %{buildroot}%{_sysusersdir}/nginx.conf
+
 
-%pre filesystem
-getent group %{nginx_user} > /dev/null || groupadd -r %{nginx_user}
-getent passwd %{nginx_user} > /dev/null || \
-    useradd -r -d %{_localstatedir}/lib/nginx -g %{nginx_user} \
-    -s /sbin/nologin -c "Nginx web server" %{nginx_user}
-exit 0
 
 %post
 %systemd_post nginx.service
 
 %if %{with geoip}
 %post mod-http-geoip
 if [ $1 -eq 1 ]; then
     /usr/bin/systemctl reload nginx.service >/dev/null 2>&1 || :
@@ -575,16 +575,17 @@ fi
 %files filesystem
 %dir %{_datadir}/nginx
 %dir %{_datadir}/nginx/html
 %dir %{_sysconfdir}/nginx
 %dir %{_sysconfdir}/nginx/conf.d
 %dir %{_sysconfdir}/nginx/default.d
 %dir %{_sysconfdir}/systemd/system/nginx.service.d
 %dir %{_unitdir}/nginx.service.d
+%{_sysusersdir}/nginx.conf
 
 %if %{with geoip}
 %files mod-http-geoip
 %{nginx_moduleconfdir}/mod-http-geoip.conf
 %{nginx_moduledir}/ngx_http_geoip_module.so
 %endif
 
 %files mod-http-image-filter
diff --git ngircd/ngircd.spec ngircd/ngircd.spec.tmp
index 3ee38496e2..c6bf7919a2 100644
--- ngircd/ngircd.spec
+++ ngircd/ngircd.spec.tmp
@@ -1,11 +1,11 @@
 Name:           ngircd
 Version:        27
-Release:        4%{?dist}
+Release:        5%{?dist}
 Summary:        Next Generation IRC Daemon
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:        GPL-2.0-or-later
 URL:            http://ngircd.barton.de/
 Source0:        http://ngircd.barton.de/pub/ngircd/ngircd-%{version}.tar.gz
 Source1:        ngircd.init
 Source2:        ngircd.service
 # Listen only on localhost by default, set user/group
@@ -23,26 +23,30 @@ BuildRequires:  gnutls-devel
 BuildRequires:  pam-devel
 # Needed for tests
 BuildRequires:  expect procps-ng telnet openssl
 BuildRequires: systemd
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 
-Requires(pre): shadow-utils
 
 %description
 ngIRCd is a free open source daemon for Internet Relay Chat (IRC), 
 developed under the GNU General Public License (GPL). It's written from 
 scratch and is not based upon the original IRCd like many others.
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >ngircd.sysusers.conf <<EOF
+u ngircd - 'Next Generation IRC Daemon' /tmp/ -
+EOF
+
 %build
 %configure \
 	--with-syslog \
 	--with-zlib \
 	--with-epoll \
 	--with-gnutls \
 	--with-pam \
 	--enable-ipv6
@@ -60,25 +64,21 @@ install -D -m 660 doc/sample-ngircd.conf %{buildroot}%{_sysconfdir}/ngircd.conf
 mkdir -p %{buildroot}%{_sysconfdir}/pam.d
 install -D -m 660 ./contrib/Debian/ngircd.pam %{buildroot}%{_sysconfdir}/pam.d/ngircd
 
 touch  %{buildroot}%{_sysconfdir}/ngircd.motd
 rm %{buildroot}%{_docdir}/ngircd/INSTALL.md
 mkdir -p %{buildroot}%{_tmpfilesdir}
 echo d /run/ngircd 0750 ngircd ngircd - > %{buildroot}%{_tmpfilesdir}/ngircd.conf
 
+install -m0644 -D ngircd.sysusers.conf %{buildroot}%{_sysusersdir}/ngircd.conf
+
 %check
 make check
 
-%pre
-getent group ngircd >/dev/null || groupadd -r ngircd
-getent passwd ngircd >/dev/null || \
-    useradd -r -g ngircd -d /tmp/ -s /sbin/nologin \
-    -c "Next Generation IRC Daemon" ngircd
-exit 0
 
 %post
 %systemd_post ngircd.service
 
 %preun
 %systemd_preun ngircd.service
 
 %postun
@@ -91,18 +91,22 @@ exit 0
 %config(noreplace) %attr(660, root, ngircd) %{_sysconfdir}/pam.d/ngircd
 %ghost %config(noreplace) %attr(660, root, ngircd) %{_sysconfdir}/ngircd.motd
 %{_unitdir}/ngircd.service
 %{_sbindir}/ngircd
 %{_docdir}/ngircd/
 %{_mandir}/man5/ngircd.conf*
 %{_mandir}/man8/ngircd.8*
 %{_tmpfilesdir}/ngircd.conf
+%{_sysusersdir}/ngircd.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 27-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 27-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 27-3
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 27-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git noip/noip.spec noip/noip.spec.tmp
index 4615508070..29a162a458 100644
--- noip/noip.spec
+++ noip/noip.spec.tmp
@@ -1,21 +1,20 @@
 Name:		noip
 Version:	2.1.9
-Release:	42%{?dist}
+Release:	43%{?dist}
 Summary:	A dynamic DNS update client
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:	GPL-2.0-or-later
 URL:		http://www.no-ip.com
 Source0:	http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
 Source1:	noip.service
 # Patch for Fedora specifics 
 Patch0:		noip.patch
 
-Requires(pre):		shadow-utils
 %{?systemd_requires}
 BuildRequires: make
 BuildRequires: systemd
 BuildRequires: gcc
 
 %description
 Keep your current IP address in sync with your No-IP host or domain with 
 this Dynamic Update Client (DUC). The client continually checks for IP 
@@ -26,53 +25,58 @@ N.B. You need to run
 	%# noip2 -C
 before starting the service.
 
 %prep
 %setup -q -n %{name}-%{version}-1
 %patch -P0 -p1
 sed -i 's|@OPTFLAGS@|%{optflags}|g;s|@SBINDIR@|%{buildroot}%{_sbindir}|g;s|@SYSCONFDIR@|%{buildroot}%{_sysconfdir}|g' Makefile
 
+# Create a sysusers.d config file
+cat >noip.sysusers.conf <<EOF
+u noip - 'No-ip daemon user' /var/run/noip -
+EOF
+
 %build
 make %{?_smp_mflags}
 
 %install
 install -D -p -m 755 noip2 %{buildroot}/%{_sbindir}/noip2
 
 # Make dummy config file 
 mkdir -p %{buildroot}/%{_sysconfdir}
 touch %{buildroot}/%{_sysconfdir}/no-ip2.conf
 
 install -Dm644  %{SOURCE1} %{buildroot}%{_unitdir}/noip.service
 # Install init script
 #install -D -p -m 755 redhat.noip.sh %{buildroot}%{_initrddir}/noip
 
-%pre
-# Add noip user & group
-getent group noip >/dev/null || groupadd -r noip
-getent passwd noip >/dev/null || \
-	useradd -r -g noip -d /var/run/noip -s /sbin/nologin \
-	-c "No-ip daemon user" noip
+install -m0644 -D noip.sysusers.conf %{buildroot}%{_sysusersdir}/noip.conf
+
 
 %post
 %systemd_post noip.service
 
 %preun
 %systemd_preun noip.service
 
 %postun
 %systemd_postun_with_restart noip.service
 
 %files
 %doc COPYING README.FIRST
 %{_sbindir}/noip2
 %attr(600,noip,noip) %config(noreplace) %{_sysconfdir}/no-ip2.conf
 %{_unitdir}/noip.service
+%{_sysusersdir}/noip.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.1.9-43
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.9-42
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 2.1.9-41
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.9-40
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git nqc/nqc.spec nqc/nqc.spec.tmp
index 51303752eb..6ea69cd665 100644
--- nqc/nqc.spec
+++ nqc/nqc.spec.tmp
@@ -1,11 +1,11 @@
 Name:           nqc
 Version:        3.1.7
-Release:        38%{?dist}
+Release:        39%{?dist}
 Summary:        Not Quite C compiler
 
 # Automatically converted from old format: MPLv1.0 - review is highly recommended.
 License:        LicenseRef-Callaway-MPLv1.0
 URL:            http://bricxcc.sourceforge.net/nqc/
 Source0:        http://bricxcc.sourceforge.net/nqc/release/nqc-3.1.r6.tgz
 Source1:        60-legousbtower.rules
 Source2:        http://bricxcc.sourceforge.net/nqc/doc/faq.html
@@ -22,17 +22,16 @@ Source12:       http://people.cs.uu.nl/markov/lego/tutorial_t.doc
 Source13:       http://people.cs.uu.nl/markov/lego/tutorial_p.pdf
 Patch0:         nqc-3.1.6-linux.patch
 Patch1:         nqc-3.1.6.gcc47.patch
 Patch2:         nqc-3.1.6-unistd.patch
 BuildRequires: make
 BuildRequires:  gcc-c++
 BuildRequires:  flex >= 2.5 
 BuildRequires:  byacc
-Requires(pre):  %{_sbindir}/groupadd
 
 %description
 Not Quite C is a simple language with a C-like syntax that can be used to
 program Lego's RCX programmable brick (from the Mindstorms set).
 
 %package        doc
 Summary:        English Documentation for NQC
 Supplements:    (%{name} = %{version}-%{release} and langpacks-en)
@@ -110,39 +109,46 @@ done
 %{__mkdir} tutorial_files
 %{__unzip} -qq -a %{SOURCE6} -d tutorial_files
 
 
 # This piece of software seems to come from the Dark Side. Fix permissions and
 # line endings.
 find -type f -exec chmod 644 {} \; -exec perl -pi -e 's/\r\n/\n/g' {} \;
 
+# Create a sysusers.d config file
+cat >nqc.sysusers.conf <<EOF
+g lego -
+EOF
+
 
 %build
 %{__make} %{?_smp_mflags}
 
 
 %install
 %{__rm} -rf %{buildroot}
 %{__make} install PREFIX=%{buildroot}%{_prefix} MANDIR=%{buildroot}%{_mandir}/man1
 %{__rm} %{buildroot}%{_bindir}/mkdata
 %{__install} -p -m 644 -D %{SOURCE1} %{buildroot}/lib/udev/rules.d/60-legousbtower.rules
 
+install -m0644 -D nqc.sysusers.conf %{buildroot}%{_sysusersdir}/nqc.conf
+
 
 %pre
 if [ $1 -eq 1 ]; then
-  %{_sbindir}/groupadd -f -r lego &>/dev/null || :
 fi
 
 
 %files
 %{_bindir}/nqc
 %{_mandir}/man1/nqc.1.gz
 /lib/udev/rules.d/60-legousbtower.rules
 %doc readme.txt LICENSE
+%{_sysusersdir}/nqc.conf
 
 %files doc
 %doc scout.txt history.txt test.nqc
 %doc faq.html NQC_Manual.pdf NQC_Guide.pdf NQC_Tutorial.pdf tutorial_files/
 
 %files doc-nl
 %lang(nl) %doc nqc-tutorial-nl.doc
 
@@ -160,16 +166,19 @@ fi
 
 %files doc-th
 %lang(th) %doc nqc-tutorial-th.doc
 
 %files doc-pt
 %lang(pt) %doc nqc-tutorial-pt.pdf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.1.7-39
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.7-38
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Sep 02 2024 Miroslav Suchý <msuchy@redhat.com> - 3.1.7-37
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.7-36
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git nrpe/nrpe.spec nrpe/nrpe.spec.tmp
index 5d263d728b..8952956ebc 100644
--- nrpe/nrpe.spec
+++ nrpe/nrpe.spec.tmp
@@ -3,19 +3,19 @@
 %global commit 4f7dd1199f1f3f72f9197e8565da339a4a2490b7
 %global shortcommit %(c=%{commit}; echo ${c:0:7})
 %global commdate 20200423
 %global fromgit 0
 
 Name: nrpe
 Version: 4.1.3
 %if 0%{?fromgit}
-Release: 2%{?dist}
+Release: 3%{?dist}
 %else
-Release: 2%{?dist}
+Release: 3%{?dist}
 %endif
 Summary: Host/service/network monitoring agent for Nagios
 
 # Automatically converted from old format: GPLv2 - review is highly recommended.
 License: GPL-2.0-only
 URL: http://www.nagios.org
 %if 0%{?fromgit}
 Source0: https://github.com/NagiosEnterprises/nrpe/archive/%{commit}/%{name}-%{shortcommit}.tar.gz
@@ -43,17 +43,17 @@ BuildRequires: openssl, openssl-devel
 %if 0%{?fedora} >= 40
 BuildRequires: openssl-devel-engine
 %endif
 
 %if 0%{?fedora} < 28 && 0%{?rhel} < 8
 BuildRequires: tcp_wrappers-devel
 %endif
 
-Requires(pre): %{_sbindir}/useradd, %{_sbindir}/usermod
+Requires(pre): %{_sbindir}/usermod
 
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 
 # owns /etc/nagios
 Requires: nagios-common
 Provides: nagios-nrpe = %{version}-%{release}
@@ -95,16 +95,22 @@ SElinux context for %{name}.
 
 %prep
 %if 0%{fromgit}
 %autosetup -p1 -n %{name}-%{commit}
 %else
 %autosetup -p1 -n %{name}-%{name}-%{version}
 %endif
 
+# Create a sysusers.d config file
+cat >nrpe.sysusers.conf <<EOF
+u nrpe - 'NRPE user for the NRPE service' %{_localstatedir}/run/%{name} -
+m nrpe nagios
+EOF
+
 %build
 CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" LDFLAGS="%{?__global_ldflags}" \
 %configure \
     --with-nrpe-port=%{nsport} \
     --with-nrpe-user=nrpe \
     --with-nrpe-group=nrpe \
     --with-piddir=/run/nrpe \
     --bindir=%{_sbindir} \
@@ -142,20 +148,19 @@ install -D -p -m 0644 %{SOURCE1} %{buildroot}/%{_sysconfdir}/sysconfig/%{name}
 install -d %{buildroot}%{_sysconfdir}/nrpe.d
 install -d %{buildroot}%{_localstatedir}/run/%{name}
 install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_tmpfilesdir}/%{name}.conf
 %if 0%{?rhel} > 5
 # Selinux configs
 install -p -m 644 -D %{name}_epel.pp $RPM_BUILD_ROOT%{_datadir}/selinux/packages/%{name}/%{name}_epel.pp
 %endif
 
+install -m0644 -D nrpe.sysusers.conf %{buildroot}%{_sysusersdir}/nrpe.conf
+
 %pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-%{_sbindir}/useradd -c "NRPE user for the NRPE service" -d %{_localstatedir}/run/%{name} -r -g %{name} -s /sbin/nologin %{name} 2> /dev/null || :
 getent group nagios >/dev/null && %{_sbindir}/usermod -a -G nagios %{name} || :
 
 %preun
 %systemd_preun nrpe.service
 
 %post
 %systemd_post nrpe.service
 
@@ -194,29 +199,33 @@ fi
 %{_sbindir}/nrpe
 %dir %{_sysconfdir}/nrpe.d
 %config(noreplace) %{_sysconfdir}/nagios/nrpe.cfg
 %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
 %config(noreplace) %{_tmpfilesdir}/%{name}.conf
 %license LICENSE.md
 %doc CHANGELOG.md LEGAL README.md README.SSL.md SECURITY.md docs/NRPE.pdf
 %dir %attr(775, %{name}, %{name}) %{_localstatedir}/run/%{name}
+%{_sysusersdir}/nrpe.conf
 
 %files -n nagios-plugins-nrpe
 %{_libdir}/nagios/plugins/check_nrpe
 %license LICENSE.md
 %doc CHANGELOG.md LEGAL README.md
 
 %if 0%{?rhel} > 5
 %files selinux
 %doc README.SELinux.rst
 %{_datadir}/selinux/packages/%{name}/%{name}_epel.pp
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.1.3-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.3-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Dec 11 2024 Ján ONDREJ (SAL) <ondrejj(at)salstar.sk> - 4.1.3-1
 - Update to upstream.
 
 * Tue Dec 10 2024 Ján ONDREJ (SAL) <ondrejj(at)salstar.sk> - 4.1.2-2
 - Use openssl-devel-engine only on Fedora
RPMAutoSpec usage detected, not changing the spec file.
diff --git nsd/nsd.spec nsd/nsd.spec.tmp
index 0877725992..a3b7949247 100644
--- nsd/nsd.spec
+++ nsd/nsd.spec.tmp
@@ -9,31 +9,35 @@ Source0: http://www.nlnetlabs.nl/downloads/%{name}/%{name}-%{version}%{?prever}.
 Source1: nsd.conf
 Source2: nsd.service
 Source3: tmpfiles-nsd.conf
 BuildRequires: make
 BuildRequires: gcc
 BuildRequires: flex
 BuildRequires: openssl-devel
 BuildRequires: libevent-devel
-Requires(pre): shadow-utils
 BuildRequires: systemd-units
 BuildRequires: systemd-devel
 Requires(post): systemd-units
 Requires(preun): systemd-units
 Requires(postun): systemd-units
 
 %description
 NSD is a complete implementation of an authoritative DNS name server.
 For further information about what NSD is and what NSD is not please
 consult the REQUIREMENTS document which is a part of this distribution.
 
 %prep
 %setup -q -n %{name}-%{version}%{?prever}
 
+# Create a sysusers.d config file
+cat >nsd.sysusers.conf <<EOF
+u nsd - 'nsd daemon account' /etc/nsd -
+EOF
+
 %build
 CFLAGS="%{optflags} -fPIE -pie"
 LDFLAGS="-Wl,-z,relro,-z,now"
 export CFLAGS LDFLAGS
 %configure \
     --enable-bind8-stats \
     --enable-zone-stats \
     --enable-checking \
@@ -71,16 +75,18 @@ for name in control server; do
 done
 
 # Take care of the configuration
 mkdir -p %{buildroot}%{_sysconfdir}/nsd/conf.d
 mkdir -p %{buildroot}%{_sysconfdir}/nsd/server.d
 install -m 0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/nsd/nsd.conf
 rm %{buildroot}%{_sysconfdir}/nsd/nsd.conf.sample
 
+install -m0644 -D nsd.sysusers.conf %{buildroot}%{_sysusersdir}/nsd.conf
+
 %files
 %license LICENSE
 %doc doc/*
 %doc contrib/nsd.zones2nsd.conf
 %dir %{_sysconfdir}/nsd
 %config(noreplace) %{_sysconfdir}/nsd/nsd.conf
 %attr(0640,root,nsd) %ghost %{_sysconfdir}/nsd/nsd_server.key
 %attr(0640,root,nsd) %ghost %{_sysconfdir}/nsd/nsd_server.pem
@@ -89,23 +95,18 @@ rm %{buildroot}%{_sysconfdir}/nsd/nsd.conf.sample
 %dir %{_sysconfdir}/nsd/conf.d
 %dir %{_sysconfdir}/nsd/server.d
 %attr(0644,root,root) %{_unitdir}/nsd.service
 %attr(0644,root,root) %{_tmpfilesdir}/nsd.conf
 %attr(0755,nsd,nsd) %dir %{_rundir}/nsd
 %attr(0750,nsd,nsd) %dir %{_sharedstatedir}/nsd
 %{_sbindir}/*
 %{_mandir}/*/*
+%{_sysusersdir}/nsd.conf
 
-%pre
-getent group nsd >/dev/null || groupadd -r nsd
-getent passwd nsd >/dev/null || \
-useradd -r -g nsd -d /etc/nsd -s /sbin/nologin \
-    -c "nsd daemon account" nsd
-exit 0
 
 %post
 %systemd_post nsd.service
 
 %preun
 %systemd_preun nsd.service
 
 %postun
diff --git nss-pam-ldapd/nss-pam-ldapd.spec nss-pam-ldapd/nss-pam-ldapd.spec.tmp
index 74ef96bf66..5b007aa9c9 100644
--- nss-pam-ldapd/nss-pam-ldapd.spec
+++ nss-pam-ldapd/nss-pam-ldapd.spec.tmp
@@ -1,16 +1,16 @@
 %global nssdir /%{_lib}
 %global pamdir /%{_lib}/security
 
 %define _hardened_build 1
 
 Name:           nss-pam-ldapd
 Version:        0.9.10
-Release:        18%{?dist}
+Release:        19%{?dist}
 Summary:        An nsswitch module which uses directory servers
 License:        LGPL-2.0-or-later
 URL:            http://arthurdejong.org/nss-pam-ldapd/
 Source0:        http://arthurdejong.org/nss-pam-ldapd/nss-pam-ldapd-%{version}.tar.gz
 Source1:        http://arthurdejong.org/nss-pam-ldapd/nss-pam-ldapd-%{version}.tar.gz.sig
 Source3:        nslcd.tmpfiles
 Source4:        nslcd.service
 
@@ -37,27 +37,32 @@ Provides:       nss-ldapd = %{version}-%{release}
 Provides:       nss_ldap = 265-12
 Obsoletes:      nss_ldap < 265-11
 
 # Obsolete PADL's pam_ldap
 Provides:       pam_ldap = 185-15
 Obsoletes:      pam_ldap < 185-15
 
 # For user/group creation
-Requires(pre):  shadow-utils
 
 %description
 The nss-pam-ldapd daemon, nslcd, uses a directory server to look up name
 service information (users, groups, etc.) on behalf of a lightweight
 nsswitch module.
 
 %prep
 %autosetup -p1
 autoreconf -f -i
 
+# Create a sysusers.d config file
+cat >nss-pam-ldapd.sysusers.conf <<EOF
+g ldap 55
+u nslcd 65 'LDAP Client User' / -
+EOF
+
 %build
 %configure --libdir=%{nssdir} \
            --disable-utils \
            --with-pam-seclib-dir=%{pamdir} \
            --with-nslcd-pidfile=/run/nslcd/nslcd.pid \
            --with-nslcd-socket=/run/nslcd/socket
 %make_build
 
@@ -74,47 +79,47 @@ ln -s libnss_ldap.so.2 $RPM_BUILD_ROOT/%{nssdir}/libnss_ldap.so
 
 sed -i -e 's,^uid.*,uid nslcd,g' -e 's,^gid.*,gid ldap,g' \
 $RPM_BUILD_ROOT/%{_sysconfdir}/nslcd.conf
 touch -r nslcd.conf $RPM_BUILD_ROOT/%{_sysconfdir}/nslcd.conf
 mkdir -p -m 0755 $RPM_BUILD_ROOT/run/nslcd
 mkdir -p -m 0755 $RPM_BUILD_ROOT/%{_tmpfilesdir}
 install -p -m 0644 %{SOURCE3} $RPM_BUILD_ROOT/%{_tmpfilesdir}/%{name}.conf
 
+install -m0644 -D nss-pam-ldapd.sysusers.conf %{buildroot}%{_sysusersdir}/nss-pam-ldapd.conf
+
 %files
 %doc AUTHORS ChangeLog COPYING HACKING NEWS README TODO
 %{_sbindir}/*
 %{nssdir}/*.so*
 %{pamdir}/pam_ldap.so
 %{_mandir}/*/*
 %attr(0600,root,root) %config(noreplace) %verify(not md5 size mtime) /etc/nslcd.conf
 %attr(0644,root,root) %config(noreplace) %{_tmpfilesdir}/%{name}.conf
 %{_unitdir}/nslcd.service
 %attr(0775,nslcd,root) /run/nslcd
+%{_sysusersdir}/nss-pam-ldapd.conf
 
-%pre
-getent group  ldap  > /dev/null || \
-/usr/sbin/groupadd -r -g 55 ldap
-getent passwd nslcd > /dev/null || \
-/usr/sbin/useradd -r -g ldap -c 'LDAP Client User' \
-    -u 65 -d / -s /sbin/nologin nslcd 2> /dev/null || :
 
 %post
 # The usual stuff.
 /sbin/ldconfig
 %systemd_post nslcd.service
 
 %preun
 %systemd_preun nslcd.service
 
 %postun
 /sbin/ldconfig
 %systemd_postun_with_restart nslcd.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.9.10-19
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.10-18
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.10-17
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.10-16
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git ntp-refclock/ntp-refclock.spec ntp-refclock/ntp-refclock.spec.tmp
index eeac070b20..1c76d21ab2 100644
--- ntp-refclock/ntp-refclock.spec
+++ ntp-refclock/ntp-refclock.spec.tmp
@@ -1,23 +1,22 @@
 %global ntp_version 4.2.8p18
 
 Name:		ntp-refclock
 Version:	0.6
-Release:	7%{?dist}
+Release:	8%{?dist}
 Summary:	Drivers for hardware reference clocks
 License:	BSD-2-Clause AND NTP AND BSD-3-Clause AND BSD-4-Clause AND Beerware
 URL:		https://github.com/mlichvar/ntp-refclock
 Source0:	https://github.com/mlichvar/ntp-refclock/archive/v%{version}/%{name}-%{version}.tar.gz
 Source1:	https://downloads.nwtime.org/ntp/4.2.8/ntp-%{ntp_version}.tar.gz
 Patch0:		ntp-refclock-configure-c99.patch
 
 BuildRequires:	gcc make systemd pps-tools-devel
 
-Requires(pre):	shadow-utils
 Requires:	udev
 %{?systemd_requires}
 
 # The drivers and some code they need are from ntp
 Provides:	bundled(ntp) = %{ntp_version}
 
 %description
 ntp-refclock is a wrapper for reference clock drivers included in the ntpd
@@ -43,16 +42,21 @@ for p in $preserve_timestamps ; do
     touch -r $p.timestamp $p
     rm $p.timestamp
 done
 popd
 
 # Refer to packaged documentation for drivers
 sed -i 's|<https:.*refclock.html>|in %{_pkgdocdir}/drivers/|' ntp-refclock.8
 
+# Create a sysusers.d config file
+cat >ntp-refclock.sysusers.conf <<EOF
+u ntp-refclock - 'Reference clock driver' / -
+EOF
+
 %build
 export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -fno-strict-overflow"
 
 pushd ntp
 
 %configure \
 	--enable-all-clocks \
 	--enable-parse-clocks \
@@ -89,22 +93,18 @@ install -m 644 -p examples/ntp-refclock.sysconfig \
 	$RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/ntp-refclock
 install -m 644 -p examples/ntp-refclock.rules \
 	$RPM_BUILD_ROOT%{_sysconfdir}/udev/rules.d/80-ntp-refclock.rules
 install -m 644 -p examples/ntp-refclock.service \
 	$RPM_BUILD_ROOT%{_unitdir}/ntp-refclock.service
 install -m 644 -p examples/pps-ldattach@.service \
 	$RPM_BUILD_ROOT%{_unitdir}/pps-ldattach@.service
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-	useradd -r -g %{name} -d / -s /sbin/nologin \
-		-c "Reference clock driver" %{name}
-:
+install -m0644 -D ntp-refclock.sysusers.conf %{buildroot}%{_sysusersdir}/ntp-refclock.conf
+
 
 %post
 %systemd_post ntp-refclock.service
 
 %preun
 %systemd_preun ntp-refclock.service
 
 %postun
@@ -113,18 +113,22 @@ getent passwd %{name} >/dev/null || \
 %files
 %license COPYRIGHT*
 %doc README NEWS ntp/html/drivers
 %config(noreplace) %{_sysconfdir}/sysconfig/ntp-refclock
 %config(noreplace) %{_sysconfdir}/udev/rules.d/80-ntp-refclock.rules
 %{_sbindir}/%{name}
 %{_mandir}/man8/%{name}.8*
 %{_unitdir}/*.service
+%{_sysusersdir}/ntp-refclock.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.6-8
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.6-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.6-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Mon May 27 2024 Miroslav Lichvar <mlichvar@redhat.com> 0.6-5
 - update ntp to 4.2.8p18
diff --git ntpsec/ntpsec.spec ntpsec/ntpsec.spec.tmp
index f9114a07ad..6096181010 100644
--- ntpsec/ntpsec.spec
+++ ntpsec/ntpsec.spec.tmp
@@ -1,11 +1,11 @@
 Name:           ntpsec
 Version:        1.2.3
-Release:        10%{?dist}
+Release:        11%{?dist}
 Summary:        NTP daemon and utilities
 
 License:        NTP AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC AND Apache-2.0 AND Beerware
 URL:            https://www.ntpsec.org/
 Source0:        https://ftp.ntpsec.org/pub/releases/ntpsec-%{version}.tar.gz
 Source1:        https://ftp.ntpsec.org/pub/releases/ntpsec-%{version}.tar.gz.asc
 Source2:        https://ftp.ntpsec.org/pub/releases/ntpsec.gpg.pub.asc
 Source3:        ntp.conf
@@ -22,17 +22,16 @@ BuildRequires:  python3-devel
 BuildRequires:  rubygem-asciidoctor
 BuildRequires:  systemd
 BuildRequires:  waf
 
 # Use the bundled waf script instead of the system one until ntpsec supports
 # the newer version
 %global waf python3 waf
 
-Requires(pre):  shadow-utils
 %{?systemd_requires}
 
 Conflicts:      ntp ntp-perl ntpdate
 Obsoletes:      ntp < 4.2.10 ntp-perl < 4.2.10 ntp-doc < 4.2.10 ntpdate < 4.2.10 sntp < 4.2.10
 
 # Set pool.ntp.org vendor zone for default configuration
 %if 0%{!?vendorzone:1}
 %global vendorzone %(source /etc/os-release && echo ${ID}.)
@@ -61,16 +60,21 @@ Protocol derived from the original NTP project.
 
 # Fix egg info to use a shorter version which will work as an rpm provide
 sed -i 's|NTPSEC_VERSION_EXTENDED|NTPSEC_VERSION|' pylib/ntp-in.egg-info
 
 # Modify compiled-in statsdir
 sed -i 's|/var/NTP|%{_localstatedir}/log/ntpstats|' \
         docs/includes/ntpd-body.adoc ntpd/ntp_util.c
 
+# Create a sysusers.d config file
+cat >ntpsec.sysusers.conf <<EOF
+u ntp 38 - %{_localstatedir}/lib/ntp -
+EOF
+
 %build
 export CFLAGS="$RPM_OPT_FLAGS"
 export LDFLAGS="$RPM_LD_FLAGS"
 
 %{waf} configure \
         --enable-debug \
         --disable-doc \
         --refclock=all \
@@ -120,24 +124,21 @@ mv .%{_bindir}/ntpq .%{_sbindir}/ntpq
 mkdir -p .%{_localstatedir}/{lib/ntp,log/ntpstats}
 touch .%{_localstatedir}/lib/ntp/ntp.drift
 
 mkdir -p .%{_prefix}/lib/systemd/ntp-units.d
 echo 'ntpd.service' > .%{_prefix}/lib/systemd/ntp-units.d/60-ntpd.list
 
 popd
 
+install -m0644 -D ntpsec.sysusers.conf %{buildroot}%{_sysusersdir}/ntpsec.conf
+
 %check
 %{waf} check
 
-%pre
-# UID/GID inherited from the ntp package
-/usr/sbin/groupadd -g 38 ntp 2> /dev/null || :
-/usr/sbin/useradd -u 38 -g 38 -s /sbin/nologin -M -r \
-        -d %{_localstatedir}/lib/ntp ntp 2>/dev/null || :
 
 %post
 %systemd_post ntpd.service ntp-wait.service
 systemctl daemon-reload 2> /dev/null || :
 
 %preun
 %systemd_preun ntpd.service ntp-wait.service
 
@@ -187,18 +188,22 @@ sed -i.bak -E '/^restrict/s/no(e?peer|trap)//g' %{_sysconfdir}/ntp.conf
 %{_unitdir}/ntp*.service
 %{_unitdir}/ntp*.timer
 %{_prefix}/lib/systemd/ntp-units.d/*ntpd.list
 %dir %attr(-,ntp,ntp) %{_localstatedir}/lib/ntp
 %ghost %attr(644,ntp,ntp) %{_localstatedir}/lib/ntp/ntp.drift
 %dir %attr(-,ntp,ntp) %{_localstatedir}/log/ntpstats
 %{python3_sitearch}/ntp-*.egg-info
 %{python3_sitearch}/ntp
+%{_sysusersdir}/ntpsec.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.2.3-11
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Zbigniew Jedrzejewski-Szmek <zbyszek@in.waw.pl> - 1.2.3-10
 - Also add Provides:/usr/sbin/ntpdate (rhbz#2338300)
 
 * Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.2.3-9
 - Rebuilt for the bin-sbin merge (2nd attempt)
 
 * Tue Dec 03 2024 Miroslav Lichvar <mlichvar@redhat.com> 1.2.3-8
 - switch to building with bundled waf (#2329938)
diff --git nut/nut.spec nut/nut.spec.tmp
index d3f0edcda0..a05b1ac2e2 100644
--- nut/nut.spec
+++ nut/nut.spec.tmp
@@ -9,28 +9,27 @@
 %global piddir  /run/nut
 %global modeldir /usr/sbin
 # powerman is retired on Fedora, therefore disable it by default
 %bcond_with powerman
 
 Summary: Network UPS Tools
 Name: nut
 Version: 2.8.2.1
-Release: 3%{?dist}.1.git20240703pr2505
+Release: 4%{?dist}.1.git20240703pr2505
 License: GPL-2.0-or-later AND GPL-3.0-or-later
 Url: https://www.networkupstools.org/
 Source: https://www.networkupstools.org/source/2.8/%{name}-%{version}.tar.gz
 Source4: libs.sh
 Patch2: nut-2.8.0-piddir-owner.patch
 
 #quick fix. TODO: fix it properly
 Patch9: nut-2.6.5-rmpidf.patch
 Patch15: nut-c99-strdup.patch
 
-Requires(pre): shadow-utils
 Requires(post): coreutils systemd
 Requires(preun): systemd
 Requires(postun): coreutils systemd
 Recommends: nut-xml
 
 BuildRequires: make
 BuildRequires: autoconf
 BuildRequires: automake
@@ -85,32 +84,30 @@ of UPSes that are found out there in the field. Many models have serial
 ports of some kind that allow some form of state checking. This
 capability has been harnessed where possible to allow for safe shutdowns,
 live status tracking on web pages, and more.
 
 %package client
 Summary: Network UPS Tools client monitoring utilities
 Requires(post): systemd
 Requires(preun): systemd
-Requires(pre): shadow-utils
 %if %{with python2}
 Requires: pygtk2, pygtk2-libglade
 #only for python and gui part
 %endif
 #Requires:
 
 %description client
 This package includes the client utilities that are required to monitor a
 ups that the client host has access to, but where the UPS is physically
 attached to a different computer on the network.
 
 %package cgi
 Summary: CGI utilities for the Network UPS Tools
 Requires: %{name}-client = %{version}-%{release} webserver
-Requires(pre): shadow-utils
 
 %description cgi
 This package includes CGI programs for accessing UPS status via a web
 browser.
 
 %package xml
 Summary: XML UPS driver for the Network UPS Tools
 Requires: %{name}-client = %{version}-%{release}
@@ -139,16 +136,23 @@ sed -i 's|LIBSSL_LDFLAGS|LIBSSL_LIBS|' lib/libupsclient-config.in
 sed -i 's|LIBSSL_LDFLAGS|LIBSSL_LIBS|' lib/libupsclient.pc.in
 
 # workaround for multilib conflicts - caused by patch changing modification time of scripts
 find . -mtime -1 -print0 | xargs -0 touch --reference %{SOURCE0}
 
 # fix python site packages check
 sed -i 's|\(PYTHON3\?_SITE_PACKAGES=\)".*"|\1"%{python3_sitelib}"|' m4/nut_check_python.m4
 
+# Create a sysusers.d config file
+cat >nut.sysusers.conf <<EOF
+u nut %{nut_uid} 'Network UPS Tools' %{_localstatedir}/lib/ups /bin/false
+m nut dialout
+m nut tty
+EOF
+
 %build
 %if 0%{?fedora} > 38
 #--without-gpio is not enough to stop it complaining about missing library
 sed -i 's|with_gpio="[^"]*"|with_gpio="no"|g' configure.ac
 %endif
 autoreconf -i
 export CXXFLAGS="-std=c++14 $RPM_OPT_FLAGS"
 # prevent assignment of default value, it would break configure's tests
@@ -245,21 +249,19 @@ install -p -D scripts/python/app/nut-monitor.png %{buildroot}%{_datadir}/pixmaps
 desktop-file-install --dir=%{buildroot}%{_datadir}/applications scripts/python/app/nut-monitor.desktop
 ln -s %{_datadir}/nut/nut-monitor/nut-monitor %{buildroot}%{_bindir}/nut-monitor
 %endif
 
 # Setup permissions for pid file
 touch %{buildroot}/%{piddir}/upsmon.pid
 chmod 0644 %{buildroot}/%{piddir}/upsmon.pid
 
+install -m0644 -D nut.sysusers.conf %{buildroot}%{_sysusersdir}/nut.conf
+
 %pre
-/usr/sbin/useradd -c "Network UPS Tools" -u %{nut_uid}  \
-        -s /bin/false -r -d %{_localstatedir}/lib/ups %{name} 2> /dev/null || :
-/usr/sbin/usermod -G dialout,tty %{name}
-
 # do not let upsmon run during upgrade rhbz#916472
 # phase 1: stop upsmon before upsd changes
 if [ "$1" = "2" ]; then
   rm -f %restart_flag
   /bin/systemctl is-active nut-monitor.service >/dev/null 2>&1 && touch %restart_flag ||:
   /bin/systemctl stop nut-monitor.service >/dev/null 2>&1
 fi
 
@@ -409,16 +411,17 @@ fi
 %{_mandir}/man8/tripplite_usb.8.gz
 %{_mandir}/man8/tripplitesu.8.gz
 %{_mandir}/man8/victronups.8.gz
 %{_mandir}/man8/upscode2.8*
 %{_mandir}/man8/upsd.8.gz
 %{_mandir}/man8/upsdrvctl.8.gz
 %{_mandir}/man8/upsdrvsvcctl.8.gz
 %{_mandir}/man8/usbhid-ups.8.gz
+%{_sysusersdir}/nut.conf
 
 %files client
 %license COPYING LICENSE-GPL2 LICENSE-GPL3
 %dir %{_sysconfdir}/ups
 %config(noreplace) %attr(640,root,nut) %{_sysconfdir}/ups/nut.conf
 %config(noreplace) %attr(640,root,nut) %{_sysconfdir}/ups/upsmon.conf
 %config(noreplace) %attr(640,root,nut) %{_sysconfdir}/ups/upssched.conf
 %{_tmpfilesdir}/nut-common-tmpfiles.conf
@@ -486,16 +489,19 @@ fi
 %{_libdir}/libnutclientstub.so
 %{_libdir}/libnutscan.so
 %{_libdir}/pkgconfig/libupsclient.pc
 %{_libdir}/pkgconfig/libnutclient.pc
 %{_libdir}/pkgconfig/libnutclientstub.pc
 %{_libdir}/pkgconfig/libnutscan.pc
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.8.2.1-4.1.git20240703pr2505
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.8.2.1-3.1.git20240703pr2505
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Nov 15 2024 Orion Poplawski <orion@nwra.com> - 2.8.2.1-2.1.git20240703pr2505
 - Add BR systemd-devel to enable systemd notification support
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.8.2.1-1.1.git20240703pr2505
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git obs-signd/obs-signd.spec obs-signd/obs-signd.spec.tmp
index 2209c892b8..7995b44da0 100644
--- obs-signd/obs-signd.spec
+++ obs-signd/obs-signd.spec.tmp
@@ -16,32 +16,36 @@ Version:          2.8.4
 Release:          %autorelease
 #Release:          %%{baserelease}%%{?snapshotrel}%%{?dist}
 Source0:          https://github.com/openSUSE/%{shortname}/archive/refs/tags/%{version}.tar.gz#/%{shortname}-%{version}.tar.gz
 # We renamed the option in gnupg2 to 'file-is-digest'
 Patch0:           0001-Rename-option-files-are-digests-to-file-is-digest.patch
 # https://github.com/openSUSE/obs-sign/pull/6
 Patch1:           0002-fixes-user-id-matching-to-provide-unique-results.patch
 Requires:         gnupg2
-Requires(pre):    shadow-utils
 BuildRequires:    perl-generators
 BuildRequires:    systemd
 BuildRequires:    gcc
 BuildRequires:    make
 
 %description
 The OpenSUSE Build Service sign client and daemon.
 
 This daemon can be used to sign anything via gpg by communicating
 with a remote server to avoid the need to host the private key
 on the same server.
 
 %prep
 %autosetup -n %{shortname}-%{version}
 
+# Create a sysusers.d config file
+cat >obs-signd.sysusers.conf <<EOF
+u obsrun - 'User for Open Build Service backend' %{_libdir}/obs /bin/false
+EOF
+
 %build
 %make_build CFLAGS="%{build_cflags}" LDFLAGS="%{build_ldflags}" sign
 
 %install
 mkdir -p %{buildroot}%{_sbindir} %{buildroot}%{_sysconfdir}
 install -d -m 0755 %{buildroot}%{_bindir}
 
 # binaries and configuration
@@ -56,38 +60,35 @@ install -m 0644 dist/signd.service %{buildroot}%{_unitdir}
 
 # man pages
 install -d -m 0755 %{buildroot}%{_mandir}/man{5,8}
 
 for f in 5 8; do
   install -m 0644 sig*.${f} %{buildroot}%{_mandir}/man${f}/
 done
 
-%pre
-getent group obsrun >/dev/null || %{_sbindir}/groupadd -r obsrun
-getent passwd obsrun >/dev/null || \
-  %{_sbindir}/useradd -r -s /bin/false -c "User for Open Build Service backend" \
-                         -d %{_libdir}/obs -g obsrun obsrun
-exit 0
+install -m0644 -D obs-signd.sysusers.conf %{buildroot}%{_sysusersdir}/obs-signd.conf
+
 
 %post
 %systemd_post signd.service
 
 %preun
 %systemd_preun signd.service
 
 %postun
 %systemd_postun_with_restart signd.service
 
 %files
 %config(noreplace) %{_sysconfdir}/sign.conf
 %attr(4750,root,obsrun) %{_bindir}/sign
 %{_sbindir}/signd
 %{_unitdir}/signd.service
 %doc %{_mandir}/man*/*
+%{_sysusersdir}/obs-signd.conf
 
 %changelog
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Mon Jan 29 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
 
RPMAutoSpec usage detected, not changing the spec file.
diff --git ocserv/ocserv.spec ocserv/ocserv.spec.tmp
index 5663985279..d1219e4619 100644
--- ocserv/ocserv.spec
+++ ocserv/ocserv.spec.tmp
@@ -95,17 +95,16 @@ BuildRequires:	libseccomp-devel
 # no rubygem in epel7
 %if 0%{?fedora}
 BuildRequires:	rubygem-ronn-ng
 %endif
 
 Recommends:		gnutls-utils
 Recommends:		iproute
 Recommends:		pam
-Requires(pre):		shadow-utils
 %if %{use_systemd}
 Requires(post):		systemd
 Requires(preun):	systemd
 Requires(postun):	systemd
 %endif
 
 #gnulib is bundled. See https://fedorahosted.org/fpc/ticket/174
 Provides:		bundled(gnulib)
@@ -136,16 +135,21 @@ touch src/*.proto
 rm -rf src/ccan/talloc
 sed -i 's|/etc/ocserv.conf|/etc/ocserv/ocserv.conf|g' src/config.c
 sed -i 's/run-as-group = nogroup/run-as-group = nobody/g' tests/data/*.config
 
 %if 0%{?rhel} && 0%{?rhel} <= 6
 echo "int main() { return 77; }" > tests/valid-hostname.c
 %endif
 
+# Create a sysusers.d config file
+cat >ocserv.sysusers.conf <<EOF
+u ocserv - 'ocserv' %{_localstatedir}/lib/ocserv -
+EOF
+
 %build
 
 %if 0%{?rhel} && 0%{?rhel} <= 6
 export PKG_CONFIG_LIBDIR="%{_libdir}/gnutls30/pkgconfig:%{_libdir}/pkgconfig"
 export LIBGNUTLS_CFLAGS="-I/usr/include/gnutls30"
 export LIBGNUTLS_LIBS="-L%{_libdir}/gnutls30/ -lgnutls"
 export CFLAGS="$CFLAGS -I/usr/include/libev -I/usr/include/gnutls30"
 sed -i 's/AM_PROG_AR//g' configure.ac
@@ -166,20 +170,16 @@ autoreconf -fvi
 	--with-libwrap
 %else
 	--without-libwrap
 %endif
 
 make %{?_smp_mflags}
 
 %pre
-getent group ocserv &>/dev/null || groupadd -r ocserv
-getent passwd ocserv &>/dev/null || \
-	/usr/sbin/useradd -r -g ocserv -s /sbin/nologin -c ocserv \
-		-d %{_localstatedir}/lib/ocserv ocserv
 mkdir -p %{_sysconfdir}/pki/ocserv/public
 mkdir -p -m 700 %{_sysconfdir}/pki/ocserv/private
 mkdir -p %{_sysconfdir}/pki/ocserv/cacerts
 
 %check
 make check %{?_smp_mflags} VERBOSE=1
 
 %if %{use_systemd}
@@ -220,16 +220,18 @@ mkdir -p %{buildroot}/%{_unitdir}
 install -p -m 644 %{SOURCE4} %{buildroot}/%{_unitdir}
 %else
 mkdir -p %{buildroot}/%{_initrddir}
 install -D -m 0755 %{SOURCE11} %{buildroot}/%{_initrddir}/%{name}
 %endif
 
 %make_install
 
+install -m0644 -D ocserv.sysusers.conf %{buildroot}%{_sysusersdir}/ocserv.conf
+
 %files
 %defattr(-,root,root,-)
 
 %dir %{_localstatedir}/lib/ocserv
 %dir %{_sysconfdir}/ocserv
 
 %config(noreplace) %{_sysconfdir}/ocserv/ocserv.conf
 %config(noreplace) %{_sysconfdir}/pam.d/ocserv
@@ -250,11 +252,12 @@ install -D -m 0755 %{SOURCE11} %{buildroot}/%{_initrddir}/%{name}
 %{_sbindir}/ocserv-worker
 %{_sbindir}/ocserv-genkey
 %{_localstatedir}/lib/ocserv/profile.xml
 %if %{use_systemd}
 %{_unitdir}/ocserv.service
 %else
 %{_initrddir}/%{name}
 %endif
+%{_sysusersdir}/ocserv.conf
 
 %changelog
 %autochangelog
diff --git ocspd/ocspd.spec ocspd/ocspd.spec.tmp
index 588c1749d8..510658f84f 100644
--- ocspd/ocspd.spec
+++ ocspd/ocspd.spec.tmp
@@ -1,15 +1,15 @@
 # % global alphatag	rc1
 %global revision	%{?alphatag:-}%{?alphatag}
 
 
 Name:		ocspd
 Version:	1.9.0
-Release:	33%{?alphatag:.}%{?alphatag}%{?dist}
+Release:	34%{?alphatag:.}%{?alphatag}%{?dist}
 Summary:	OpenCA OCSP Daemon
 License:	Apache-1.0
 Source:		http://downloads.sourceforge.net/openca/openca-ocspd-%{version}%{revision}.tar.gz
 Source1:	ocspd.service
 Patch1:		ocspd-1.7.0-bufresponse.patch
 Patch2:		ocspd-1.9.0-misc.patch
 Patch3:		ocspd-1.7.0-openssl.patch
 Patch4:		ocspd-1.7.0-podsyntax.patch
@@ -20,17 +20,16 @@ Patch8:		ocspd-1.7.0-threadinit.patch
 Patch9:		ocspd-1.7.0-config.patch
 Patch10:	ocspd-1.7.0-setgroups.patch
 Patch11:	ocspd-1.9.0-stealthy.patch
 Patch12:	ocspd-1.9.0-noformat.patch
 Patch13:	ocspd-1.9.0-openssl11.patch
 URL:		http://www.openca.org/projects/ocspd
 Obsoletes:	openca-ocspd <= %{version}-%{release}
 Provides:	openca-ocspd = %{version}-%{release}
-Requires(pre):	shadow-utils
 BuildRequires:	make
 BuildRequires:	gcc
 BuildRequires:	openssl-devel
 %if 0%{?fedora} >= 41
 BuildRequires:	openssl-devel-engine
 %endif
 BuildRequires:	openldap-devel
 BuildRequires:	automake autoconf
@@ -61,16 +60,21 @@ Mozilla/Firefox/Thunderbird/Apache).
 %patch -P7 -p1 -b .deprecldap
 %patch -P8 -p1 -b .threadinit
 %patch -P9 -p1 -b .config
 %patch -P10 -p1 -b .setgroups
 %patch -P11 -p1 -b .stealthy
 %patch -P12 -p1 -b .noformat
 %patch -P13 -p1 -b .openssl11
 
+# Create a sysusers.d config file
+cat >ocspd.sysusers.conf <<EOF
+u ocspd - 'OCSP Responder' %{_sysconfdir}/ocspd -
+EOF
+
 
 #-------------------------------------------------------------------------------
 %build
 #-------------------------------------------------------------------------------
 
 #	Need automake/autoconf rebuild because of above patches.
 
 aclocal
@@ -98,25 +102,19 @@ make DESTDIR="${RPM_BUILD_ROOT}" install
 
 rm -rf "${RPM_BUILD_ROOT}%{_initrddir}"
 
 #	Install systemd service script.
 
 mkdir -p "${RPM_BUILD_ROOT}%{_unitdir}/"
 cp -a "%{SOURCE1}" "${RPM_BUILD_ROOT}%{_unitdir}/"
 
-#-------------------------------------------------------------------------------
-%pre
 #-------------------------------------------------------------------------------
 
-getent group ocspd >/dev/null || groupadd -r ocspd
-getent passwd ocspd >/dev/null ||
-	useradd -r -g ocspd -d "%{_sysconfdir}/ocspd"			\
-		-s /sbin/nologin -c "OCSP Responder" ocspd
-exit 0
+install -m0644 -D ocspd.sysusers.conf %{buildroot}%{_sysusersdir}/ocspd.conf
 
 
 #-------------------------------------------------------------------------------
 %post
 #-------------------------------------------------------------------------------
 
 %systemd_post ocspd.service
 
@@ -151,20 +149,24 @@ exit 0
 %{_sbindir}/*
 %dir %{_sysconfdir}/ocspd
 %dir %{_sysconfdir}/ocspd/c*
 %attr(700, ocspd, root) %dir %{_sysconfdir}/ocspd/private
 %config(noreplace) %{_sysconfdir}/ocspd/ocspd.conf
 %config(noreplace) %{_sysconfdir}/sysconfig/*
 %{_mandir}/*/*
 %{_unitdir}/*
+%{_sysusersdir}/ocspd.conf
 
 
 #-------------------------------------------------------------------------------
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.9.0-34
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.0-33
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 #-------------------------------------------------------------------------------
 
 * Tue Jul 23 2024 Patrick Monnerat <patrick@monnerat.net> 1.9.0-32
 - BR openssl-devel-engine for Fedora >= 41.
 
diff --git odcs/odcs.spec odcs/odcs.spec.tmp
index fbb0180507..46178020e1 100644
--- odcs/odcs.spec
+++ odcs/odcs.spec.tmp
@@ -1,11 +1,11 @@
 Name:       odcs
 Version:    0.8.1
-Release:    4%{?dist}
+Release:    5%{?dist}
 Summary:    The On Demand Compose Service
 
 
 License:    MIT
 URL:        https://pagure.io/odcs
 Source0:    https://files.pythonhosted.org/packages/source/o/%{name}/%{name}-%{version}.tar.gz
 Source1:    odcs-backend.service
 # Fedora related configuration for ODCS.
@@ -40,17 +40,16 @@ BuildRequires:    python3-psutil
 BuildRequires:    python3-flufl-lock
 BuildRequires:    python3-celery
 BuildRequires:    python3-kobo
 BuildRequires:    python3-prometheus_client
 BuildRequires:    python3-tomli
 
 %{?systemd_requires}
 
-Requires(pre): shadow-utils
 Requires:    systemd
 Requires:    pungi
 Requires:    python3-requests-gssapi
 Requires:    python3-funcsigs
 Requires:    python3-openidc-client
 Requires:    python3-productmd
 Requires:    hardlink
 Requires:    python3-libmodulemd
@@ -107,16 +106,21 @@ Requires:       python3-odcs-client = %{version}-%{release}
 
 %description -n odcs-client
 Command line client for sending requests to ODCS.
 
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >odcs.sysusers.conf <<EOF
+u odcs - 'On Demand Compose Service user' None -
+EOF
+
 %build
 %py3_build
 
 
 %install
 %py3_install
 
 export PYTHONPATH=%{buildroot}%{python3_sitelib}
@@ -132,23 +136,19 @@ help2man -N \
 done
 
 install -d -m 0755 %{buildroot}%{_unitdir}
 install -p -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/
 
 install -d -m 0755 %{buildroot}%{_datadir}/odcs
 install -p -m 0644 server/contrib/odcs.wsgi %{buildroot}%{_datadir}/odcs
 
+install -m0644 -D odcs.sysusers.conf %{buildroot}%{_sysusersdir}/odcs.conf
+
 
-%pre
-getent group odcs >/dev/null || groupadd -r odcs
-getent passwd odcs >/dev/null || \
-    useradd -r -g odcs -s /sbin/nologin \
-    -c "On Demand Compose Service user" odcs
-exit 0
 
 %post
 %systemd_post odcs-backend.service
 
 %preun
 %systemd_preun odcs-backend.service
 
 %postun
@@ -187,19 +187,23 @@ export ODCS_DEVELOPER_ENV=1
 %dir %{_sysconfdir}/odcs
 %config(noreplace) %{_sysconfdir}/odcs/config.py
 %config(noreplace) %{_sysconfdir}/odcs/pungi.conf
 %config(noreplace) %{_sysconfdir}/odcs/raw_config_urls.conf
 %config(noreplace) %{_sysconfdir}/odcs/raw_config_wrapper.conf
 %exclude %{_sysconfdir}/odcs/*.py[co]
 %exclude %{_sysconfdir}/odcs/__pycache__
 %exclude %{python3_sitelib}/odcs/__pycache__
+%{_sysusersdir}/odcs.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.8.1-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.1-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jan 15 2025 Lubomír Sedlář <lsedlar@redhat.com> - 0.8.1-3
 - Remove dependency on python3-nose
 
 * Wed Jan 08 2025 Lubomír Sedlář <lsedlar@redhat.com> - 0.8.1-2
 - Drop dependency on python3-fedora
diff --git oidentd/oidentd.spec oidentd/oidentd.spec.tmp
index b7488f41a3..fb29f79c89 100644
--- oidentd/oidentd.spec
+++ oidentd/oidentd.spec.tmp
@@ -1,14 +1,14 @@
 # Regenerate documentation with asciidoctor
 %bcond_without  oidentd_enables_asciidoctor
 Summary:    RFC 1413-compliant identification server with NAT support
 Name:       oidentd
 Version:    3.1.0
-Release:    7%{?dist}
+Release:    8%{?dist}
 # COPYING:                  GPL-2.0 text
 # COPYING.DOC:              GFDL-1.3 text
 # doc/book/src/download.md:                                 GFDL-1.3-no-invariants-or-later
 # doc/book/src/getting-started/capabilities.md:             GFDL-1.3-no-invariants-or-later
 # doc/book/src/getting-started/configuration/index.md:      GFDL-1.3-no-invariants-or-later
 # doc/book/src/getting-started/configuration/examples.md:   GFDL-1.3-no-invariants-or-later
 # doc/book/src/getting-started/index.md:                    GFDL-1.3-no-invariants-or-later
 # doc/book/src/getting-started/installation.md:             GFDL-1.3-no-invariants-or-later
@@ -104,17 +104,16 @@ BuildRequires:  libnetfilter_conntrack-devel
 BuildRequires:  make
 %if %{with oidentd_enables_asciidoctor}
 # asciidoctor regenerates the documentation
 BuildRequires:  rubygem-asciidoctor
 %endif
 # sed called by ylwrap
 BuildRequires:  sed
 BuildRequires:  systemd-rpm-macros
-Requires(pre):  shadow-utils
 Provides:       identd = %{version}-%{release}
 
 %description
 The oidentd package contains identd, which implements the RFC 1413
 identification server.  Identd looks up specific TCP/IP connections
 and returns either the user name or other information about the
 process that owns the connection.
 
@@ -136,16 +135,21 @@ truncate -c -s 0 src/missing/vasprintf.c
 rm src/cfg_parse.{c,h}
 rm src/cfg_scan.c
 %if %{with oidentd_enables_asciidoctor}
 rm doc/*.{5,8}
 %endif
 # Remove VCS files
 rm doc/book/.gitignore
 
+# Create a sysusers.d config file
+cat >oidentd.sysusers.conf <<EOF
+u oidentd - 'oidentd daemon' / -
+EOF
+
 %build
 autoreconf -fi
 %configure \
     --disable-debug \
     --enable-ipv6 \
     --enable-libnfct \
     --enable-nat \
     --disable-warn \
@@ -154,21 +158,18 @@ autoreconf -fi
 
 %install
 %{make_install}
 install -D -p -m 0644 %{SOURCE3} %{buildroot}%{_unitdir}/oidentd.service
 install -D -p -m 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/oidentd
 install -D -p -m 0644 contrib/systemd/oidentd.socket %{buildroot}%{_unitdir}/
 install -D -p -m 0644 contrib/systemd/oidentd\@.service %{buildroot}%{_unitdir}/
 
-%pre
-getent group oidentd >/dev/null || groupadd -r oidentd
-getent passwd oidentd >/dev/null || \
-    useradd -r -g oidentd -d / -s /sbin/nologin -c "oidentd daemon" oidentd
-exit 0
+install -m0644 -D oidentd.sysusers.conf %{buildroot}%{_sysusersdir}/oidentd.conf
+
 
 %post
 %systemd_post oidentd.service
 
 %preun
 %systemd_preun oidentd.service
 
 %postun
@@ -183,18 +184,22 @@ exit 0
 %dir %{_prefix}/lib/systemd
 %dir %{_unitdir}
 %{_unitdir}/oidentd.service
 %{_unitdir}/oidentd@.service
 %{_unitdir}/oidentd.socket
 %{_sbindir}/oidentd
 %{_mandir}/man5/oidentd*
 %{_mandir}/man8/oidentd.*
+%{_sysusersdir}/oidentd.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.1.0-8
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git omniORB/omniORB.spec omniORB/omniORB.spec.tmp
index 25d7ffdd49..2c2f4259e1 100644
--- omniORB/omniORB.spec
+++ omniORB/omniORB.spec.tmp
@@ -4,17 +4,17 @@
 %global with_systemd 1
 %endif
 
 # openssl enabled by default, add conditional --without openssl
 %bcond_without openssl
 
 Name:           omniORB
 Version:        4.3.2
-Release:        7%{?dist}
+Release:        8%{?dist}
 Summary:        A robust high performance CORBA ORB for C++ and Python
 
 License:        LGPL-2.0-or-later
 URL:            http://omniorb.sourceforge.net
 Source0:        http://downloads.sourceforge.net/project/omniorb/%{name}/%{name}-%{version}/%{name}-%{version}.tar.bz2
 Source1:        omniORB-nameserver.init
 Source2:        omniORB-nameserver.logrotate
 Source3:        omniORB.cfg
@@ -29,17 +29,16 @@ BuildRequires:  zlib-devel
 %if 0%{?with_systemd}
 BuildRequires: systemd
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 %else
 Requires(post): chkconfig
 Requires(preun): chkconfig
-Requires(pre):  shadow-utils
 # This is for /sbin/service
 Requires(postun): initscripts
 %endif
 
 # we don't want to provide private python extension libs
 %{?filter_setup:
 %filter_provides_in %{python3_sitearch}/.*\.so$
 %filter_setup
@@ -91,16 +90,21 @@ developing applications that use %{name}.
 
 %prep
 %autosetup -p1
 # Fix shebangs
 sed -i '1s=^#!/usr/bin/\(python\|env python\)[0-9.]*=#!%{__python3}=' \
   ./src/tool/omniidl/python3/scripts/omniidlrun.py \
   ./src/tool/omniidl/python3/omniidl/main.py
 
+# Create a sysusers.d config file
+cat >omniorb.sysusers.conf <<EOF
+u omniORB - 'OmniNames Naming Service' %{_sharedstatedir}/%{name} -
+EOF
+
 %build
 # Per guidelines: if the same functionality is provided regardless of the interpreter version, only the python 3 version should be packaged
 export PYTHON=%{__python3}
 %configure --disable-static %{?with_openssl:--with-openssl=%{_prefix}}
 %make_build
 
 
 
@@ -139,24 +143,20 @@ mkdir -p %{buildroot}%{_localstatedir}/log/%{name}
 # install man pages
 pushd man
 mkdir -p %{buildroot}%{_mandir}/man1
 install -m 0644 man1/* %{buildroot}%{_mandir}/man1/
 mkdir -p %{buildroot}%{_mandir}/man8
 install -m 0644 man8/* %{buildroot}%{_mandir}/man8/
 popd
 
+install -m0644 -D omniorb.sysusers.conf %{buildroot}%{_sysusersdir}/omniorb.conf
+
 %ldconfig_scriptlets
 
-%pre servers
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /sbin/nologin \
--c "OmniNames Naming Service" %{name}
-exit 0
 
 %if 0%{?with_systemd}
 %post servers
 %systemd_post omniNames.service
 
 %preun servers
 %systemd_preun omniNames.service
 
@@ -204,16 +204,17 @@ fi
 %dir %attr(0755, %{name}, root) %{_localstatedir}/run/%{name}
 %endif
 %config(noreplace) %{_sysconfdir}/%{name}.cfg
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{nameserver}
 %dir %attr(0755, %{name}, root) %{_localstatedir}/log/%{name}
 %{_bindir}/omniMapper
 %{_bindir}/%{nameserver}
 %{_mandir}/man8/*
+%{_sysusersdir}/omniorb.conf
 
 %files devel
 %doc doc/
 %{_bindir}/omniidl
 %{_bindir}/omniidlrun.py
 %{_bindir}/omnicpp
 %{_bindir}/omkdepend
 %{_includedir}/*
@@ -236,16 +237,19 @@ fi
 %{_bindir}/nameclt
 %{_mandir}/man1/catior.1.gz
 %{_mandir}/man1/convertior.1.gz
 %{_mandir}/man1/genior.1.gz
 %{_mandir}/man1/nameclt.1.gz
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.3.2-8
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.3.2-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 4.3.2-6
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.3.2-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git opendkim/opendkim.spec opendkim/opendkim.spec.tmp
index c8e601b45f..91e425b221 100644
--- opendkim/opendkim.spec
+++ opendkim/opendkim.spec.tmp
@@ -8,17 +8,17 @@
 %global upname OpenDKIM
 %global bigname OPENDKIM
 
 %global full_version 2.11.0-Beta2
 
 Summary: A DomainKeys Identified Mail (DKIM) milter to sign and/or verify mail
 Name: opendkim
 Version: 2.11.0
-Release: 0.40%{?dist}
+Release: 0.41%{?dist}
 License: BSD-3-Clause AND Sendmail-Open-Source-1.1
 URL: http://%{name}.org/
 Source0: https://github.com/trusteddomainproject/OpenDKIM/archive/%{full_version}.tar.gz
 Source1: opendkim.conf
 Source2: opendkim.sysconfig
 Source3: SigningTable
 Source4: KeyTable
 Source5: TrustedHosts
@@ -32,17 +32,16 @@ Patch1: opendkim-2.11.0-comment-separator.patch
 Patch2: opendkim-systemd-service-simple.patch
 # https://github.com/trusteddomainproject/OpenDKIM/pull/189
 Patch3: opendkim-CVE-2022-48521-fix.patch
 
 # Required for all versions
 Requires: lib%{name}%{?_isa} = %{version}-%{release}
 BuildRequires: make
 BuildRequires: openssl-devel, libtool, pkgconfig, libbsd, libbsd-devel, opendbx-devel, lua-devel
-Requires(pre): shadow-utils
 
 %{?systemd_requires}
 BuildRequires: systemd
 BuildRequires: libdb-devel
 # Fedora 35+ and CentOS 9+ changed to libmemcached-awesome
 %if 0%{?fedora} >= 35 || 0%{?epel} >= 9
 BuildRequires: libmemcached-awesome-devel
 %else
@@ -81,16 +80,22 @@ Requires: lib%{name}%{?_isa} = %{version}-%{release}
 
 %description -n lib%{name}-devel
 This package contains the static libraries, headers, and other support files
 required for developing applications against libopendkim.
 
 %prep
 %autosetup -p1 -n %{upname}-%{full_version}
 
+# Create a sysusers.d config file
+cat >opendkim.sysusers.conf <<EOF
+u opendkim - '%{upname} Milter' %{_rundir}/%{name} -
+m opendkim mail
+EOF
+
 %build
 autoreconf -iv
 # Always use system libtool instead of pacakge-provided one to
 # properly handle 32 versus 64 bit detection and settings
 %define LIBTOOL LIBTOOL=`which libtool`
 
 %configure --with-odbx --with-db --with-libmemcached --with-openldap --enable-query_cache --with-lua
 
@@ -140,22 +145,18 @@ mkdir -p %{buildroot}%{_sysconfdir}/%{name}
 mkdir %{buildroot}%{_sysconfdir}/%{name}/keys
 
 install -m 0755 stats/%{name}-reportstats %{buildroot}%{_prefix}/sbin/%{name}-reportstats
 sed -i 's|^%{bigname}STATSDIR="/var/db/%{name}"|%{bigname}STATSDIR="%{_localstatedir}/spool/%{name}"|g' %{buildroot}%{_prefix}/sbin/%{name}-reportstats
 sed -i 's|^%{bigname}DATOWNER="mailnull:mailnull"|%{bigname}DATOWNER="%{name}:%{name}"|g' %{buildroot}%{_prefix}/sbin/%{name}-reportstats
 
 chmod 0644 contrib/convert/convert_keylist.sh
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-	useradd -r -g %{name} -G mail -d %{_rundir}/%{name} -s /sbin/nologin \
-	-c "%{upname} Milter" %{name}
-exit 0
+install -m0644 -D opendkim.sysusers.conf %{buildroot}%{_sysusersdir}/opendkim.conf
+
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %postun
@@ -193,16 +194,17 @@ exit 0
 %{_mandir}/man8/opendkim.8.gz
 %dir %attr(-,%{name},%{name}) %{_localstatedir}/spool/%{name}
 %dir %attr(0750,%{name},%{name}) %{_rundir}/%{name}
 %dir %attr(-,root,%{name}) %{_sysconfdir}/%{name}
 %dir %attr(0750,root,%{name}) %{_sysconfdir}/%{name}/keys
 %attr(0755,root,root) %{_sbindir}/%{name}-default-keygen
 
 %attr(0644,root,root) %{_unitdir}/%{name}.service
+%{_sysusersdir}/opendkim.conf
 
 %files -n libopendkim
 %license LICENSE LICENSE.Sendmail
 %doc README
 %{_libdir}/lib%{name}.so.*
 
 %files -n opendkim-tools
 %license LICENSE LICENSE.Sendmail
@@ -218,16 +220,19 @@ exit 0
 %files -n libopendkim-devel
 %license LICENSE LICENSE.Sendmail
 %doc lib%{name}/docs/*.html
 %{_includedir}/%{name}
 %{_libdir}/*.so
 %{_libdir}/pkgconfig/*.pc
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.11.0-0.41
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.11.0-0.40
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.11.0-0.39
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.11.0-0.38
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git opendmarc/opendmarc.spec opendmarc/opendmarc.spec.tmp
index 7c75c08acc..9ec62b1410 100644
--- opendmarc/opendmarc.spec
+++ opendmarc/opendmarc.spec.tmp
@@ -17,17 +17,16 @@ Patch01:   opendmarc-1.4.0-ticket159-179.patch
 
 # Patch for non security bug cve-2024-25768
 # https://github.com/trusteddomainproject/OpenDMARC/issues/256
 Patch02: cve-2024-25768.patch
 
 
 # Required for all versions
 Requires: lib%{name}%{?_isa} = %{version}-%{release}
-Requires(pre): shadow-utils
 BuildRequires: autoconf
 BuildRequires: automake
 BuildRequires: make
 BuildRequires: libbsd
 BuildRequires: libbsd-devel
 BuildRequires: libspf2-devel
 BuildRequires: libtool
 BuildRequires: openssl-devel
@@ -64,16 +63,22 @@ Requires: lib%{name}%{?_isa} = %{version}-%{release}
 
 %description -n lib%{name}-devel
 This package contains the static libraries, headers, and other support files
 required for developing applications against libopendmarc.
 
 %prep
 %autosetup -p1 -n OpenDMARC-rel-opendmarc-1-4-2
 
+# Create a sysusers.d config file
+cat >opendmarc.sysusers.conf <<EOF
+u opendmarc - 'OpenDMARC Milter' %{_rundir}/%{name} -
+m opendmarc mail
+EOF
+
 %build
 autoreconf -v -i
 %configure \
   --with-sql-backend \
   --with-spf \
   --with-spf2-include=%{_prefix}/include/spf2 \
   --with-spf2-lib=%{_libdir}/
 %make_build
@@ -138,22 +143,18 @@ mkdir -p %{buildroot}%{_rundir}/%{name}
 mkdir -p %{buildroot}%{_datadir}/%{name}/contrib
 cp -R db/ %{buildroot}%{_datadir}/%{name}
 sed -i -e 's:/usr/local/bin/python:/usr/bin/python:' contrib/rddmarc/dmarcfail.py
 cp -R contrib/rddmarc/ %{buildroot}%{_datadir}/%{name}/contrib
 # not much point including the Makefiles
 rm -f %{buildroot}%{_datadir}/%{name}/contrib/rddmarc/Makefile*
 rm -f %{buildroot}%{_datadir}/%{name}/db/Makefile*
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-	useradd -r -g %{name} -G mail -d %{_rundir}/%{name} -s /sbin/nologin \
-	-c "OpenDMARC Milter" %{name}
-exit 0
+install -m0644 -D opendmarc.sysusers.conf %{buildroot}%{_sysusersdir}/opendmarc.conf
+
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %postun
@@ -174,16 +175,17 @@ exit 0
 %{_sbindir}/opendmarc-importstats
 %{_sbindir}/opendmarc-params
 %{_sbindir}/opendmarc-reports
 %{_mandir}/*/*
 %dir %attr(-,%{name},%{name}) %{_localstatedir}/spool/%{name}
 %dir %attr(710,%{name},mail) %{_rundir}/%{name}
 %dir %attr(-,%{name},%{name}) %{_sysconfdir}/%{name}
 %attr(0644,root,root) %{_unitdir}/%{name}.service
+%{_sysusersdir}/opendmarc.conf
 
 %files -n libopendmarc
 %{_libdir}/lib%{name}.so.*
 
 %files -n libopendmarc-devel
 %doc lib%{name}/docs/*.html
 %{_includedir}/%{name}
 %{_libdir}/*.so
diff --git opendnssec/opendnssec.spec opendnssec/opendnssec.spec.tmp
index 363399edb0..ca42bf2ee9 100644
--- opendnssec/opendnssec.spec
+++ opendnssec/opendnssec.spec.tmp
@@ -1,15 +1,15 @@
 %global prever rc1
 %global _hardened_build 1
 
 Summary: DNSSEC key and zone management software
 Name: opendnssec
 Version: 2.1.14
-Release: 0.4rc1%{?dist}
+Release: 0.5rc1%{?dist}
 License: BSD-2-Clause
 Url: http://www.opendnssec.org/
 Source0: http://www.opendnssec.org/files/source/%{?prever:testing/}%{name}-%{version}%{?prever}.tar.gz
 Source10: http://www.opendnssec.org/files/source/%{?prever:testing/}%{name}-%{version}%{?prever}.tar.gz.sig
 Source1: ods-enforcerd.service
 Source2: ods-signerd.service
 Source3: ods.sysconfig
 Source4: conf.xml
@@ -30,17 +30,16 @@ BuildRequires:  gcc
 BuildRequires: ldns-devel >= 1.6.12, sqlite-devel >= 3.0.0, openssl-devel
 BuildRequires: libxml2-devel CUnit-devel, doxygen
 # It tests for pkill/killall and would use /bin/false if not found
 BuildRequires: procps-ng
 BuildRequires: perl-interpreter
 BuildRequires: libmicrohttpd-devel jansson-devel libyaml-devel
 
 BuildRequires: systemd-units
-Requires(pre): shadow-utils
 Requires(post): systemd-units
 Requires(preun): systemd-units
 Requires(postun): systemd-units
 %if 0%{?prever:1}
 # For building development snapshots
 Buildrequires: autoconf, automake, libtool
 %ifarch %{java_arches}
 Buildrequires: java
@@ -61,16 +60,21 @@ name server. It requires a PKCS#11 crypto module library, such as softhsm
 %patch -P5 -p1
 
 # Prevent re-running autoconf.
 touch -r aclocal.m4 configure* m4/*
 
 # bump default policy ZSK keysize to 2048
 sed -i "s/1024/2048/" conf/kasp.xml.in
 
+# Create a sysusers.d config file
+cat >opendnssec.sysusers.conf <<EOF
+u ods - 'opendnssec daemon account' /etc/opendnssec -
+EOF
+
 %build
 export LDFLAGS="-Wl,-z,relro,-z,now -pie -specs=/usr/lib/rpm/redhat/redhat-hardened-ld"
 export CFLAGS="$RPM_OPT_FLAGS -fPIE -pie -Wextra -Wformat -Wformat-nonliteral -Wformat-security"
 export CXXFLAGS="$RPM_OPT_FLAGS -fPIE -pie -Wformat-nonliteral -Wformat-security"
 %if 0%{?prever:1}
 # for development snapshots
 autoreconf
 %endif
@@ -104,16 +108,18 @@ cp -a enforcer/src/db/schema.* %{buildroot}%{_datadir}/opendnssec/migration/1.4-
 cp -a %{SOURCE7} %{buildroot}%{_datadir}/opendnssec/migration/1.4-2.0_db_convert/sqlite_convert.sql
 cp -a %{SOURCE8} %{buildroot}%{_datadir}/opendnssec/migration/1.4-2.0_db_convert/rpmversion.sql
 sed -i "s:^SCHEMA=.*schema:SCHEMA=%{_datadir}/opendnssec/migration/1.4-2.0_db_convert/schema:" %{buildroot}%{_datadir}/opendnssec/migration/1.4-2.0_db_convert/convert_sqlite
 sed -i "s:find_problematic_zones.sql:%{_datadir}/opendnssec/migration/1.4-2.0_db_convert/find_problematic_zones.sql:g" %{buildroot}%{_datadir}/opendnssec/migration/1.4-2.0_db_convert/convert_sqlite
 sed -i "s:^SCHEMA=.*schema:SCHEMA=%{_datadir}/opendnssec/migration/1.4-2.0_db_convert/schema:" %{buildroot}%{_datadir}/opendnssec/migration/1.4-2.0_db_convert/convert_mysql
 sed -i "s:find_problematic_zones.sql:%{_datadir}/opendnssec/migration/1.4-2.0_db_convert/find_problematic_zones.sql:g" %{buildroot}%{_datadir}/opendnssec/migration/1.4-2.0_db_convert/convert_mysql
 sed -i "s:sqlite_convert.sql:%{_datadir}/opendnssec/migration/1.4-2.0_db_convert/sqlite_convert.sql:g" %{buildroot}%{_datadir}/opendnssec/migration/1.4-2.0_db_convert/convert_sqlite
 
+install -m0644 -D opendnssec.sysusers.conf %{buildroot}%{_sysusersdir}/opendnssec.conf
+
 
 %files
 %{_unitdir}/ods-enforcerd.service
 %{_unitdir}/ods-signerd.service
 %config(noreplace) %{_tmpfilesdir}/opendnssec.conf
 %attr(0770,root,ods) %dir %{_sysconfdir}/opendnssec
 %attr(0770,root,ods) %dir %{_localstatedir}/opendnssec
 %attr(0770,root,ods) %dir %{_localstatedir}/opendnssec/tmp
@@ -126,23 +132,18 @@ sed -i "s:sqlite_convert.sql:%{_datadir}/opendnssec/migration/1.4-2.0_db_convert
 %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cron.d/opendnssec
 %doc NEWS README.md
 %license LICENSE
 %{_mandir}/*/*
 %{_sbindir}/*
 %{_bindir}/*
 %attr(0755,root,root) %dir %{_datadir}/opendnssec
 %{_datadir}/opendnssec/*
+%{_sysusersdir}/opendnssec.conf
 
-%pre
-getent group ods >/dev/null || groupadd -r ods
-getent passwd ods >/dev/null || \
-useradd -r -g ods -d /etc/opendnssec -s /sbin/nologin \
--c "opendnssec daemon account" ods
-exit 0
 
 %post
 # Initialise a slot on the softhsm on first install
 if [ "$1" -eq 1 ]; then
    %{_sbindir}/runuser -u ods -- %{_bindir}/softhsm2-util --init-token \
                 --free --label "OpenDNSSEC" --pin 1234 --so-pin 1234
    if [ ! -s %{_localstatedir}/opendnssec/kasp.db ]; then
       echo y | %{_sbindir}/ods-enforcer-db-setup
@@ -191,16 +192,19 @@ ods-enforcer update all >/dev/null 2>/dev/null ||:
 %systemd_preun ods-enforcerd.service
 %systemd_preun ods-signerd.service
 
 %postun
 %systemd_postun_with_restart ods-enforcerd.service
 %systemd_postun_with_restart ods-signerd.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.1.14-0.5rc1
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.14-0.4rc1
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Oct 22 2024 Richard W.M. Jones <rjones@redhat.com> - 2.1.14-0.3rc1
 - Rebuild for Jansson 2.14
   (https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/3PYINSQGKQ4BB25NQUI2A2UCGGLAG5ND/)
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.14-0.2rc1
diff --git openelp/openelp.spec openelp/openelp.spec.tmp
index a0a9b0a2f3..55db106cd8 100644
--- openelp/openelp.spec
+++ openelp/openelp.spec.tmp
@@ -1,26 +1,25 @@
 Name:           openelp
 Version:        0.9.3
-Release:        4%{?dist}
+Release:        5%{?dist}
 Summary:        Open Source EchoLink Proxy
 
 # Automatically converted from old format: BSD - review is highly recommended.
 License:        LicenseRef-Callaway-BSD
 URL:            https://github.com/cottsay/%{name}
 Source0:        https://github.com/cottsay/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
 
 BuildRequires:  cmake3
 BuildRequires:  doxygen
 BuildRequires:  firewalld-filesystem
 BuildRequires:  gcc
 BuildRequires:  openssl-devel
 BuildRequires:  pkgconfig(libpcre2-8)
 BuildRequires:  systemd
-Requires(pre):  shadow-utils
 Requires(post): firewalld-filesystem
 Requires(post): /sbin/ldconfig
 Requires(postun): /sbin/ldconfig
 
 %description
 OpenELP is an open source EchoLink proxy for Linux and Windows. It aims to be
 efficient and maintain a small footprint, while still implementing all of the
 features present in the official EchoLink proxy.
@@ -40,16 +39,21 @@ which utilizes OpenELP, and Open Source EchoLink Proxy.
 
 
 %prep
 %autosetup -p1
 
 # Remove bundled md5, use OpenSSL instead
 rm src/md5.c
 
+# Create a sysusers.d config file
+cat >openelp.sysusers.conf <<EOF
+u openelp - 'EchoLink Proxy' / -
+EOF
+
 
 %build
 %cmake3 \
   -DOPENELP_USE_OPENSSL:BOOL=ON \
   %{nil}
 
 %cmake3_build -- all doc
 
@@ -66,26 +70,23 @@ grep ^ExecStart= %{buildroot}%{_unitdir}/%{name}.service | \
   sed 's|.*openelpd *\(.*\) %{_sysconfdir}/ELProxy.conf|\1|' | \
   sed 's|\(.*\)|# Options for openelpd\nOPTIONS="\1"|' > %{buildroot}%{_sysconfdir}/sysconfig/openelpd
 sed -i '/^\[Service\]$/a EnvironmentFile=-%{_sysconfdir}/sysconfig/openelpd' %{buildroot}%{_unitdir}/%{name}.service
 sed -i 's|\(ExecStart=.*openelpd\).*|\1 \$OPTIONS %{_sysconfdir}/ELProxy.conf|' %{buildroot}%{_unitdir}/%{name}.service
 
 # Manually install the firewalld service
 install -m0644 -p -D doc/%{name}.xml %{buildroot}%{_prefix}/lib/firewalld/services/%{name}.xml
 
+install -m0644 -D openelp.sysusers.conf %{buildroot}%{_sysusersdir}/openelp.conf
+
 
 %check
 %ctest3
 
 
-%pre
-getent group openelp >/dev/null || groupadd -r openelp
-getent passwd openelp >/dev/null || \
-    useradd -r -g openelp -d / -s /sbin/nologin \
-    -c "EchoLink Proxy" openelp
 
 %post
 %{?ldconfig}
 %firewalld_reload
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
@@ -100,24 +101,28 @@ getent passwd openelp >/dev/null || \
 %doc AUTHORS README.md TODO.md
 %{_bindir}/%{name}d
 %{_libdir}/lib%{name}.so.*
 %{_mandir}/man1/openelpd.1.*
 %{_prefix}/lib/firewalld/services/%{name}.xml
 %attr(0640, openelp, root) %config(noreplace) %{_sysconfdir}/ELProxy.conf
 %config(noreplace) %{_sysconfdir}/sysconfig/openelpd
 %{_unitdir}/%{name}.service
+%{_sysusersdir}/openelp.conf
 
 %files devel
 %doc %{?__cmake3_builddir}%{!?__cmake3_builddir:%{__cmake_builddir}}/doc/html
 %{_includedir}/%{name}
 %{_libdir}/lib%{name}.so
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.9.3-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.3-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Sep 02 2024 Miroslav Suchý <msuchy@redhat.com> - 0.9.3-3
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.3-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git openni-primesense/openni-primesense.spec openni-primesense/openni-primesense.spec.tmp
index f85af041fa..60d87a0698 100644
--- openni-primesense/openni-primesense.spec
+++ openni-primesense/openni-primesense.spec.tmp
@@ -8,17 +8,17 @@
 %endif
 %ifarch %arm
 %global niarch Arm
 %endif
 
 
 Name:           openni-primesense
 Version:        5.1.6.6
-Release:        29%{?gitrev}%{?dist}
+Release:        30%{?gitrev}%{?dist}
 Summary:        PrimeSensor/Kinect Modules for OpenNI
 License:        Apache-2.0
 URL:            https://github.com/PrimeSense/Sensor
 
 Source0:        https://github.com/PrimeSense/Sensor/archive/%{commit}/Sensor-%{commit}.tar.gz
 Source1:        openni-primesense-55-primesense-usb.rules
 Patch0:         openni-primesense-5.1.6.6-fedora.patch
 Patch1:         openni-primesense-5.1.6.6-willowgarage.patch
@@ -28,17 +28,16 @@ ExclusiveArch:  x86_64 %{arm}
 
 BuildRequires:  make
 BuildRequires:  gcc-c++
 BuildRequires:  openni-devel >= 1.5.0.0
 BuildRequires:  libjpeg-devel
 BuildRequires:  systemd-rpm-macros
 Requires:       openni >= 1.5.0.0
 Requires:       udev
-Requires(pre):  shadow-utils
 
 %description
 This modules enables OpenNI to make use of the PrimeSense, also known as
 Kinect depth camera.
 
 %package        devel
 Summary:        Development files for %{name}
 Requires:       %{name} = %{version}-%{release}
@@ -54,16 +53,21 @@ developing applications that use %{name}.
 %patch 0 -p0 -b .fedora
 %patch 1 -p0 -b .willow
 %patch 2 -p0 -b .sse
 %patch 3 -p0 -b .softfloat
 
 rm -rf Source/External/LibJPEG
 rm -rf Platform/Android Platform/Win32
 
+# Create a sysusers.d config file
+cat >openni-primesense.sysusers.conf <<EOF
+g primesense -
+EOF
+
 %build
 cd Platform/Linux/CreateRedist
 # Add SSE_GENERATION=2 (or 3) to enable SSE
 sed -i 's|make -j$(calc_jobs_number) -C ../Build|make -C ../Build CFLAGS_EXT="%{optflags} -Wno-unknown-pragmas" LDFLAGS_EXT="%{optflags}" DEBUG=1|' RedistMaker
 ./RedistMaker
 
 
 %install
@@ -83,20 +87,19 @@ popd
 #mkdir $RPM_BUILD_ROOT%{_bindir}
 #install -p -m 0755 Platform/Linux/Redist/Sensor-Bin-Linux-%{niarch}-v%{version}/Bin/XnSensorServer $RPM_BUILD_ROOT%{_bindir}/XnSensorServer
 
 rm -rf $RPM_BUILD_ROOT%{_var}/log/primesense
 
 rm $RPM_BUILD_ROOT%{_sysconfdir}/udev/rules.d/55-primesense-usb.rules
 install -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_udevrulesdir}/55-primesense-usb.rules
 
+install -m0644 -D openni-primesense.sysusers.conf %{buildroot}%{_sysusersdir}/openni-primesense.conf
+
 
-%pre
-getent group primesense >/dev/null || groupadd -r primesense
-exit 0
 
 %post
 /sbin/ldconfig
 if [ $1 == 1 ]; then
   niReg -r %{_libdir}/libXnDeviceSensorV2.so
   niReg -r %{_libdir}/libXnDeviceFile.so
 fi
 
@@ -113,18 +116,22 @@ fi
 
 %files
 %doc LICENSE 
 %dir %{_sysconfdir}/openni/primesense
 %config(noreplace) %{_sysconfdir}/openni/primesense/*
 %{_udevrulesdir}/55-primesense-usb.rules
 %{_libdir}/*.so
 %{_bindir}/XnSensorServer
+%{_sysusersdir}/openni-primesense.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 5.1.6.6-30
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5.1.6.6-29
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.1.6.6-28
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Sat Feb 03 2024 Scott K Logan <logans@cottsay.net> - 5.1.6.6-27
 - Disable parallelism in makefile to avoid an unknown bug
diff --git opensmtpd/opensmtpd.spec opensmtpd/opensmtpd.spec.tmp
index 30a9dbaa22..84655bb102 100644
--- opensmtpd/opensmtpd.spec
+++ opensmtpd/opensmtpd.spec.tmp
@@ -3,17 +3,17 @@
 %global _with_pam	1
 
 # Berkeley DB support
 %global _with_bdb	1
 
 Summary:	Free implementation of the server-side SMTP protocol as defined by RFC 5321
 Name:		opensmtpd
 Version:	7.6.0p1
-Release:	3%{?dist}
+Release:	4%{?dist}
 
 License:	ISC
 URL:		http://www.opensmtpd.org/
 Provides:	MTA smtpd smtpdaemon server(smtp)
 
 Source0:	http://www.opensmtpd.org/archives/%{name}-%{version}.tar.gz
 Source1:	opensmtpd.service
 Source2:	opensmtpd.pam
@@ -34,17 +34,16 @@ BuildRequires:	make
 BuildRequires:	automake
 BuildRequires:	libtool
 
 Requires(post):		systemd
 Requires(preun):	systemd
 Requires(postun):	systemd
 BuildRequires:		systemd
 
-Requires(pre):		shadow-utils
 
 %if "%{_sbindir}" == "%{_bindir}"
 # Compat symlinks for Requires in other packages.
 # We rely on filesystem to create the symlinks for us.
 Requires:       filesystem(unmerged-sbin-symlinks)
 Provides:       /usr/sbin/sendmail
 %endif
 
@@ -63,16 +62,22 @@ This package uses standard "alternatives" mechanism, you may call
 if you want to switch to OpenSMTPD MTA immediately after install, and
 "alternatives --set mta %{_sbindir}/sendmail.sendmail" to revert
 back to Sendmail as a default mail daemon.
 
 
 %prep
 %autosetup
 
+# Create a sysusers.d config file
+cat >opensmtpd.sysusers.conf <<EOF
+u smtpd - 'opensmtpd privsep user' %{_localstatedir}/empty/smtpd -
+u smtpq - 'opensmtpd queue user' %{_localstatedir}/empty/smtpd -
+EOF
+
 %build
 export CFLAGS="%{optflags}"
 
 %configure \
     --sysconfdir=%{_sysconfdir}/opensmtpd \
     --with-path-CAfile=%{_sysconfdir}/pki/tls/cert.pem \
     --with-mantype=man \
     %if 0%{?_with_pam}
@@ -140,24 +145,18 @@ done
 
 # fix aliases path in the config
 sed -i -e 's|/etc/mail/aliases|/etc/aliases|g' %{buildroot}/%{_sysconfdir}/opensmtpd/smtpd.conf
 ln -s %{_sysconfdir}/aliases %{buildroot}/%{_sysconfdir}/opensmtpd/aliases
 
 # set mbox delivery method
 sed -i -e 's|^action "local" maildir|action "local" mbox|g' %{buildroot}/%{_sysconfdir}/opensmtpd/smtpd.conf
 
-%pre
-getent group smtpd &>/dev/null || %{_sbindir}/groupadd -r smtpd
-getent group smtpq &>/dev/null || %{_sbindir}/groupadd -r smtpq
-getent passwd smtpd &>/dev/null || \
-    %{_sbindir}/useradd -r -g smtpd -s /sbin/nologin -c "opensmtpd privsep user" -d %{_localstatedir}/empty/smtpd smtpd
-getent passwd smtpq &>/dev/null || \
-    %{_sbindir}/useradd -r -g smtpq -s /sbin/nologin -c "opensmtpd queue user" -d %{_localstatedir}/empty/smtpd smtpq
-exit 0
+install -m0644 -D opensmtpd.sysusers.conf %{buildroot}%{_sysusersdir}/opensmtpd.conf
+
 
 %post
 %systemd_post %{name}.service
 %{_sbindir}/alternatives --install %{_sbindir}/sendmail mta %{_sbindir}/sendmail.opensmtpd 10 \
 	--slave %{_bindir}/mailq mta-mailq %{_bindir}/mailq.opensmtpd \
 	%if 0%{?_with_pam}
 	--slave /etc/pam.d/smtp mta-pam /etc/pam.d/smtp.opensmtpd \
 	%endif
@@ -248,19 +247,23 @@ exit 0
 %ghost %attr(0755,root,root) %{_sbindir}/sendmail
 %ghost %attr(0755,root,root) %{_bindir}/mailq
 %ghost %attr(0755,root,root) /usr/lib/sendmail
 %ghost %{_mandir}/man1/mailq.1.gz
 %ghost %{_mandir}/man5/aliases.5.gz
 %ghost %{_mandir}/man8/sendmail.8.gz
 %ghost %{_mandir}/man8/smtp.8.gz
 %ghost %{_mandir}/man8/smtpd.8.gz
+%{_sysusersdir}/opensmtpd.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 7.6.0p1-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 7.6.0p1-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 7.6.0p1-2
 - Rebuilt for the bin-sbin merge (2nd attempt)
 
 * Fri Jan 03 2025 Denis Fateyev <denis@fateyev.com> - 7.6.0p1-1
 - Update to 7.6.0p1 release
diff --git openvpn/openvpn.spec openvpn/openvpn.spec.tmp
index 0e0d8e7171..8733a88526 100644
--- openvpn/openvpn.spec
+++ openvpn/openvpn.spec.tmp
@@ -17,17 +17,17 @@
 %endif
 
 # Build conditionals
 # tests_long - Enabled by default, enables long running tests in %%check
 %bcond_without tests_long
 
 Name:              openvpn
 Version:           2.6.13
-Release:           1%{?dist}
+Release:           2%{?dist}
 Summary:           A full-featured TLS VPN solution
 URL:               https://community.openvpn.net/
 Source0:           https://build.openvpn.net/downloads/releases/%{name}-%{version}.tar.gz
 Source1:           https://build.openvpn.net/downloads/releases/%{name}-%{version}.tar.gz.asc
 Source2:           roadwarrior-server.conf
 Source3:           roadwarrior-client.conf
 # Upstream signing key
 Source10:          gpgkey-F554A3687412CFFEBDEFE0A312F5F7B42F2B01E7.gpg
@@ -57,17 +57,16 @@ BuildRequires:     pkcs11-helper-devel >= 1.11
 %endif
 BuildRequires:     pam-devel
 BuildRequires:     libselinux-devel
 BuildRequires:     libcmocka-devel
 BuildRequires:     systemd
 BuildRequires:     systemd-devel
 
 %{?systemd_requires}
-Requires(pre):     /usr/sbin/useradd
 
 %if %{with dco}
 Recommends:        kmod-ovpn-dco >= 0.2
 %endif
 
 BuildRequires:  python3-docutils
 
 # For the perl_default_filter macro
@@ -100,16 +99,21 @@ gpgv2 --quiet --keyring %{SOURCE10} %{SOURCE1} %{SOURCE0}
 %patch -P 1 -p1
 %patch -P 2 -p1
 %patch -P 50 -p1
 
 # %%doc items shouldn't be executable.
 find contrib sample -type f -perm /100 \
     -exec chmod a-x {} \;
 
+# Create a sysusers.d config file
+cat >openvpn.sysusers.conf <<EOF
+u openvpn - 'OpenVPN' /etc/openvpn -
+EOF
+
 %build
 %configure \
     --enable-silent-rules \
     --with-crypto-library=openssl \
     %{?with_pkcs11:--enable-pkcs11} \
     --enable-selinux \
     --enable-systemd \
     --enable-x509-alt-username \
@@ -180,23 +184,19 @@ cp -a AUTHORS ChangeLog contrib sample distro/systemd/README.systemd $RPM_BUILD_
 sed -e "s|^#!/usr/bin/env.*python3$|#!%{python3} -%{py3_shebang_flags}|" \
     -i $RPM_BUILD_ROOT%{_pkgdocdir}/contrib/extract-crl/extractcrl.py
 
 # Remove some files which does not really belong here
 rm -f  $RPM_BUILD_ROOT%{_pkgdocdir}/sample/Makefile{,.in,.am}
 rm -f  $RPM_BUILD_ROOT%{_pkgdocdir}/contrib/multilevel-init.patch
 rm -rf $RPM_BUILD_ROOT%{_pkgdocdir}/sample/sample-keys
 
+install -m0644 -D openvpn.sysusers.conf %{buildroot}%{_sysusersdir}/openvpn.conf
+
 
-%pre
-getent group openvpn &>/dev/null || groupadd -r openvpn
-getent passwd openvpn &>/dev/null || \
-    useradd -r -g openvpn -s /sbin/nologin -c OpenVPN \
-        -d /etc/openvpn openvpn
-exit 0
 
 %post
 for srv in `systemctl | awk '/openvpn-client@.*\.service/{print $1} /openvpn-server@.*\.service/{print $1}'`;
 do
     %systemd_post $srv
 done
 
 %preun
@@ -223,24 +223,28 @@ done
 %{_unitdir}/%{name}-server@.service
 %{_tmpfilesdir}/%{name}.conf
 %config %dir %{_sysconfdir}/%{name}/
 %config %dir %attr(-,-,openvpn) %{_sysconfdir}/%{name}/client
 %config %dir %attr(-,-,openvpn) %{_sysconfdir}/%{name}/server
 %attr(0770,openvpn,openvpn) %{_sharedstatedir}/%{name}
 %dir %attr(0750,-,openvpn) %{_rundir}/openvpn-client
 %dir %attr(0750,-,openvpn) %{_rundir}/openvpn-server
+%{_sysusersdir}/openvpn.conf
 
 %files devel
 %{_pkgdocdir}/sample/sample-plugins
 %{_includedir}/openvpn-plugin.h
 %{_includedir}/openvpn-msg.h
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.6.13-2
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Jan 16 2025 Frank Lichtenheld <frank@lichtenheld.com> - 2.6.13-1
 - Update to upstream OpenVPN 2.6.13 (RHBZ#2338321)
 - Remove RHEL 7 compat code
 
 * Mon Jul 29 2024 Miroslav Suchý <msuchy@redhat.com> - 2.6.12-2
 - convert license to SPDX
 
 * Thu Jul 18 2024 Frank Lichtenheld <frank@lichtenheld.com> - 2.6.12-1
diff --git owfs/owfs.spec owfs/owfs.spec.tmp
index a96efa47fc..a69f3a9aa0 100644
--- owfs/owfs.spec
+++ owfs/owfs.spec.tmp
@@ -8,17 +8,17 @@
 %bcond_without  php
 %endif
 
 %{!?tcl_version: %global tcl_version %(echo 'puts $tcl_version' | tclsh)}
 %{!?tcl_sitearch: %global tcl_sitearch %{_prefix}/%{_lib}/tcl%{tcl_version}}
 
 Name:		owfs
 Version:	3.2p4
-Release:	10%{?dist}
+Release:	11%{?dist}
 Summary:	1-Wire Virtual File System
 
 # some parts licensed differently, see http://owfs.org/index.php?page=license
 License:	GPL-2.0-only
 URL:		http://www.owfs.org/
 Source0:	https://github.com/%{name}/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.gz
 Source1:	owserver.xml
 # install into 'vendor' perl directories; not suitable for upstream
@@ -108,17 +108,16 @@ Requires: %{name}-server
 %description ftpd
 %{name}-ftpd is a FTP daemon on top of %{name} providing access to 1-Wire networks.
 
 
 %package server
 Summary: Back-end server (daemon) for 1-wire control
 Requires: %{name}-libs%{?_isa} = %{version}-%{release}
 Requires: firewalld-filesystem
-Requires(pre): shadow-utils
 BuildRequires: firewalld-filesystem
 BuildRequires: libftdi-devel
 
 %description server
 %{name}-server is the back-end component of the OWFS 1-wire bus control system.
 owserver arbitrates access to the bus from multiple client processes. The
 physical bus is usually connected to a serial or USB port, and other processes
 connect to owserver over network sockets (TCP port). Communication can be local
@@ -184,16 +183,21 @@ and owpresent.
 # Perl dirs
 %patch -P0 -p1
 %patch -P1 -p1
 
 sed -i -e 's/) Makefile.PL/& INSTALLDIRS=vendor/' \
 	module/swig/perl5/Makefile.am \
 	module/ownet/perl5/Makefile.am
 
+# Create a sysusers.d config file
+cat >owfs.sysusers.conf <<EOF
+u ow - '1-wire file-system (OWFS) utilities account' /var/empty -
+EOF
+
 
 %build
 ./bootstrap
 %configure --disable-rpath \
 %if %{without php}
   --disable-owphp \
 %endif
   --disable-owperl
@@ -220,23 +224,18 @@ rm -f %{buildroot}%{_libdir}/libowcapi.la
 rm -f %{buildroot}%{_libdir}/libownet.la
 rm -f %{buildroot}%{php_extdir}/libowphp.la
 rm -f %{buildroot}%{tcl_sitearch}/ow.la
 
 rm -f %{buildroot}/usr/local/lib64/perl5/auto/OWNet/.packlist
 
 install -Dm 0644 %{SOURCE1} %{buildroot}%{_prefix}/lib/firewalld/services/owserver.xml
 
-%pre server
-# TODO: migrate to systemd-sysusers when guidelines are ready
-getent group ow >/dev/null || groupadd -r ow
-getent passwd ow >/dev/null || \
-    useradd -r -g ow -d /var/empty -s /sbin/nologin \
-    -c "1-wire file-system (OWFS) utilities account" ow
-exit 0
+install -m0644 -D owfs.sysusers.conf %{buildroot}%{_sysusersdir}/owfs.conf
+
 
 
 %post fs
 %systemd_post owfs.service
 
 %post httpd
 %systemd_post owhttpd.service
 
@@ -340,16 +339,17 @@ exit 0
 
 %files server
 %{_bindir}/owserver
 %{_bindir}/owexternal
 %{_mandir}/man1/owserver.1.*
 %{_unitdir}/owserver.service
 %{_unitdir}/owserver.socket
 %{_prefix}/lib/firewalld/services/owserver.xml
+%{_sysusersdir}/owfs.conf
 
 
 %files tap
 %doc COPYING
 %{_bindir}/owtap
 %{_mandir}/man1/owtap.1.*
 
 
@@ -371,16 +371,19 @@ exit 0
 %dir %{tcl_sitearch}/owtcl-*
 %{tcl_sitearch}/owtcl-*/*
 %{_mandir}/mann/owtcl.n.*
 %{_mandir}/mann/ow.n.*
 
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.2p4-11
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.2p4-10
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Oct 14 2024 Remi Collet <remi@fedoraproject.org> - 3.2p4-9
 - rebuild for https://fedoraproject.org/wiki/Changes/php84
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.2p4-8
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git parsec/parsec.spec parsec/parsec.spec.tmp
index 5fa542d702..dbadb6d1fb 100644
--- parsec/parsec.spec
+++ parsec/parsec.spec.tmp
@@ -4,33 +4,32 @@
 
 # prevent library files from being installed
 %global cargo_install_lib 0
 
 %global enabled_cargo_features default,tpm-provider,pkcs11-provider,mbed-crypto-provider,direct-authenticator,unix-peer-credentials-authenticator
 
 Name:          parsec
 Version:       1.4.1
-Release:       3%{?candidate:.%{candidate}}%{?dist}
+Release:       4%{?candidate:.%{candidate}}%{?dist}
 Summary:       The PARSEC daemon
 
 SourceLicense: Apache-2.0
 # LICENSE.dependencies contains a full license breakdown
 License:       Apache-2.0
 URL:           https://github.com/parallaxsecond/parsec
 Source0:       %{url}/archive/v%{version}/%{name}-%{version}%{?candidate:-%{candidate}}.tar.gz
 Source1:       parsec.service
 Source2:       config.toml
 Source3:       parsec.tmpfile.conf
 Patch1:        parsec-fix-metadata.diff
 
 BuildRequires: rust-packaging
 BuildRequires: systemd
 Requires: tpm2-tss >= 4.0.0
-Requires(pre): shadow-utils
 Requires(pre): tpm2-tss >= 4.0.0
 %{?systemd_requires}
 
 %description
 PARSEC is the Platform AbstRaction for SECurity, an open-source initiative to
 provide a common API to hardware security and cryptographic services in a
 platform-agnostic way. This abstraction layer keeps workloads decoupled from
 physical platform details, enabling cloud-native delivery flows within the data
@@ -38,45 +37,46 @@ center and at the edge.
 
 %prep
 %autosetup -p1 -n %{name}-%{version}%{?candidate:-%{candidate}}
 %cargo_prep
 
 %generate_buildrequires
 %cargo_generate_buildrequires -f %{enabled_cargo_features}
 
+# Create a sysusers.d config file
+cat >parsec.sysusers.conf <<EOF
+g parsec-clients -
+u parsec - 'PARSEC service' /var/lib/parsec -
+m parsec parsec-clients
+EOF
+
 %build
 %cargo_build -f %{enabled_cargo_features}
 %{cargo_license_summary}
 %{cargo_license} > LICENSE.dependencies
 
 %install
 %cargo_install -f %{enabled_cargo_features}
 
 install -D -p -m0644 %{SOURCE1} %{buildroot}%{_unitdir}/parsec.service
 install -D -p -m0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/parsec/config.toml
 install -D -p -m0644 %{SOURCE3} %{buildroot}%{_tmpfilesdir}/parsec.conf
 install -d -m0755 %{buildroot}%{_localstatedir}/lib/parsec
 install -d -m0755 %{buildroot}%{_localstatedir}/lib/parsec/mappings
 install -d -m0755 %{buildroot}%{_libexecdir}
 mv %{buildroot}%{_bindir}/parsec %{buildroot}%{_libexecdir}/
 
+install -m0644 -D parsec.sysusers.conf %{buildroot}%{_sysusersdir}/parsec.conf
+
 %if %{with check}
 %check
 %cargo_test -f %{enabled_cargo_features} -- -- --skip real_ --skip loop_ --skip travis_
 %endif
 
-%pre
-getent group parsec >/dev/null || groupadd -r parsec
-# For PARSEC consumers
-getent group parsec-clients >/dev/null || groupadd -r parsec-clients
-getent passwd parsec >/dev/null || \
-    useradd -r -g parsec -G tss -G parsec-clients -d /var/lib/parsec -s /sbin/nologin \
-    -c "PARSEC service" parsec
-exit 0
 
 %post
 %systemd_post parsec.service
 
 %preun
 %systemd_preun parsec.service
 
 %postun
@@ -88,18 +88,22 @@ exit 0
 %doc README.md config.toml
 %attr(0750,parsec,parsec) %dir %{_sysconfdir}/parsec/
 %attr(0750,parsec,parsec) %dir %{_localstatedir}/lib/parsec/
 %attr(0750,parsec,parsec) %dir %{_localstatedir}/lib/parsec/mappings/
 %config(noreplace) %{_sysconfdir}/parsec/config.toml
 %{_libexecdir}/parsec
 %{_tmpfilesdir}/parsec.conf
 %{_unitdir}/parsec.service
+%{_sysusersdir}/parsec.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.4.1-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.1-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.1-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Mon May 20 2024 Peter Robinson <pbrobinson@fedoraproject.org> - 1.4.1-1
 - Update to 1.4.1
diff --git pbuilder/pbuilder.spec pbuilder/pbuilder.spec.tmp
index 1aa9176af0..5592c9a9f9 100644
--- pbuilder/pbuilder.spec
+++ pbuilder/pbuilder.spec.tmp
@@ -1,11 +1,11 @@
 Name:           pbuilder
 Version:        0.231.1
-Release:        4%{?dist}
+Release:        5%{?dist}
 Summary:        Personal package builder for Debian packages
 
 License:        GPL-2.0-or-later
 URL:            http://packages.debian.org/unstable/admin/%{name}
 Source0:        http://ftp.debian.org/debian/pool/main/p/%{name}/%{name}_%{version}.tar.xz
 Source1:        README.fedora
 Source2:        https://bitbucket.org/amidevous/fedora-rpm/raw/master/pbuilder/debian/pbuilder-config
 Source3:        https://bitbucket.org/amidevous/fedora-rpm/raw/master/pbuilder/debian/pbuilder-debian-stable
@@ -63,16 +63,21 @@ dependencies.
 
 
 %prep
 %autosetup -p1
 
 # Adjust ccache path
 sed -i 's|/usr/lib/ccache|%{_libdir}/ccache|g' pbuilderrc
 
+# Create a sysusers.d config file
+cat >pbuilder.sysusers.conf <<EOF
+u pbuilder - '%{name}' %{_localstatedir}/run/%{name} -
+EOF
+
 
 %build
 %make_build
 
 
 %install
 %make_install
 
@@ -93,23 +98,19 @@ install -Dpm 0777 %{SOURCE5} %{buildroot}%{_bindir}/pbuilder-ubuntu-old2
 install -Dpm 0777 %{SOURCE6} %{buildroot}%{_bindir}/pbuilder-ubuntu-stable
 
 # Configuration file
 install -Dpm 0644 %{SOURCE7} %{buildroot}%{_sysconfdir}/pbuilderrc
 
 # Copy README.fedora to root
 cp -a %{SOURCE1} README.fedora
 
+install -m0644 -D pbuilder.sysusers.conf %{buildroot}%{_sysusersdir}/pbuilder.conf
+
 
-%pre
-getent group %{name} > /dev/null || groupadd -r %{name}
-getent passwd %{name} > /dev/null || \
-  useradd -r -g %{name} -d %{_localstatedir}/run/%{name} -s /sbin/nologin \
-    -c "%{name}" %{name}
-exit 0
 
 
 %check
 %ifarch %arm
 # Some tests fail on arm because ubuntu mirrors are unavailable for that arch
 make check || :
 %else
 make check
@@ -133,19 +134,23 @@ make check
 %{_datadir}/pbuilder/
 %{_mandir}/man1/debuild-pbuilder.1*
 %{_mandir}/man1/pdebuild.1*
 %{_mandir}/man5/pbuilderrc.5*
 %{_mandir}/man8/pbuilder.8*
 %{_docdir}/pbuilder/*
 # The ccache folder needs to be owned by the pbuilder user
 %attr(0755,%{name},root) %{_localstatedir}/cache/%{name}/ccache
+%{_sysusersdir}/pbuilder.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.231.1-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.231.1-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Nov 30 2024 Sérgio Basto <sergio@serjux.com> - 0.231.1-3
 - Requires util-linux-core instead mount, which doesn't exist as package on
   Fedora
 
 * Sat Sep 21 2024 Sérgio Basto <sergio@serjux.com> - 0.231.1-2
diff --git pcsc-cyberjack/pcsc-cyberjack.spec pcsc-cyberjack/pcsc-cyberjack.spec.tmp
index b6cc92d1aa..7b2d5a18a2 100644
--- pcsc-cyberjack/pcsc-cyberjack.spec
+++ pcsc-cyberjack/pcsc-cyberjack.spec.tmp
@@ -1,29 +1,28 @@
 %global readers_dir %(pkg-config libpcsclite --variable=usbdropdir)
 
 
 Name:		pcsc-cyberjack
 Summary:	PC/SC driver for REINER SCT cyberjack USB chip card reader
 Version:	3.99.5final.SP15
 %global version_prefix %(c=%{version}; echo ${c:0:6})
 %global version_suffix %(c=%{version}; echo ${c:12:4})
-Release:	10%{?dist}
+Release:	11%{?dist}
 License:	GPLv2+ and LGPLv2+
 URL:		https://www.reiner-sct.com/
 Source0:	https://support.reiner-sct.de/downloads/LINUX/V%{version_prefix}_%{version_suffix}/%{name}_%{version}.tar.bz2
 Source1:	pcsc-cyberjack-3.99.5final.SP09-README-FEDORA
 Source2:	libifd-cyberjack6.udev
 # this patch replaces the obsoleted AC_PROG_LIBTOOLT macro with LT_INIT
 # the patch is sent to upstream per email (20160528)
 Patch0:		pcsc-cyberjack-3.99.5final.SP09-configure.patch
 
 Requires:	udev
 Requires:	pcsc-lite
-Requires(pre):	shadow-utils
 
 BuildRequires:	make
 BuildRequires:	gcc
 BuildRequires:	gcc-c++
 BuildRequires:	automake
 BuildRequires:	autoconf
 BuildRequires:	libtool
 BuildRequires:	libusb1-devel
@@ -70,16 +69,21 @@ Sample code to use/test SCardControl() API by Ludovic Rousseau.
 %prep
 %setup -q
 %patch -P0 -p1
 autoreconf --force --install
 
 # README-FEDORA
 install -pm 644 %{SOURCE1} README-FEDORA.txt
 
+# Create a sysusers.d config file
+cat >pcsc-cyberjack.sysusers.conf <<EOF
+g cyberjack -
+EOF
+
 %build
 # while the docs say --enable-udev will create udev files, I get no rule
 # in etc/udev, so making my own later, based on debian one
 %configure \
 	--disable-static \
 	--enable-pcsc \
 	--sysconfdir="%{_sysconfdir}" \
 	--with-usbdropdir="%{readers_dir}" \
@@ -112,18 +116,18 @@ install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_udevrulesdir}/93-cyberjack.rules
 sed -e 's/GROUP="pcscd"/GROUP="cyberjack"/' -i %{buildroot}%{_udevrulesdir}/93-cyberjack.rules
 touch -c -r %{SOURCE2} %{buildroot}%{_udevrulesdir}/93-cyberjack.rules
 
 # cjflash does not get installed automatically
 pushd tools/cjflash
 %make_install
 popd
 
-%pre
-getent group cyberjack >/dev/null || groupadd -r cyberjack
+install -m0644 -D pcsc-cyberjack.sysusers.conf %{buildroot}%{_sysusersdir}/pcsc-cyberjack.conf
+
 
 %post
 %udev_rules_update
 systemctl try-restart pcscd.socket
 exit 0
 
 %postun
 %udev_rules_update
@@ -138,26 +142,30 @@ exit 0
 %doc doc/README.txt doc/README.pdf doc/README.html
 %doc doc/LIESMICH.txt doc/LIESMICH.pdf doc/LIESMICH.html
 %license COPYING COPYRIGHT.GPL COPYRIGHT.LGPL
 
 %{_udevrulesdir}/93-cyberjack.rules
 %{readers_dir}/libifd-cyberjack.bundle/
 
 %config(noreplace) %{_sysconfdir}/cyberjack.conf
+%{_sysusersdir}/pcsc-cyberjack.conf
 
 
 %files cjflash
 %{_bindir}/cjflash
 %license COPYING
 
 %files examples
 %doc doc/verifypin_ascii.c doc/verifypin_fpin2.c
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.99.5final.SP15-11
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.99.5final.SP15-10
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 3.99.5final.SP15-9
 - convert license to SPDX
 
 * Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.99.5final.SP15-8
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git pdns-recursor/pdns-recursor.spec pdns-recursor/pdns-recursor.spec.tmp
index 9411f2a215..3eccd82b33 100644
--- pdns-recursor/pdns-recursor.spec
+++ pdns-recursor/pdns-recursor.spec.tmp
@@ -35,17 +35,16 @@ BuildRequires: protobuf-devel
 BuildRequires: hostname
 BuildRequires: libsodium-devel
 BuildRequires: autoconf
 BuildRequires: automake
 BuildRequires: libtool
 BuildRequires: cargo-rpm-macros
 BuildRequires: curl-devel
 
-Requires(pre): shadow-utils
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 
 
 Patch:         serde_yaml.patch
 
 
@@ -58,16 +57,21 @@ package if you need a dns cache for your network.
 %autosetup -n %{name}-%{version} -p1
 cd settings/rust
 %cargo_prep
 
 %generate_buildrequires
 cd settings/rust
 %cargo_generate_buildrequires
 
+# Create a sysusers.d config file
+cat >pdns-recursor.sysusers.conf <<EOF
+u pdns-recursor - 'PowerDNS Recursor user' / -
+EOF
+
 %build
 %configure \
     --sysconfdir=%{_sysconfdir}/%{name} \
     --with-libsodium \
     --enable-reproducible \
     --enable-dnstap \
     --enable-dns-over-tls \
 %ifarch %{ix86} x86_64 aarch64
@@ -95,23 +99,19 @@ install -p -d -m 0755 %{buildroot}/%{_sharedstatedir}/%{name}/udr
 
 # change user and group to pdns-recursor
 sed -i \
     -e 's/# setuid=/setuid=pdns-recursor/' \
     -e 's/# setgid=/setgid=pdns-recursor/' \
     -e 's/# security-poll-suffix=secpoll\.powerdns\.com\./security-poll-suffix=/' \
     %{buildroot}%{_sysconfdir}/%{name}/recursor.conf
 
+install -m0644 -D pdns-recursor.sysusers.conf %{buildroot}%{_sysusersdir}/pdns-recursor.conf
+
 
-%pre
-getent group pdns-recursor > /dev/null || groupadd -r pdns-recursor
-getent passwd pdns-recursor > /dev/null || \
-    useradd -r -g pdns-recursor -d / -s /sbin/nologin \
-    -c "PowerDNS Recursor user" pdns-recursor
-exit 0
 
 
 %post
 %systemd_post pdns-recursor.service
 
 
 %preun
 %systemd_preun pdns-recursor.service
@@ -134,12 +134,13 @@ exit 0
 # because since recursor.yml takes precedence over recursor.conf we don't put
 # it directly there
 %config %{_sysconfdir}/%{name}/recursor.yml-dist
 %dir %attr(0755,pdns-recursor,pdns-recursor) %{_sharedstatedir}/%{name}
 %dir %attr(0755,pdns-recursor,pdns-recursor) %{_sharedstatedir}/%{name}/nod
 %dir %attr(0755,pdns-recursor,pdns-recursor) %{_sharedstatedir}/%{name}/udr
 %doc README
 %license COPYING
+%{_sysusersdir}/pdns-recursor.conf
 
 
 %changelog
 %autochangelog
diff --git pdns/pdns.spec pdns/pdns.spec.tmp
index c092879a89..b3e82d1947 100644
--- pdns/pdns.spec
+++ pdns/pdns.spec.tmp
@@ -1,22 +1,21 @@
 %global _hardened_build 1
 %global backends %{nil}
 
 Name: pdns
 Version: 4.9.3
-Release: 1%{?dist}
+Release: 2%{?dist}
 Summary: A modern, advanced and high performance authoritative-only name server
 License: GPL-2.0-only
 URL: http://powerdns.com
 Source0: http://downloads.powerdns.com/releases/%{name}-%{version}.tar.bz2
 Patch0: pdns-gcc15.patch
 ExcludeArch: %{arm} %{ix86}
 
-Requires(pre): shadow-utils
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 
 BuildRequires: make
 BuildRequires: bison
 BuildRequires: boost-devel
 BuildRequires: gcc-c++
@@ -136,16 +135,21 @@ Summary: A program to redistribute zones over AXFR and IXFR
 BuildRequires: yaml-cpp-devel
 
 %description ixfrdist
 This package contains the ixfrdist program.
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >pdns.sysusers.conf <<EOF
+u pdns - 'PowerDNS Authoritative Server' /var/lib/pdns -
+EOF
+
 %build
 export CPPFLAGS="-DLDAP_DEPRECATED"
 
 %configure \
 	--enable-option-checking=fatal \
 	--sysconfdir=%{_sysconfdir}/%{name} \
 	--disable-static \
 	--disable-dependency-tracking \
@@ -181,24 +185,21 @@ sed -i \
     -e 's/# setgid=/setgid=pdns/' \
     -e 's/# launch=/launch=bind/' \
     -e 's/# security-poll-suffix=secpoll\.powerdns\.com\./security-poll-suffix=/' \
     %{buildroot}%{_sysconfdir}/%{name}/pdns.conf
 
 %{__rm} %{buildroot}/%{_bindir}/stubquery
 %{__install} -d %{buildroot}/%{_sharedstatedir}/%{name}
 
+install -m0644 -D pdns.sysusers.conf %{buildroot}%{_sysusersdir}/pdns.conf
+
 %check
 make %{?_smp_mflags} -C pdns check
 
-%pre
-getent group pdns >/dev/null || groupadd -r pdns
-getent passwd pdns >/dev/null || \
-	useradd -r -g pdns -d /var/lib/pdns -s /sbin/nologin \
-	-c "PowerDNS Authoritative Server" pdns
 
 %post
 %systemd_post pdns.service
 
 %preun
 %systemd_preun pdns.service
 
 %postun
@@ -221,16 +222,17 @@ getent passwd pdns >/dev/null || \
 %{_mandir}/man1/pdnsutil.1.gz
 %{_unitdir}/pdns.service
 %{_unitdir}/pdns@.service
 %{_libdir}/%{name}/libbindbackend.so
 %dir %{_libdir}/%{name}/
 %dir %attr(-,pdns,pdns) %{_sharedstatedir}/%{name}
 %dir %attr(-,root,pdns) %{_sysconfdir}/%{name}/
 %attr(0640,root,pdns) %config(noreplace) %{_sysconfdir}/%{name}/pdns.conf
+%{_sysusersdir}/pdns.conf
 
 %files tools
 %{_bindir}/calidns
 %{_bindir}/dnsbulktest
 %{_bindir}/dnsgram
 %{_bindir}/dnspcap2calidns
 %{_bindir}/dnspcap2protobuf
 %{_bindir}/dnsreplay
@@ -318,16 +320,19 @@ getent passwd pdns >/dev/null || \
 %{_bindir}/ixfrdist
 %{_mandir}/man1/ixfrdist.1.gz
 %{_mandir}/man5/ixfrdist.yml.5.gz
 %{_sysconfdir}/%{name}/ixfrdist.example.yml
 %{_unitdir}/ixfrdist.service
 %{_unitdir}/ixfrdist@.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.9.3-2
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Mon Jan 20 2025 Morten Stevens <mstevens@fedoraproject.org> - 4.9.3-1
 - Update to 4.9.3
 
 * Mon Jan 20 2025 Morten Stevens <mstevens@fedoraproject.org> - 4.9.2-4
 - Fix missing include for gcc15
 
 * Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.9.2-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
diff --git perl-MogileFS-Server/perl-MogileFS-Server.spec perl-MogileFS-Server/perl-MogileFS-Server.spec.tmp
index 805d21554f..90d0375c05 100644
--- perl-MogileFS-Server/perl-MogileFS-Server.spec
+++ perl-MogileFS-Server/perl-MogileFS-Server.spec.tmp
@@ -1,12 +1,12 @@
 %global cpan_name MogileFS-Server
 Name:       perl-%{cpan_name}
 Version:    2.73
-Release:    25%{?dist}
+Release:    26%{?dist}
 Summary:    Server part of the MogileFS distributed file system
 # LICENSE:      GPL+ or Artistic
 # mogautomount: GPL+ or Artistic
 # mogstored:    "Same terms as Perl itself.  Artistic/GPLv2, at your choosing"
 # mogilefsd:    "Same terms as Perl itself.  Artistic/GPLv2, at your choosing"
 # There are two readings of the "Same terms as Perl itself.  Artistic/GPLv2,
 # at your choosing":
 #   (GPL+ or Artistic) and (GPLv2 or Artistic)
@@ -101,17 +101,16 @@ Obsoletes:      perl-mogilefs-server < 2.37
 Server part of the MogileFS distributed file system.
 
 
 %package -n mogilefsd
 Summary:        MogileFS tracker daemon
 Requires:       mogilefsd-storage = %{version}-%{release}
 Recommends:     mogilefsd-storage-mysql = %{version}-%{release}
 Requires(pre):      glibc-common
-Requires(pre):      shadow-utils
 Requires(post):     systemd
 Requires(preun):    systemd
 Requires(postun):   systemd
 
 %description -n mogilefsd
 This is MogileFS tracker daemon. It supports various storages. After selecting
 one, you have to install corresponding storage backend (mogilefsd-storage-*
 packages), adjust %{_sysconfdir}/mogilefs/mogilefsd.conf, and configure and
@@ -146,17 +145,16 @@ Provides:       mogilefsd-storage = %{version}-%{release}
 Summary:        MogileFS storage daemon
 Requires:       perl(Mogstored::ChildProcess::DiskUsage)
 Requires:       perl(Mogstored::ChildProcess::IOStat)
 Requires:       perl(Mogstored::HTTPServer::None)
 Requires:       perl(Pod::Usage)
 # sysstat for iostat program
 Requires:       sysstat
 Requires(pre):      glibc-common
-Requires(pre):      shadow-utils
 Requires(post):     systemd
 Requires(preun):    systemd
 Requires(postun):   systemd
 
 %description -n mogstored
 The MogileFS storage daemon mogstored.
 
 
@@ -204,16 +202,21 @@ Perlbal back-end for mogstored, the MogileFS storage daemon.
 %setup -q -n %{cpan_name}-%{version}
 %patch -P0 -p1
 %patch -P1 -p1
 cp -p %{SOURCE5} %{SOURCE6} %{SOURCE7} .
 # Remove test that interfere with system service
 rm t/mogstored-shutdown.t
 sed -i -e '/^t\/mogstored-shutdown\.t/d' MANIFEST
 
+# Create a sysusers.d config file
+cat >perl-mogilefs-server.sysusers.conf <<EOF
+u mogilefsd - 'MogileFS tracker daemon' / -
+EOF
+
 
 %build
 perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1
 %{make_build}
 
 
 %install
 %{make_install}
@@ -225,29 +228,25 @@ install -p -m0644 %{SOURCE1} %{SOURCE2} %{buildroot}%{_unitdir}
 install -d -m0755 %{buildroot}%{_sysconfdir}/mogilefs
 install -p -m0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/mogilefs
 
 install -d -m0755 %{buildroot}%{_sysconfdir}/sysconfig
 install -p -m0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig
 
 install -d -m0770 %{buildroot}%{_localstatedir}/mogdata
 
+install -m0644 -D perl-mogilefs-server.sysusers.conf %{buildroot}%{_sysusersdir}/perl-mogilefs-server.conf
+
 %check
 # SQLite back-end fails in mock. MySQL or PostgreSQL in mock is also no-go.
 # make test MOGTEST_DBTYPE=SQLite
 # Disabling network tests.
 make test
 
 
-%pre -n mogilefsd
-getent group mogilefsd >/dev/null || groupadd -r mogilefsd
-getent passwd mogilefsd >/dev/null || \
-    useradd -r -g mogilefsd -d / -s /sbin/nologin \
-        -c "MogileFS tracker daemon" mogilefsd
-exit 0
 
 %post -n mogilefsd
 %systemd_post mogilefsd.service
 
 %preun -n mogilefsd
 %systemd_preun mogilefsd.service
 
 %postun -n mogilefsd
@@ -280,16 +279,17 @@ exit 0
 %{_mandir}/man1/mogilefsd.*
 %{_mandir}/man3/MogileFS::*.*
 %exclude %{_mandir}/man3/MogileFS::Store::*
 %{perl_vendorlib}/MogileFS
 %exclude %{perl_vendorlib}/MogileFS/Store/*
 %dir %{_sysconfdir}/mogilefs
 %config(noreplace) %attr(0640,root,mogilefsd) %{_sysconfdir}/mogilefs/mogilefsd.conf
 %{_unitdir}/mogilefsd.service
+%{_sysusersdir}/perl-mogilefs-server.conf
 
 %files -n mogilefsd-storage-mysql
 %{_mandir}/man3/MogileFS::Store::MySQL.*
 %{perl_vendorlib}/MogileFS/Store/MySQL.pm
 
 %files -n mogilefsd-storage-postgres
 %{_mandir}/man3/MogileFS::Store::Postgres.*
 %{perl_vendorlib}/MogileFS/Store/Postgres.pm
@@ -326,16 +326,19 @@ exit 0
 
 %files -n mogstored-backend-none
 %{perl_vendorlib}/Mogstored/HTTPServer/None.pm
 
 %files -n mogstored-backend-perlbal
 %{perl_vendorlib}/Mogstored/HTTPServer/Perlbal.pm
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.73-26
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.73-25
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Aug 06 2024 Miroslav Suchý <msuchy@redhat.com> - 2.73-24
 - convert license to SPDX
 
 * Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.73-23
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git perl-Net-Statsd-Server/perl-Net-Statsd-Server.spec perl-Net-Statsd-Server/perl-Net-Statsd-Server.spec.tmp
index 97ecacd86d..8075ee7162 100644
--- perl-Net-Statsd-Server/perl-Net-Statsd-Server.spec
+++ perl-Net-Statsd-Server/perl-Net-Statsd-Server.spec.tmp
@@ -1,15 +1,15 @@
 %define username   statsdpl
 %define groupname  statsdpl
 %define daemon     statsd-perl
 
 Name:           perl-Net-Statsd-Server
 Version:        0.20
-Release:        27%{?dist}
+Release:        28%{?dist}
 Summary:        Library for the Perl port of Flickr/Etsy's statsd metrics daemon
 # Automatically converted from old format: GPL+ or Artistic - review is highly recommended.
 License:        GPL-1.0-or-later OR Artistic-1.0-Perl
 URL:            https://metacpan.org/release/Net-Statsd-Server
 Source0:        https://cpan.metacpan.org/modules/by-module/Net/Net-Statsd-Server-%{version}.tar.gz
 Source1:        %{daemon}.service
 Source2:        %{daemon}.js
 Source3:        %{daemon}.logrotate
@@ -60,62 +60,63 @@ write a back-end yourself.
 %setup -q -n Net-Statsd-Server-%{version}
 %patch -P1 -p1
 mv bin/statsd bin/%{daemon}
 for F in exampleConfig.js localConfig.js logConfig.js rrdConfig.js; do
     mv bin/"$F" "$F"
 done
 rm -Rf t/integration-tests/
 
+# Create a sysusers.d config file
+cat >perl-net-statsd-server.sysusers.conf <<EOF
+g statsdpl -
+u statsdpl - 'Perl Statsd' /run/%{daemon} -
+EOF
+
 %build
 %{__perl} Makefile.PL INSTALLDIRS=vendor
 make %{?_smp_mflags}
 
 %install
 make pure_install DESTDIR=$RPM_BUILD_ROOT
 install -Dp -m0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{daemon}.service
 install -Dp -m0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/%{daemon}.js
 install -Dp -m0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/%{daemon}
 mkdir -p -m 750 $RPM_BUILD_ROOT%{_localstatedir}/log/%{daemon}
 
 find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} \;
 
 %{_fixperms} $RPM_BUILD_ROOT/*
 
+install -m0644 -D perl-net-statsd-server.sysusers.conf %{buildroot}%{_sysusersdir}/perl-net-statsd-server.conf
+
 %check
 STATSD_BINARY=$RPM_BUILD_ROOT/usr/bin/%{daemon} make test
 
 %files
 %license LICENSE
 %doc Changes README TODO
 %{perl_vendorlib}/*
 %{_mandir}/man3/*
 
 %package -n statsd-perl
 Summary:        A Perl port of Flickr/Etsy's statsd metrics daemon
 BuildRequires:  systemd-units
 Requires:       %{name} = %{version}-%{release}
 Requires(post):   systemd
 Requires(preun):  systemd
 Requires(postun): systemd
-Requires(pre):  shadow-utils
 Provides:  statsd
 
 %description -n statsd-perl
 Implements a daemon that listens on a given host/port for incoming UDP packets
 and dispatches them to whatever you want, including Graphite or your console.
 Look into the Net::Statsd::Server::Backend::* name space to know all the
 possibilities, or write a back-end yourself.
 
-%pre -n statsd-perl
-getent group %{groupname} >/dev/null || groupadd -r %{groupname}
-getent passwd %{username} >/dev/null || \
-useradd -r -g %{groupname} -d /run/%{daemon} \
-    -s /sbin/nologin -c "Perl Statsd" %{username}
-exit 0
 
 %post -n statsd-perl
 %systemd_post %{daemon}.service
 
 %preun -n statsd-perl
 %systemd_preun %{daemon}.service
 
 %postun -n statsd-perl
@@ -124,18 +125,22 @@ exit 0
 %files -n statsd-perl
 %doc README exampleConfig.js localConfig.js logConfig.js rrdConfig.js
 %{_mandir}/man1/*
 %{_bindir}/*
 %config(noreplace) %{_sysconfdir}/%{daemon}.js
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{daemon}
 %{_unitdir}/%{daemon}.service
 %attr(750, %{username}, %{groupname}) %{_localstatedir}/log/%{daemon}
+%{_sysusersdir}/perl-net-statsd-server.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.20-28
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.20-27
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Aug 06 2024 Miroslav Suchý <msuchy@redhat.com> - 0.20-26
 - convert license to SPDX
 
 * Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.20-25
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git perl-Web-Paste-Simple/perl-Web-Paste-Simple.spec perl-Web-Paste-Simple/perl-Web-Paste-Simple.spec.tmp
index 58e786d65d..738df77207 100644
--- perl-Web-Paste-Simple/perl-Web-Paste-Simple.spec
+++ perl-Web-Paste-Simple/perl-Web-Paste-Simple.spec.tmp
@@ -1,11 +1,11 @@
 Name:           perl-Web-Paste-Simple
 Version:        0.002
-Release:        30%{?dist}
+Release:        31%{?dist}
 Summary:        Simple PSGI-based pastebin-like web site
 # CONTRIBUTING:             GPL+ or Artistic or CC-BY-SA
 # lib/Web/Paste/Simple.pm   GPL+ or Artistic
 License:        (GPL+ or Artistic) and (GPL+ or Artistic or CC-BY-SA)
 URL:            https://metacpan.org/release/Web-Paste-Simple
 Source0:        https://cpan.metacpan.org/modules/by-module/Web/Web-Paste-Simple-%{version}.tar.gz
 Source1:        web-paste-simple.service
 # We don't like /usr/bin/env in shellbangs
@@ -49,56 +49,56 @@ JavaScript library. It should be fast enough for deployment via CGI.
 
 %package server
 Summary:        Simple pastebin-like web server
 # Automatically converted from old format: GPL+ or Artistic - review is highly recommended.
 License:        GPL-1.0-or-later OR Artistic-1.0-Perl
 Requires:       %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
 # unit directory ownership
 Requires:       systemd
-Requires(pre):  shadow-utils
 
 %description server
 This is web-paste-simple daemon for Web::Paste::Simple web service.
 
 %global storage %{_sharedstatedir}/webpastesimple
 
 %prep
 %setup -q -n Web-Paste-Simple-%{version}
 %patch -P0 -p1
 %patch -P1 -p1
 # Set storage path for the daemon
 sed -e '/^ExecStart=/iEnvironment=WEB_PASTE_SIMPLE_STORAGE=%{storage}' \
     < %{SOURCE1} > web-paste-simple.service
 
+# Create a sysusers.d config file
+cat >perl-web-paste-simple.sysusers.conf <<EOF
+u webpastesimple - 'web-paste-simple daemon' %{storage} -
+EOF
+
 %build
 perl Makefile.PL NO_PACKLIST=1 NO_PERLLOCAL=1 INSTALLDIRS=vendor
 %{make_build}
 
 %install
 %{make_install}
 %{_fixperms} $RPM_BUILD_ROOT/*
 
 # Daemon
 install -d %{buildroot}%{_unitdir}
 install -m 0644 web-paste-simple.service %{buildroot}%{_unitdir}
 install -d %{buildroot}%{storage}
 
+install -m0644 -D perl-web-paste-simple.sysusers.conf %{buildroot}%{_sysusersdir}/perl-web-paste-simple.conf
+
 %check
 make test
 
 %post server
 %systemd_post apache-httpd.service
 
-%pre server
-getent group webpastesimple >/dev/null || groupadd -r webpastesimple
-getent passwd webpastesimple >/dev/null || \
-    useradd -r -g webpastesimple -d %{storage} -s /sbin/nologin \
-        -c "web-paste-simple daemon" webpastesimple
-exit 0
 
 %preun server
 %systemd_preun apache-httpd.service
 
 %postun server
 %systemd_postun_with_restart apache-httpd.service 
 
 %files
@@ -106,18 +106,22 @@ exit 0
 %doc Changes CONTRIBUTING COPYRIGHT CREDITS README
 %{perl_vendorlib}/*
 %{_mandir}/man3/*
 
 %files server
 %{_bindir}/*
 %{_unitdir}/*
 %dir %attr(750, webpastesimple, webpastesimple) %{storage}
+%{_sysusersdir}/perl-web-paste-simple.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.002-31
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.002-30
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Aug 06 2024 Miroslav Suchý <msuchy@redhat.com> - 0.002-29
 - convert license to SPDX
 
 * Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.002-28
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git pesign/pesign.spec pesign/pesign.spec.tmp
index 723bab8902..e37d79decc 100644
--- pesign/pesign.spec
+++ pesign/pesign.spec.tmp
@@ -1,17 +1,17 @@
 %global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
 
 # No.  I have enough trouble already.
 %undefine _auto_set_build_flags
 
 Name:    pesign
 Summary: Signing utility for UEFI binaries
 Version: 116
-Release: 6%{?dist}
+Release: 7%{?dist}
 License: GPL-2.0-only
 URL:     https://github.com/rhboot/pesign
 
 Obsoletes: pesign-rh-test-certs <= 0.111-7
 BuildRequires: efivar-devel >= 38-1
 BuildRequires: gcc
 BuildRequires: git
 BuildRequires: libuuid-devel
@@ -32,17 +32,16 @@ BuildRequires: xz
 BuildRequires: systemd-rpm-macros
 %endif
 Requires:      nspr
 Requires:      nss
 Requires:      nss-tools >= 3.53
 Requires:      nss-util
 Requires:      popt
 Requires:      rpm
-Requires(pre): shadow-utils
 ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm} riscv64
 %if 0%{?rhel} == 7
 BuildRequires: rh-signing-tools >= 1.20-2
 %endif
 
 Source0: https://github.com/rhboot/pesign/releases/download/%{version}/pesign-%{version}.tar.bz2
 Source1: certs.tar.xz
 Source2: pesign.py
@@ -62,16 +61,21 @@ git init
 git config user.email "pesign-owner@fedoraproject.org"
 git config user.name "Fedora Ninjas"
 git add .
 git commit -a -q -m "%{version} baseline."
 git am %{patches} </dev/null
 git config --unset user.email
 git config --unset user.name
 
+# Create a sysusers.d config file
+cat >pesign.sysusers.conf <<EOF
+u pesign - 'Group for the pesign signing daemon' /run/pesign -
+EOF
+
 %build
 make PREFIX=%{_prefix} LIBDIR=%{_libdir}
 
 %install
 mkdir -p %{buildroot}/%{_libdir}
 make PREFIX=%{_prefix} LIBDIR=%{_libdir} INSTALLROOT=%{buildroot} \
 	install
 %if 0%{?rhel} >= 7 || 0%{?fedora} >= 17
@@ -96,22 +100,18 @@ fi
 rm -vf %{buildroot}/usr/share/doc/pesign-%{version}/COPYING
 
 # and find-debuginfo.sh has some pretty awful deficencies too...
 cp -av libdpe/*.[ch] src/
 
 install -d -m 0755 %{buildroot}%{python3_sitelib}/mockbuild/plugins/
 install -m 0755 %{SOURCE2} %{buildroot}%{python3_sitelib}/mockbuild/plugins/
 
-%pre
-getent group pesign >/dev/null || groupadd -r pesign
-getent passwd pesign >/dev/null || \
-	useradd -r -g pesign -d /run/pesign -s /sbin/nologin \
-		-c "Group for the pesign signing daemon" pesign
-exit 0
+install -m0644 -D pesign.sysusers.conf %{buildroot}%{_sysusersdir}/pesign.conf
+
 
 %if 0%{?rhel} >= 7 || 0%{?fedora} >= 17
 %post
 %systemd_post pesign.service
 
 %preun
 %systemd_preun pesign.service
 
@@ -155,18 +155,22 @@ certutil -d %{_sysconfdir}/pki/pesign/ -X -L > /dev/null
 %ghost %attr(0660, -, -) %{_rundir}/%{name}/socket
 %ghost %attr(0660, -, -) %{_rundir}/%{name}/pesign.pid
 %if 0%{?rhel} >= 7 || 0%{?fedora} >= 17
 %{_tmpfilesdir}/pesign.conf
 %{_unitdir}/pesign.service
 %endif
 %{python3_sitelib}/mockbuild/plugins/*/pesign.*
 %{python3_sitelib}/mockbuild/plugins/pesign.*
+%{_sysusersdir}/pesign.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Thu Nov 21 2024 Peter Jones <pjones@redhat.com> - 116-6
 - Work around OpenSC token name changes
 
 * Tue Nov 12 2024 Kevin Fenzi <kevin@scrye.com> - 116-5
 - Rebuild to pick up riscv64 change
 
 * Tue Mar 05 2024 Liu Yang <Yang.Liu.sn@gmail.com> - 116-4
 - Add riscv64.
diff --git pgbouncer/pgbouncer.spec pgbouncer/pgbouncer.spec.tmp
index 52aab8e935..532b709e1d 100644
--- pgbouncer/pgbouncer.spec
+++ pgbouncer/pgbouncer.spec.tmp
@@ -1,11 +1,11 @@
 Name:		pgbouncer
 Version:	1.23.1
-Release:	3%{?dist}
+Release:	4%{?dist}
 Summary:	Lightweight connection pooler for PostgreSQL
 # Automatically converted from old format: MIT and BSD - review is highly recommended.
 License:	LicenseRef-Callaway-MIT AND LicenseRef-Callaway-BSD
 URL:		https://www.pgbouncer.org
 
 Source0:	%{url}/downloads/files/%{version}/%{name}-%{version}.tar.gz
 Source3:	%{name}.logrotate
 Source4:	%{name}.service
@@ -22,27 +22,31 @@ BuildRequires:	pkgconfig(libevent)
 # For Fedora and EL9+ systemd-rpm-macros would be enough:
 BuildRequires:	systemd-devel
 
 Requires:	systemd
 Requires:	logrotate
 Requires:	python3-psycopg2
 Requires:	c-ares >= 1.11
 
-Requires(pre):	shadow-utils
 
 %description
 pgbouncer is a lightweight connection pooler for PostgreSQL and uses libevent
 for low-level socket handling.
 
 %prep
 %autosetup -p0
 
 sed -i -e 's|/usr/bin/env python.*|%__python3|g' etc/mkauth.py
 
+# Create a sysusers.d config file
+cat >pgbouncer.sysusers.conf <<EOF
+u pgbouncer - 'PgBouncer Server' / -
+EOF
+
 %build
 # Building with systemd flag tries to enable notify support:
 %configure \
 	--enable-debug \
 	--with-cares \
 	--with-pam \
 	--with-systemd
 
@@ -79,21 +83,18 @@ EOF
 
 # logrotate file
 install -p -d %{buildroot}%{_sysconfdir}/logrotate.d
 install -p -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
 
 # Let RPM pick up docs in the files section
 rm -fr %{buildroot}%{_docdir}/%{name}
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name} &>/dev/null || :
-getent passwd %{name} >/dev/null || useradd -r -s /sbin/nologin \
-    -d / -M -c "PgBouncer Server" -g %{name} %{name} &>/dev/null || :
-exit 0
+install -m0644 -D pgbouncer.sysusers.conf %{buildroot}%{_sysusersdir}/pgbouncer.conf
+
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %postun
@@ -112,18 +113,22 @@ exit 0
 %{_mandir}/man1/%{name}.*
 %{_mandir}/man5/%{name}.*
 %attr(700,%{name},%{name}) %{_localstatedir}/log/%{name}
 
 %attr(755,%{name},%{name}) %dir %{_rundir}/%{name}
 %ghost %{_rundir}/%{name}/%{name}.pid
 %{_tmpfilesdir}/%{name}.conf
 %{_unitdir}/%{name}.service
+%{_sysusersdir}/pgbouncer.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.23.1-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.23.1-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Sep 04 2024 Miroslav Suchý <msuchy@redhat.com> - 1.23.1-2
 - convert license to SPDX
 
 * Mon Aug 05 2024 Simone Caronni <negativo17@gmail.com> - 1.23.1-1
 - Update to 1.23.1.
diff --git picocom/picocom.spec picocom/picocom.spec.tmp
index be80743dd0..6f54bd7ce1 100644
--- picocom/picocom.spec
+++ picocom/picocom.spec.tmp
@@ -1,64 +1,71 @@
 # We cannot use - in versions, so we replace with .
 %global upstreamversion 2024-07
 
 Name:           picocom
 Version:        2024.07
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        Minimal serial communications program
 
 License:        GPL-2.0-or-later
 URL:            https://gitlab.com/wsakernel/picocom/
 Source0:        https://gitlab.com/wsakernel/picocom/-/archive/%{upstreamversion}/picocom-%{upstreamversion}.tar.bz2
 BuildRequires: make
 BuildRequires: gcc
 BuildRequires: golang-github-cpuguy83-md2man
 
 # for groupadd
-Requires(pre):  shadow-utils
 
 %description
 As its name suggests, [picocom] is a minimal dumb-terminal emulation
 program. It is, in principle, very much like minicom, only it's "pico"
 instead of "mini"! It was designed to serve as a simple, manual, modem
 configuration, testing, and debugging tool. It has also served (quite
 well) as a low-tech "terminal-window" to allow operator intervention
 in PPP connection scripts (something like the ms-windows "open
 terminal window before / after dialing" feature).  It could also prove
 useful in many other similar tasks. It is ideal for embedded systems
 since its memory footprint is minimal (less than 20K, when
 stripped).
 
 %prep
 %autosetup -n %{name}-%{upstreamversion}
 
+# Create a sysusers.d config file
+cat >picocom.sysusers.conf <<EOF
+g dialout 18
+EOF
+
 %build
 make CC="%{__cc}" CFLAGS="$RPM_OPT_FLAGS -DUSE_CUSTOM_BAUD" %{_smp_mflags} UUCP_LOCK_DIR=/run/lock/picocom
 make doc
 
 %install
 rm -rf $RPM_BUILD_ROOT
 mkdir -p $RPM_BUILD_ROOT%{_bindir}
 mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
 install -m 755 picocom $RPM_BUILD_ROOT%{_bindir}/
 install -m 644 picocom.1 $RPM_BUILD_ROOT%{_mandir}/man1/
 mkdir -p $RPM_BUILD_ROOT/run/lock/picocom
 
-%pre
-getent group dialout >/dev/null || groupadd -g 18 -r -f dialout
-exit 0
+install -m0644 -D picocom.sysusers.conf %{buildroot}%{_sysusersdir}/picocom.conf
+
 
 %files
 %doc CONTRIBUTORS LICENSE.txt README.md
 %dir %attr(0775,root,dialout) /run/lock/picocom
 %{_bindir}/picocom
 %{_mandir}/man1/*
+%{_sysusersdir}/picocom.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2024.07-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2024.07-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Aug 24 2024 Kevin Fenzi <kevin@scrye.com> - 2024.07-1
 - Update to 2024-07. Fixes rhbz#2301987
 
 * Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2023.04-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git postfix-mta-sts-resolver/postfix-mta-sts-resolver.spec postfix-mta-sts-resolver/postfix-mta-sts-resolver.spec.tmp
index 84344f3f35..4ac181d845 100644
--- postfix-mta-sts-resolver/postfix-mta-sts-resolver.spec
+++ postfix-mta-sts-resolver/postfix-mta-sts-resolver.spec.tmp
@@ -20,33 +20,37 @@ BuildArch:      noarch
 BuildRequires:  python3-devel
 BuildRequires:  rubygem-asciidoctor
 BuildRequires:  make
 BuildRequires:  systemd-rpm-macros
 BuildRequires:  pyproject-rpm-macros
 BuildRequires:  sed
 BuildRequires:  gnupg2
 
-Requires(pre):  shadow-utils
 
 %description
 postfix-mta-sts-resolver provides a lookup daemon and command line
 query utility for MTA-STS policies (RFC 8461).  The daemon provides TLS
 client policy to Postfix via socketmap.
 
 
 
 %prep
 %{gpgverify} --keyring='%{SOURCE4}' --signature='%{SOURCE3}' --data='%{SOURCE0}'
 %autosetup -n %{name}-%{version}
 
 
 %generate_buildrequires
 %pyproject_buildrequires
 
+# Create a sysusers.d config file
+cat >postfix-mta-sts-resolver.sysusers.conf <<EOF
+u mta-sts - 'Postfix MTA-STS Map Daemon' %{_sharedstatedir}/mta-sts -
+EOF
+
 
 %build
 %pyproject_wheel
 make doc
 
 
 %install
 %pyproject_install
@@ -57,16 +61,18 @@ install -p -D -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/%{name}.service
 
 mkdir -p %{buildroot}%{_sharedstatedir}/mta-sts
 
 mkdir -p %{buildroot}%{_mandir}/man1
 install -p -D -m 0644 man/*.1 %{buildroot}%{_mandir}/man1/
 mkdir -p %{buildroot}%{_mandir}/man5
 install -p -D -m 0644 man/*.5 %{buildroot}%{_mandir}/man5/
 
+install -m0644 -D postfix-mta-sts-resolver.sysusers.conf %{buildroot}%{_sysusersdir}/postfix-mta-sts-resolver.conf
+
 
 %check
 # Upstream's test suite doesn't play nicely with Fedora's offline build system
 %pyproject_check_import -e 'postfix_mta_sts_resolver.postgres_cache' -e 'postfix_mta_sts_resolver.redis_cache' -e 'postfix_mta_sts_resolver.sqlite_cache'
 
 
 %pyproject_extras_subpkg -n %{name} sqlite dev redis postgres uvloop
 
@@ -75,23 +81,19 @@ install -p -D -m 0644 man/*.5 %{buildroot}%{_mandir}/man5/
 %license LICENSE
 %doc README.md config_examples
 %{_mandir}/man*/*
 %{_bindir}/mta-sts-query
 %{_bindir}/mta-sts-daemon
 %config(noreplace) %attr(0640,root,mta-sts) %{_sysconfdir}/mta-sts-daemon.yml
 %{_unitdir}/%{name}.service
 %dir %attr(0755,mta-sts,mta-sts) %{_sharedstatedir}/mta-sts
+%{_sysusersdir}/postfix-mta-sts-resolver.conf
 
 
-%pre
-getent group mta-sts >/dev/null || groupadd -r mta-sts
-getent passwd mta-sts >/dev/null || \
-    useradd -r -g mta-sts -d %{_sharedstatedir}/mta-sts -s /sbin/nologin \
-    -c "Postfix MTA-STS Map Daemon" mta-sts
 
 
 %post
 %systemd_post %{name}.service
 
 
 %preun
 %systemd_preun %{name}.service
diff --git postgresql16/postgresql16.spec postgresql16/postgresql16.spec.tmp
index 75ae4f934a..8e99fbb4b1 100644
--- postgresql16/postgresql16.spec
+++ postgresql16/postgresql16.spec.tmp
@@ -43,17 +43,17 @@
 
 # Don't create note file, added package_note_flags to linker by redhat-rpm-config
 # will cause issue during extension build because it'll be inherited.
 %undefine _package_note_file
 
 Summary: PostgreSQL client programs
 Name: %{majorname}%{majorversion}
 Version: %{majorversion}.3
-Release: 8%{?dist}
+Release: 9%{?dist}
 
 # The PostgreSQL license is very similar to other MIT licenses, but the OSI
 # recognizes it as an independent license, so we do as well.
 License: PostgreSQL
 Url: http://www.postgresql.org/
 
 # This SRPM includes a copy of the previous major release, which is needed for
 # in-place upgrade of an old database.  In most cases it will not be critical
@@ -259,17 +259,16 @@ with a PostgreSQL database management server.
 You need to install this package if you want to develop applications which
 will interact with a PostgreSQL server.
 %endif
 
 
 %package -n %{pkgname}-server
 Summary: The programs needed to create and run a PostgreSQL server
 Requires: %{pkgname}%{?_isa} = %precise_version
-Requires(pre): /usr/sbin/useradd
 # We require this to be present for %%{_prefix}/lib/tmpfiles.d
 Requires: systemd
 # Make sure it's there when scriptlets run, too
 %{?systemd_requires}
 # We require this to be present for /usr/sbin/runuser when using --initdb (rhbz#2071437)
 Requires: util-linux
 # postgresql setup requires runuser from util-linux package
 BuildRequires: util-linux
@@ -536,16 +535,21 @@ find . -type f -name Makefile -exec sed -i -e "s/SO_MAJOR_VERSION=\s\?\([0-9]\+\
 %endif
 
 # apply once SOURCE3 is extracted
 %endif
 
 # remove .gitignore files to ensure none get into the RPMs (bug #642210)
 find . -type f -name .gitignore | xargs rm
 
+# Create a sysusers.d config file
+cat >postgresql16.sysusers.conf <<EOF
+u postgres 26 'PostgreSQL Server' /var/lib/pgsql /bin/bash
+EOF
+
 
 %build
 # Avoid LTO on armv7hl as it runs out of memory
 %ifarch armv7hl s390x
 %define _lto_cflags %{nil}
 %endif
 # fail quickly and obviously if user tries to build as root
 %if %runselftest
@@ -940,20 +944,18 @@ find_lang_bins plperl.lst plperl
 %if %plpython3
 find_lang_bins plpython3.lst plpython
 %endif
 %if %pltcl
 find_lang_bins pltcl.lst pltcl
 %endif
 %endif
 
-%pre -n %{pkgname}-server
-/usr/sbin/groupadd -g 26 -o -r postgres >/dev/null 2>&1 || :
-/usr/sbin/useradd -M -N -g postgres -o -r -d /var/lib/pgsql -s /bin/bash \
-	-c "PostgreSQL Server" -u 26 postgres >/dev/null 2>&1 || :
+install -m0644 -D postgresql16.sysusers.conf %{buildroot}%{_sysusersdir}/postgresql16.conf
+
 
 %post -n %{pkgname}-server
 %systemd_post %service_name
 
 
 %preun -n %{pkgname}-server
 %systemd_preun %service_name
 
@@ -1229,16 +1231,17 @@ make -C postgresql-setup-%{setup_version} check
 %attr(700,postgres,postgres) %dir %{?_localstatedir}/lib/pgsql
 %attr(644,postgres,postgres) %config(noreplace) %{?_localstatedir}/lib/pgsql/.bash_profile
 %attr(700,postgres,postgres) %dir %{?_localstatedir}/lib/pgsql/backups
 %attr(700,postgres,postgres) %dir %{?_localstatedir}/lib/pgsql/data
 %ghost %attr(755,postgres,postgres) %dir %{_rundir}/postgresql
 %if %pam
 %config(noreplace) /etc/pam.d/postgresql
 %endif
+%{_sysusersdir}/postgresql16.conf
 
 
 %files -n %{pkgname}-server-devel -f devel.lst
 %{_bindir}/pg_server_config
 %dir %{_datadir}/pgsql
 %{_datadir}/pgsql/errcodes.txt
 %dir %{_includedir}/pgsql
 %{_includedir}/pgsql/server
@@ -1326,16 +1329,19 @@ make -C postgresql-setup-%{setup_version} check
 
 %if %test
 %files -n %{pkgname}-test
 %attr(-,postgres,postgres) %{_libdir}/pgsql/test
 %endif
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 16.3-9
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 16.3-8
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sun Dec 08 2024 Pete Walter <pwalter@fedoraproject.org> - 16.3-7
 - Rebuild for ICU 76
 
 * Mon Sep 16 2024 Filip Janus <fjanus@redhat.com> - 16.3-6
 - Fix typos in provides
diff --git postgresql17/postgresql17.spec postgresql17/postgresql17.spec.tmp
index 06b968cc93..132a45b6fc 100644
--- postgresql17/postgresql17.spec
+++ postgresql17/postgresql17.spec.tmp
@@ -43,17 +43,17 @@
 
 # Don't create note file, added package_note_flags to linker by redhat-rpm-config
 # will cause issue during extension build because it'll be inherited.
 %undefine _package_note_file
 
 Summary: PostgreSQL client programs
 Name: %{majorname}%{majorversion}
 Version: %{majorversion}.0
-Release: 2%{?dist}
+Release: 3%{?dist}
 
 # The PostgreSQL license is very similar to other MIT licenses, but the OSI
 # recognizes it as an independent license, so we do as well.
 License: PostgreSQL
 Url: http://www.postgresql.org/
 
 # This SRPM includes a copy of the previous major release, which is needed for
 # in-place upgrade of an old database.  In most cases it will not be critical
@@ -260,17 +260,16 @@ with a PostgreSQL database management server.
 You need to install this package if you want to develop applications which
 will interact with a PostgreSQL server.
 %endif
 
 
 %package -n %{pkgname}-server
 Summary: The programs needed to create and run a PostgreSQL server
 Requires: %{pkgname}%{?_isa} = %precise_version
-Requires(pre): /usr/sbin/useradd
 # We require this to be present for %%{_prefix}/lib/tmpfiles.d
 Requires: systemd
 # Make sure it's there when scriptlets run, too
 %{?systemd_requires}
 # We require this to be present for /usr/sbin/runuser when using --initdb (rhbz#2071437)
 Requires: util-linux
 # postgresql setup requires runuser from util-linux package
 BuildRequires: util-linux
@@ -537,16 +536,21 @@ find . -type f -name Makefile -exec sed -i -e "s/SO_MAJOR_VERSION=\s\?\([0-9]\+\
 %endif
 
 # apply once SOURCE3 is extracted
 %endif
 
 # remove .gitignore files to ensure none get into the RPMs (bug #642210)
 find . -type f -name .gitignore | xargs rm
 
+# Create a sysusers.d config file
+cat >postgresql17.sysusers.conf <<EOF
+u postgres 26 'PostgreSQL Server' /var/lib/pgsql /bin/bash
+EOF
+
 
 %build
 # Avoid LTO on armv7hl as it runs out of memory
 %ifarch armv7hl s390x
 %define _lto_cflags %{nil}
 %endif
 # fail quickly and obviously if user tries to build as root
 %if %runselftest
@@ -942,20 +946,18 @@ find_lang_bins plperl.lst plperl
 %if %plpython3
 find_lang_bins plpython3.lst plpython
 %endif
 %if %pltcl
 find_lang_bins pltcl.lst pltcl
 %endif
 %endif
 
-%pre -n %{pkgname}-server
-/usr/sbin/groupadd -g 26 -o -r postgres >/dev/null 2>&1 || :
-/usr/sbin/useradd -M -N -g postgres -o -r -d /var/lib/pgsql -s /bin/bash \
-	-c "PostgreSQL Server" -u 26 postgres >/dev/null 2>&1 || :
+install -m0644 -D postgresql17.sysusers.conf %{buildroot}%{_sysusersdir}/postgresql17.conf
+
 
 %post -n %{pkgname}-server
 %systemd_post %service_name
 
 
 %preun -n %{pkgname}-server
 %systemd_preun %service_name
 
@@ -1239,16 +1241,17 @@ make -C postgresql-setup-%{setup_version} check
 %attr(700,postgres,postgres) %dir %{?_localstatedir}/lib/pgsql
 %attr(644,postgres,postgres) %config(noreplace) %{?_localstatedir}/lib/pgsql/.bash_profile
 %attr(700,postgres,postgres) %dir %{?_localstatedir}/lib/pgsql/backups
 %attr(700,postgres,postgres) %dir %{?_localstatedir}/lib/pgsql/data
 %ghost %attr(755,postgres,postgres) %dir %{_rundir}/postgresql
 %if %pam
 %config(noreplace) /etc/pam.d/postgresql
 %endif
+%{_sysusersdir}/postgresql17.conf
 
 
 %files -n %{pkgname}-server-devel -f devel.lst
 %{_bindir}/pg_server_config
 %dir %{_datadir}/pgsql
 %{_datadir}/pgsql/errcodes.txt
 %dir %{_includedir}/pgsql
 %{_includedir}/pgsql/server
@@ -1339,16 +1342,19 @@ make -C postgresql-setup-%{setup_version} check
 
 %if %test
 %files -n %{pkgname}-test
 %attr(-,postgres,postgres) %{_libdir}/pgsql/test
 %endif
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 17.0-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 17.0-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Oct 1 2024 Filip Janus <fjanus@redhat.com> - 17.0-1
 - Initial packaging of pg17
 
 * Mon Sep 16 2024 Filip Janus <fjanus@redhat.com> - 16.3-6
 - Fix typos in provides
diff --git postgrey/postgrey.spec postgrey/postgrey.spec.tmp
index b5bd715ff4..9af0a43779 100644
--- postgrey/postgrey.spec
+++ postgrey/postgrey.spec.tmp
@@ -1,13 +1,13 @@
 %global confdir %{_sysconfdir}/postfix
 
 Name:              postgrey
 Version:           1.37
-Release:           25%{?dist}
+Release:           26%{?dist}
 Summary:           Postfix Greylisting Policy Server
 # File headers only state "GNU GPL", but the LICENSE sections state v2 and "any
 # later version"
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:           GPL-2.0-or-later
 URL:               http://postgrey.schweikert.ch/
 Source0:           http://postgrey.schweikert.ch/pub/postgrey-%{version}.tar.gz
 Source1:           postgrey.service
@@ -26,17 +26,16 @@ BuildRequires:     systemd
 #Requires:          perl(Net::Server)
 #Requires:          perl(Pod::Usage)
 #Requires:          perl(POSIX)
 #Requires:          perl(strict)
 #Requires:          perl(Sys::Hostname)
 #Requires:          perl(Sys::Syslog)
 # Requiring postfix for its directories and GID.
 Recommends:        postfix
-Requires(pre):     shadow-utils
 Requires(post):    systemd
 Requires(preun):   systemd
 Requires(postun):  systemd
 
 %description
 Postgrey is a Postfix policy server implementing greylisting. When a request
 for delivery of a mail is received by Postfix via SMTP, the triplet CLIENT_IP /
 SENDER / RECIPIENT is built. If it is the first time that this triplet is
@@ -47,16 +46,21 @@ again later, as it is however required per RFC.
 %prep
 %setup -q
 # Set default group tp postgrey.
 sed -i 's|nogroup|postgrey|g' postgrey
 # No perldoc, man is enough.
 sed -i 's|POD ||g;s|perldoc|man|g' README
 install -pm0644 %{SOURCE2} README.Fedora
 
+# Create a sysusers.d config file
+cat >postgrey.sysusers.conf <<EOF
+u postgrey - 'Postfix Greylisting Service' %{_localstatedir}/spool/postfix/postgrey -
+EOF
+
 %build
 # We only have perl scripts, so just "build" the man page.
 pod2man \
     --center="Postgrey Policy Server for Postfix" \
     --section="8" \
     --release="Postgrey %{version}" \
     postgrey > postgrey.8
 
@@ -86,22 +90,18 @@ install -pDm0644 %{SOURCE3} \
 # Manpage.
 install -pDm0644 postgrey.8 \
     %{buildroot}%{_mandir}/man8/postgrey.8
 
 # Optional report script.
 install -pDm0755 contrib/postgreyreport \
     %{buildroot}%{_sbindir}/postgreyreport
 
-%pre
-getent group postgrey >/dev/null || groupadd -r postgrey
-getent passwd postgrey >/dev/null || \
-    useradd -r -g postgrey -d %{_localstatedir}/spool/postfix/postgrey -s /sbin/nologin \
-    -c "Postfix Greylisting Service" postgrey
-exit 0
+install -m0644 -D postgrey.sysusers.conf %{buildroot}%{_sysusersdir}/postgrey.conf
+
 
 %post
 %systemd_post postgrey.service
 
 %preun
 %systemd_preun postgrey.service
 
 %postun
@@ -124,18 +124,22 @@ exit 0
 %{_sysconfdir}/sysconfig/postgrey
 %config(noreplace) %{confdir}/postgrey_whitelist_clients
 %config(noreplace) %{confdir}/postgrey_whitelist_recipients
 %config(noreplace) %{confdir}/postgrey_whitelist_clients.local
 %{_sbindir}/postgrey
 %{_sbindir}/postgreyreport
 %{_mandir}/man8/postgrey.8*
 %dir %attr(0751,postgrey,postfix) %{_localstatedir}/spool/postfix/postgrey/
+%{_sysusersdir}/postgrey.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.37-26
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.37-25
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 1.37-24
 - convert license to SPDX
 
 * Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.37-23
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git ppp/ppp.spec ppp/ppp.spec.tmp
index cbd0167bdc..dce7ec851d 100644
--- ppp/ppp.spec
+++ ppp/ppp.spec.tmp
@@ -13,17 +13,17 @@ Name:    ppp
 # NetworkManager-l2tp
 # NetworkManager-ppp
 # NetworkManager-pptp
 # NetworkManager-sstp
 # sstp-client
 # These all need to be patched (if necessary) and rebuilt for new
 # versions of ppp.
 Version: 2.5.1
-Release: 3%{?dist}
+Release: 4%{?dist}
 Summary: The Point-to-Point Protocol daemon
 License: bsd-3-clause AND zlib AND licenseref-fedora-public-domain AND bsd-attribution-hpnd-disclaimer AND bsd-4.3tahoe AND bsd-4-clause-uc AND apache-2.0 AND lgpl-2.0-or-later AND (gpl-2.0-or-later OR bsd-2-clause OR bsd-3-clause OR bsd-4-clause) AND gpl-2.0-or-later AND xlock AND gpl-1.0-or-later AND mackerras-3-clause-acknowledgment AND mackerras-3-clause AND hpnd-fenneberg-Livingston AND sun-ppp AND hpnd-inria-imag AND sun-ppp-2000
 URL:     http://www.samba.org/ppp
 
 Source0: https://github.com/paulusmack/ppp/archive/ppp-%{version}.tar.gz
 Source1: ppp-pam.conf
 Source2: ppp-logrotate.conf
 Source3: ppp-tmpfiles.conf
@@ -56,18 +56,16 @@ Provides: bundled(linux-atm) = 2.4.1
 %else
 BuildRequires: linux-atm-libs-devel
 %endif
 
 Requires: glibc >= 2.0.6
 Requires: /etc/pam.d/system-auth
 Requires: libpcap >= 14:0.8.3-6
 Requires: systemd
-Requires(pre): /usr/bin/getent
-Requires(pre): /usr/sbin/groupadd
 
 # Subpackage removed and obsoleted in F40
 Obsoletes: network-scripts-ppp < %{version}-%{release}
 
 %description
 The ppp package contains the PPP (Point-to-Point Protocol) daemon and
 documentation for PPP support. The PPP protocol provides a method for
 transmitting datagrams over serial point-to-point links. PPP is
@@ -82,16 +80,21 @@ Requires: pkgconf-pkg-config
 %description devel
 This package contains the header files for building plugins for ppp.
 
 %prep
 %autosetup -p1 -n %{name}-%{name}-%{version}
 
 tar -xJf %{SOURCE12}
 
+# Create a sysusers.d config file
+cat >ppp.sysusers.conf <<EOF
+g dip 40
+EOF
+
 %build
 autoreconf -fi
 export CFLAGS="%{build_cflags} -fno-strict-aliasing"
 %configure --enable-systemd --enable-cbcp --with-pam --disable-openssl-engine
 %make_build
 %make_build -C ppp-watch LDFLAGS="%{?build_ldflags} -pie"
 
 %install
@@ -135,18 +138,18 @@ do
   mv "$f" "${f%%.example}"
 done
 popd
 
 %if "%{_sbindir}" == "%{_bindir}"
 mv %{buildroot}/usr/sbin/ppp-watch %{buildroot}%{_bindir}/
 %endif
 
-%pre
-/usr/bin/getent group dip >/dev/null 2>&1 || /usr/sbin/groupadd -r -g 40 dip >/dev/null 2>&1 || :
+install -m0644 -D ppp.sysusers.conf %{buildroot}%{_sysusersdir}/ppp.conf
+
 
 %post
 %tmpfiles_create ppp.conf
 
 %files
 %doc FAQ README README.cbcp README.linux README.MPPE README.MSCHAP80 README.MSCHAP81 README.pwfd README.pppoe scripts sample README.eap-tls
 %{_sbindir}/chat
 %{_sbindir}/pppd
@@ -180,23 +183,27 @@ mv %{buildroot}/usr/sbin/ppp-watch %{buildroot}%{_bindir}/
 %config(noreplace) %{_sysconfdir}/ppp/eaptls-client
 %config(noreplace) %{_sysconfdir}/ppp/eaptls-server
 %config(noreplace) %{_sysconfdir}/ppp/chap-secrets
 %config(noreplace) %{_sysconfdir}/ppp/options
 %config(noreplace) %{_sysconfdir}/ppp/pap-secrets
 %config(noreplace) %{_sysconfdir}/pam.d/ppp
 %config(noreplace) %{_sysconfdir}/logrotate.d/ppp
 %{_tmpfilesdir}/ppp.conf
+%{_sysusersdir}/ppp.conf
 
 %files devel
 %{_includedir}/pppd
 %doc PLUGINS
 %{_libdir}/pkgconfig/pppd.pc
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.5.1-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.5.1-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.5.1-2
 - Rebuilt for the bin-sbin merge (2nd attempt)
 
 * Sat Nov 16 2024 Jaroslav Škarvada <jskarvad@redhat.com> - 2.5.1-1
 - New version
diff --git privoxy/privoxy.spec privoxy/privoxy.spec.tmp
index fde56577e8..9dcf3817c4 100644
--- privoxy/privoxy.spec
+++ privoxy/privoxy.spec.tmp
@@ -2,29 +2,28 @@
 %define privoxyconf %{_sysconfdir}/%{name}
 %define privoxy_uid 73
 %define privoxy_gid 73
 %define beta_or_stable stable
 #define beta_or_stable beta
 
 Name: privoxy
 Version: 3.0.34
-Release: 11%{?dist}
+Release: 12%{?dist}
 Summary: Privacy enhancing proxy
 License: GPL-2.0-or-later
 Source0: http://downloads.sourceforge.net/ijbswa/%{name}-%{version}-%{beta_or_stable}-src.tar.gz
 Source1: privoxy.service
 Source2: privoxy.logrotate
 Patch0: 53748ca8ca3c893025be34dd4f104546fcbd0602.patch
 Patch1: e73b93ea9ad1f3e980bd78ed3ebf65dedbb598a2.patch
 Patch2: 87253c999d5628a6e9287bb0cc613d7b44bcec09.patch
 Patch3: privoxy-configure-c99.patch
 Patch4: 19d7684ca10f6c1279568aa19e9a9da2276851f1.patch
 URL: http://www.privoxy.org/
-Requires(pre): shadow-utils
 BuildRequires: make
 BuildRequires: libtool autoconf pcre2-devel zlib-devel systemd
 
 %description 
 Privoxy is a web proxy with advanced filtering capabilities for
 protecting privacy, filtering web page content, managing cookies,
 controlling access, and removing ads, banners, pop-ups and other
 obnoxious Internet junk. Privoxy has a very flexible configuration and
@@ -37,16 +36,22 @@ Privoxy is based on the Internet Junkbuster.
 %setup -q -n %{name}-%{version}-%{beta_or_stable}
 
 %patch -P 0 -p 1
 %patch -P 1 -p 1
 %patch -P 2 -p 1
 %patch -P 3 -p 1
 %patch -P 4 -p 1
 
+# Create a sysusers.d config file
+cat >privoxy.sysusers.conf <<EOF
+g privoxy %{privoxy_gid}
+u privoxy %{privoxy_uid} - %{privoxyconf} -
+EOF
+
 %build
 rm -rf autom4te.cache
 autoreconf
 # lets test how it works with dynamic pcre:
 #configure --disable-dynamic-pcre
 %configure
 make %{?_smp_mflags}
 
@@ -69,22 +74,22 @@ install -p -m 711 -d %{buildroot}%{_localstatedir}/log/%{name}
 sed -i -e 's@^confdir.*@confdir %{privoxyconf}@g' %{buildroot}%{privoxyconf}/config
 sed -i -e 's@^logdir.*@logdir %{_localstatedir}/log/%{name}@g' %{buildroot}%{privoxyconf}/config
 
 touch %{buildroot}%{_sysconfdir}/privoxy/user.filter
 
 mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d
 cp -p %{SOURCE2} $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/%{name}
 
+install -m0644 -D privoxy.sysusers.conf %{buildroot}%{_sysusersdir}/privoxy.conf
+
 
 %pre
 # Add user/group on install
 if [ $1 -eq "1" ]; then
-    %{_sbindir}/groupadd -g %{privoxy_gid} %{name} > /dev/null 2>&1 ||:
-    %{_sbindir}/useradd -u %{privoxy_uid} -g %{privoxy_gid} -d %{privoxyconf} -r -s "/sbin/nologin" %{name} > /dev/null 2>&1 ||:
 fi
 
 
 %post
 %systemd_post privoxy.service
 
 if [[ ! -f %{_sysconfdir}/privoxy/user.filter ]]
 then
@@ -107,18 +112,22 @@ fi
 %config(noreplace) %{_sysconfdir}/privoxy/user.filter
 %attr(0755,root,root)%{_sbindir}/%{name}
 %config(noreplace) %{privoxyconf}
 %attr(0644,root,root) %{_unitdir}/%{name}.service
 %{_mandir}/man8/%{name}.*
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
 %doc README AUTHORS ChangeLog LICENSE 
 %doc doc
+%{_sysusersdir}/privoxy.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.0.34-12
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.34-11
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.34-10
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Tue Jan 23 2024 Gwyn Ciesla <gwync@protonmail.com> - 3.0.34-9
 - Patch for connection crash.
RPMAutoSpec usage detected, not changing the spec file.
diff --git proxysql/proxysql.spec proxysql/proxysql.spec.tmp
index dc2195888c..5a1d7f1a72 100644
--- proxysql/proxysql.spec
+++ proxysql/proxysql.spec.tmp
@@ -88,16 +88,21 @@ MySQL and forks (like Percona Server and MariaDB).
 0005-Fix-clickhouse-cpp-build-on-i686-aarch64.patch
 0006-Fix-coredumper-build.patch
 
 %prep
 %autosetup -p1
 # Remove sources of debundled libraries
 rm -r deps/{libssl,pcre,curl,lz4,libev,libconfig,libdaemon,sqlite3}
 
+# Create a sysusers.d config file
+cat >proxysql.sysusers.conf <<EOF
+u proxysql - 'ProxySQL' /var/lib/proxysql -
+EOF
+
 %build
 export GIT_VERSION=%{version}
 %global _configure :
 %configure help
 export CPPFLAGS=$CXXFLAGS
 %make_build
 
 %install
@@ -110,20 +115,18 @@ install -p -D -m 0644 systemd/system/proxysql-initial.service %{buildroot}%{_uni
 install -p -D -m 0644 README.md %{buildroot}%{_docdir}/proxysql/README.md
 install -p -D -m 0644 RUNNING.md %{buildroot}%{_docdir}/proxysql/RUNNING.md
 install -p -D -m 0644 FAQ.md %{buildroot}%{_docdir}/proxysql/FAQ.md
 install -p -D -m 0644 doc/release_notes/*.md -t %{buildroot}%{_docdir}/proxysql
 install -p -D -m 0644 doc/internal/*.txt -t %{buildroot}%{_docdir}/proxysql
 install -p -D -m 0644 %{SOURCE1} %{buildroot}%{_mandir}/man1/%{name}.1
 install -d -m 0755 %{buildroot}%{_sharedstatedir}/proxysql
 
-%pre
-/usr/sbin/groupadd -r proxysql >/dev/null 2>&1 || :
-/usr/sbin/useradd  -g proxysql -r -d /var/lib/proxysql -s /sbin/nologin \
-    -c "ProxySQL" proxysql >/dev/null 2>&1 || :
+install -m0644 -D proxysql.sysusers.conf %{buildroot}%{_sysusersdir}/proxysql.conf
+
 
 %post
 %systemd_post proxysql.service
 
 %preun
 %systemd_preun proxysql.service
 
 %postun
@@ -134,11 +137,12 @@ install -d -m 0755 %{buildroot}%{_sharedstatedir}/proxysql
 %{_bindir}/proxysql
 %{_unitdir}/proxysql.service
 %{_unitdir}/proxysql-initial.service
 %{_datadir}/proxysql/
 %{_docdir}/proxysql/
 %{_mandir}/man1/proxysql.1*
 %attr(-,proxysql,proxysql) %{_sharedstatedir}/proxysql/
 %attr(-,proxysql,root) %config(noreplace) %{_sysconfdir}/proxysql.cnf
+%{_sysusersdir}/proxysql.conf
 
 %changelog
 %autochangelog
diff --git pypolicyd-spf/pypolicyd-spf.spec pypolicyd-spf/pypolicyd-spf.spec.tmp
index 9b06cb7042..6933708437 100644
--- pypolicyd-spf/pypolicyd-spf.spec
+++ pypolicyd-spf/pypolicyd-spf.spec.tmp
@@ -1,13 +1,13 @@
 %global srcname spf-engine
 
 Name:           pypolicyd-spf
 Version:        3.1.0
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        SPF Policy Server for Postfix (Python implementation)
 
 # Automatically converted from old format: ASL 2.0 - review is highly recommended.
 License:        Apache-2.0
 URL:            https://launchpad.net/%{srcname}
 Source0:        https://launchpad.net/%{srcname}/3.1/%{version}/+download/%{srcname}-%{version}.tar.gz
 Source1:        %{name}-tmpfiles.conf
 Patch0:         pypolicyd-spf-3.0.4-service.patch
@@ -42,16 +42,21 @@ Milter for pypolicyd-spf.
 
 %prep
 %autosetup -p1 -n %{srcname}-%{version}
 
 # Move doc files
 %{__mv} data/share/doc/python-policyd-spf/README.per_user_whitelisting .
 %{__mv} data/etc/python-policyd-spf/policyd-spf.conf.commented .
 
+# Create a sysusers.d config file
+cat >pypolicyd-spf.sysusers.conf <<EOF
+u pyspf-milter - - /run/pyspf-milter -
+EOF
+
 %build
 %pyproject_wheel
 
 
 %install
 %pyproject_install
 
 # We want the binary in Postfix libexec directory
@@ -65,48 +70,51 @@ Milter for pypolicyd-spf.
 
 # Remove SysV init
 %{__rm} -rf %{buildroot}%{_sysconfdir}/init.d
 
 # Temporary files for milter
 %{__mkdir_p} %{buildroot}%{_tmpfilesdir}
 %{__install} -m 0644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}/%{name}.conf
 
-%pre
-/usr/sbin/useradd -r -M -s /sbin/nologin -d /run/pyspf-milter \
-    pyspf-milter &>/dev/null || :
+install -m0644 -D pypolicyd-spf.sysusers.conf %{buildroot}%{_sysusersdir}/pypolicyd-spf.conf
+
 
  
 %files
 %doc README.txt README.per_user_whitelisting CHANGES COPYING
 %doc policyd-spf.conf.commented
 %dir %{_sysconfdir}/python-policyd-spf
 %config(noreplace) %{_sysconfdir}/python-policyd-spf/policyd-spf.conf
 %{_libexecdir}/postfix/policyd-spf
 %{_tmpfilesdir}/%{name}.conf
 %{_mandir}/man1/*
 %{_mandir}/man5/*
 %dir %{python3_sitelib}/spf_engine
 %{python3_sitelib}/spf_engine-%{version}.dist-info/
 %pycached %{python3_sitelib}/spf_engine/__init__.py
 %pycached %{python3_sitelib}/spf_engine/policy*.py
 %pycached %{python3_sitelib}/spf_engine/config.py
+%{_sysusersdir}/pypolicyd-spf.conf
 
 
 %files milter
 %dir %{_sysconfdir}/pyspf-milter
 %config(noreplace) %{_sysconfdir}/pyspf-milter/pyspf-milter.conf
 %{_bindir}/pyspf-milter
 %{_unitdir}/pyspf-milter.service
 %{_mandir}/man8/*
 %pycached %{python3_sitelib}/spf_engine/milter*.py
 %pycached %{python3_sitelib}/spf_engine/util.py
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.1.0-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Oct  9 2024 Bojan Smojver <bojan@rexursive.com> 3.1.0-1
 - Update to 3.1.0
 
 * Wed Jul 24 2024 Miroslav Suchý <msuchy@redhat.com> - 3.0.4-7
 - convert license to SPDX
diff --git python-carbon/python-carbon.spec python-carbon/python-carbon.spec.tmp
index a669f80c91..e9f25d6e8e 100644
--- python-carbon/python-carbon.spec
+++ python-carbon/python-carbon.spec.tmp
@@ -2,17 +2,17 @@
 
 %global desc %{expand: \
 Carbon is one of the components of Graphite, and is responsible for
 receiving metrics over the network and writing them down to disk using
 a storage back-end.}
 
 Name:           python-%{srcname}
 Version:        1.1.10
-Release:        11%{?dist}
+Release:        12%{?dist}
 
 Summary:        Back-end data caching and persistence daemon for Graphite
 # Automatically converted from old format: ASL 2.0 - review is highly recommended.
 License:        Apache-2.0
 URL:            https://github.com/graphite-project/carbon
 
 Source0:	%{url}/archive/%{version}/%{name}-%{version}.tar.gz
 
@@ -49,17 +49,16 @@ BuildRequires:	systemd
 %py_provides python3-%{pypi_name}
 
 %description
 %{desc}
 
 %package -n python3-%{srcname}
 Summary:        %{summary}
 Requires:	logrotate
-Requires(pre):	shadow-utils
 Requires(post):   systemd
 Requires(preun):  systemd
 Requires(postun): systemd
 %{?python_provide:%python_provide python3-%{srcname}}
 
 %description -n python3-%{srcname}
 %{desc}
 
@@ -91,16 +90,21 @@ rm lib/carbon/tests/test_database.py
 # Use the standard library instead of a backport
 sed -i -e 's/^import mock/from unittest import mock/' \
        -e 's/^from mock import /from unittest.mock import /' \
     lib/carbon/tests/*.py
 
 %generate_buildrequires
 %pyproject_buildrequires -r
 
+# Create a sysusers.d config file
+cat >python-carbon.sysusers.conf <<EOF
+u carbon - 'Carbon cache daemon' %{_localstatedir}/lib/carbon -
+EOF
+
 
 %build
 %pyproject_wheel
 
 
 %install
 %pyproject_install
 %pyproject_save_files %{srcname} twisted
@@ -149,22 +153,19 @@ install -D -p -m0644 %{SOURCE35} \
 for i in %{buildroot}%{_bindir}/*.py; do
     mv ${i} ${i%%.py}
 done
 
 # fix permissions
 chmod 755 %{buildroot}%{python3_sitelib}/carbon/amqp_listener.py
 chmod 755 %{buildroot}%{python3_sitelib}/carbon/amqp_publisher.py
 
+install -m0644 -D python-carbon.sysusers.conf %{buildroot}%{_sysusersdir}/python-carbon.conf
+
 
-%pre -n python3-%{srcname}
-getent group carbon >/dev/null || groupadd -r carbon
-getent passwd carbon >/dev/null || \
-    useradd -r -g carbon -d %{_localstatedir}/lib/carbon \
-    -s /sbin/nologin -c "Carbon cache daemon" carbon
 
 
 %post -n python3-%{srcname}
 %systemd_post carbon-aggregator.service
 %systemd_post carbon-cache.service
 %systemd_post carbon-relay.service
 
 
@@ -213,19 +214,23 @@ getent passwd carbon >/dev/null || \
 %{_mandir}/man1/validate-storage-schemas.1*
 
 %{_unitdir}/carbon-aggregator.service
 %{_unitdir}/carbon-cache.service
 %{_unitdir}/carbon-relay.service
 %{_unitdir}/carbon-aggregator@.service
 %{_unitdir}/carbon-cache@.service
 %{_unitdir}/carbon-relay@.service
+%{_sysusersdir}/python-carbon.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.1.10-12
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.10-11
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jul 24 2024 Miroslav Suchý <msuchy@redhat.com> - 1.1.10-10
 - convert license to SPDX
 
 * Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.10-9
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git qatlib/qatlib.spec qatlib/qatlib.spec.tmp
index 591445004e..c9a27c02ff 100644
--- qatlib/qatlib.spec
+++ qatlib/qatlib.spec.tmp
@@ -1,23 +1,22 @@
 # SPDX-License-Identifier: MIT
 
 %global libqat_soversion  4
 %global libusdm_soversion 0
 Name:             qatlib
 Version:          24.09.0
-Release:          5%{?dist}
+Release:          6%{?dist}
 Summary:          Intel QuickAssist user space library
 # The entire source code is released under BSD.
 # For a breakdown of inbound licenses see the INSTALL file.
 License:          BSD-3-Clause AND ( BSD-3-Clause OR GPL-2.0-only )
 URL:              https://github.com/intel/%{name}
 Source0:          https://github.com/intel/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
 BuildRequires:    systemd gcc make autoconf automake libtool systemd-devel openssl-devel zlib-devel nasm numactl-devel
-Requires(pre):    shadow-utils
 Recommends:       qatlib-service
 # https://bugzilla.redhat.com/show_bug.cgi?id=1897661
 ExcludeArch:      %{arm} aarch64 %{power64} s390x i686
 
 %description
 Intel QuickAssist Technology (Intel QAT) provides hardware acceleration
 for offloading security, authentication and compression services from the
 CPU, thus significantly increasing the performance and efficiency of
@@ -53,50 +52,55 @@ Requires:      %{name}%{?_isa} = %{version}-%{release}
 
 %description   service
 This package contains a daemon that manages QAT resources for the Intel
 QuickAssist Technology user space library (qatlib).
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >qatlib.sysusers.conf <<EOF
+g qat -
+EOF
+
 %build
 autoreconf -vif
 %configure --enable-legacy-algorithms
 sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
 sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
 sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool
 %make_build
 
 %install
 %make_install
 make DESTDIR=%{buildroot} samples-install
 rm %{buildroot}/%{_libdir}/libqat.la
 rm %{buildroot}/%{_libdir}/libusdm.la
 rm %{buildroot}/%{_libdir}/libqat.a
 rm %{buildroot}/%{_libdir}/libusdm.a
 
-%pre
-getent group qat >/dev/null || groupadd -r qat
-exit 0
+install -m0644 -D qatlib.sysusers.conf %{buildroot}%{_sysusersdir}/qatlib.conf
+
 
 %post          service
 %systemd_post qat.service
 
 %preun         service
 %systemd_preun qat.service
 
 %postun        service
 %systemd_postun_with_restart qat.service
 
 %files
 %doc INSTALL README.md
 %license LICENSE*
 %{_libdir}/libqat.so.%{libqat_soversion}*
 %{_libdir}/libusdm.so.%{libusdm_soversion}*
+%{_sysusersdir}/qatlib.conf
 
 %files         devel
 %{_libdir}/libqat.so
 %{_libdir}/libusdm.so
 %{_libdir}/pkgconfig/*.pc
 %{_includedir}/qat
 
 %files         tests
@@ -128,16 +132,19 @@ exit 0
 %files         service
 %{_sbindir}/qatmgr
 %{_sbindir}/qat_init.sh
 %{_unitdir}/qat.service
 %{_mandir}/man8/qatmgr.8*
 %{_mandir}/man8/qat_init.sh.8*
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 24.09.0-6
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 24.09.0-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Oct 01 2024 Vladis Dronov <vdronov@redhat.com> - 24.09.0-4
 - Update to qatlib 24.09.0 @ 36fb0903
 
 * Mon Sep 16 2024 Giovanni Cabiddu <giovanni.cabiddu@intel.com> - 24.09.0-3
 - Move pciutils as a dependency of the qat-service subpackage
diff --git rabbitmq-server/rabbitmq-server.spec rabbitmq-server/rabbitmq-server.spec.tmp
index 2d8352e993..805b330e77 100644
--- rabbitmq-server/rabbitmq-server.spec
+++ rabbitmq-server/rabbitmq-server.spec.tmp
@@ -2,17 +2,17 @@
 # We want to install into /usr/lib, even on 64-bit platforms
 %global _rabbit_libdir %{_exec_prefix}/lib/rabbitmq
 # Technically, we're noarch; but Elixir we're using is not.
 %global debug_package %{nil}
 
 
 Name: rabbitmq-server
 Version: 4.0.5
-Release: 3%{?dist}
+Release: 4%{?dist}
 License: MPL-2.0
 Source0: https://github.com/rabbitmq/rabbitmq-server/releases/download/v%{version}/%{name}_%{version}.orig.tar.xz
 Source1: https://github.com/rabbitmq/rabbitmq-server/releases/download/v%{version}/%{name}_%{version}.orig.tar.xz.asc
 Source2: https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
 # curl -O https://raw.githubusercontent.com/lemenkov/rabbitmq-server/cdfc661/packaging/RPMS/Fedora/rabbitmq-server.logrotate
 Source3: rabbitmq-server.logrotate
 # curl -O https://raw.githubusercontent.com/rabbitmq/rabbitmq-server-release/rabbitmq_v3_6_16/packaging/RPMS/Fedora/rabbitmq-server.tmpfiles
 Source5: rabbitmq-server.tmpfiles
@@ -46,17 +46,16 @@ Requires: erlang-public_key%{?_isa} >= %{erlang_minver}
 Requires: erlang-sasl%{?_isa} >= %{erlang_minver}
 Requires: erlang-ssl%{?_isa} >= %{erlang_minver}
 Requires: erlang-stdlib%{?_isa} >= %{erlang_minver}
 Requires: erlang-syntax_tools%{?_isa} >= %{erlang_minver}
 Requires: erlang-tools%{?_isa} >= %{erlang_minver}
 Requires: erlang-xmerl%{?_isa} >= %{erlang_minver}
 Summary: The RabbitMQ server
 # Users and groups
-Requires(pre): shadow-utils
 Requires(pre): systemd
 Requires(post): systemd
 Requires(preun): systemd
 
 %description
 RabbitMQ is an implementation of AMQP, the emerging standard for high
 performance enterprise messaging. The RabbitMQ server is a robust and
 scalable implementation of an AMQP broker.
@@ -66,16 +65,21 @@ scalable implementation of an AMQP broker.
 %autosetup -p1
 
 # We have to remove it until common_test subpackage lands RHOS
 rm -f \
 	deps/amqp_client/src/rabbit_ct_client_helpers.erl \
 	deps/rabbit_common/src/rabbit_ct_broker_helpers.erl \
 	deps/rabbit_common/src/rabbit_ct_helpers.erl
 
+# Create a sysusers.d config file
+cat >rabbitmq-server.sysusers.conf <<EOF
+u rabbitmq - 'RabbitMQ messaging server' %{_localstatedir}/lib/rabbitmq -
+EOF
+
 %build
 #USE_SPECS="true" USE_PROPER_QC="false" make %%{?_smp_mflags}
 make VERSION="%{version}" V=1  # Doesn't support %%{?_smp_mflags}
 
 
 %install
 make install \
 	VERSION="%{version}" \
@@ -111,31 +115,26 @@ install -p -D -m 0755 scripts/rabbitmq-server.ocf %{buildroot}%{_exec_prefix}/li
 
 install -p -D -m 0644 %{S:3} %{buildroot}%{_sysconfdir}/logrotate.d/rabbitmq-server
 
 install -p -D -m 0644 ./deps/rabbit/docs/rabbitmq.conf.example %{buildroot}%{_sysconfdir}/rabbitmq/rabbitmq.conf
 
 install -d %{buildroot}%{_localstatedir}/run/rabbitmq
 install -p -D -m 0644 %{SOURCE5} %{buildroot}%{_prefix}/lib/tmpfiles.d/%{name}.conf
 
+install -m0644 -D rabbitmq-server.sysusers.conf %{buildroot}%{_sysusersdir}/rabbitmq-server.conf
+
 
 %check
 #make check
 
 
 %pre
 # create rabbitmq group
 if ! getent group rabbitmq >/dev/null; then
-        groupadd -r rabbitmq
-fi
-
-# create rabbitmq user
-if ! getent passwd rabbitmq >/dev/null; then
-        useradd -r -g rabbitmq -d %{_localstatedir}/lib/rabbitmq rabbitmq \
-            -s /sbin/nologin -c "RabbitMQ messaging server"
 fi
 
 
 %post
 %systemd_post %{name}.service
 /bin/systemctl daemon-reload
 
 
@@ -178,19 +177,23 @@ done
 %{_mandir}/man8/rabbitmq-echopid.8*
 %{_mandir}/man8/rabbitmq-plugins.8*
 %{_mandir}/man8/rabbitmq-server.8*
 %{_mandir}/man8/rabbitmq-service.8*
 %{_mandir}/man8/rabbitmq-streams.8*
 %{_mandir}/man8/rabbitmq-queues.8*
 %{_mandir}/man8/rabbitmq-upgrade.8*
 %{_mandir}/man8/rabbitmqctl.8*
+%{_sysusersdir}/rabbitmq-server.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.0.5-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.5-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jan 02 2025 Richard W.M. Jones <rjones@redhat.com> - 4.0.5-2
 - Remove downstream patch which allowed remote connections (RHBZ#2333072)
 - Move license to MPL 2.0 (RHBZ#2333074)
 
 * Wed Dec 18 2024 Robert Scheck <robert@fedoraproject.org> - 4.0.5-1
diff --git radicale/radicale.spec radicale/radicale.spec.tmp
index 4b568c41c7..70c77bfc25 100644
--- radicale/radicale.spec
+++ radicale/radicale.spec.tmp
@@ -31,17 +31,17 @@
 %if 0%{?gitcommit:1}
 %global shortcommit %(c=%{gitcommit}; echo ${c:0:7})
 %define build_timestamp %(date +"%Y%m%d")
 %global gittag .%{build_timestamp}git%{shortcommit}
 %endif
 
 Name:             radicale
 Version:          %{radicale_version}
-Release:          %{radicale_release}%{?gittag}%{?dist}.1
+Release:          %{radicale_release}%{?gittag}%{?dist}.2
 Summary:          A simple CalDAV (calendar) and CardDAV (contact) server
 License:          GPL-3.0-or-later
 URL:              https://radicale.org
 
 %if 0%{?gitcommit:1}
 Source0:          https://github.com/Kozea/Radicale/archive/%{gitcommit}/%{name}-%{gitcommit}.tar.gz
 %else
 Source0:          https://github.com/Kozea/Radicale/archive/v%{version}/%{name}-%{version}.tar.gz
@@ -76,17 +76,16 @@ BuildRequires:    python3-defusedxml >= 0.7.1
 BuildRequires:    python3-passlib >= 1.7.4
 BuildRequires:    python3-vobject >= 0.9.6
 BuildRequires:    python3-dateutil >= 2.8.1
 
 Conflicts:        radicale < 3.0.0
 Conflicts:        radicale2
 
 Requires:         python3-%{radicale_package_name} = %{version}-%{release}
-Requires(pre):    shadow-utils
 %{?systemd_requires}
 Suggests:         %{radicale_package_name}-selinux = %{version}-%{release}
 
 
 %description
 The Radicale Project is a CalDAV (calendar) and CardDAV (contact) server. It
 aims to be a light solution, easy to use, easy to install, easy to configure.
 As a consequence, it requires few software dependencies and is pre-configured
@@ -197,16 +196,21 @@ mkdir SELinux
 cp -p %{SOURCE4} %{SOURCE5} %{SOURCE6} SELinux
 
 # adjust _rundir according to definition
 sed -i 's|\(/var/run\)|%{_rundir}|' SELinux/%{name}.fc
 
 # restore original version after applying patches
 %{__sed} -i 's|version = "%{radicale_major}.dev"|version = "%{radicale_version}"|' pyproject.toml
 
+# Create a sysusers.d config file
+cat >radicale.sysusers.conf <<EOF
+u radicale - 'Radicale service account' %{_sharedstatedir}/%{name} -
+EOF
+
 
 %build
 %pyproject_wheel
 
 cd SELinux
 for selinuxvariant in %{selinux_variants}
 do
     make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile
@@ -281,16 +285,18 @@ done
 %endif
 
 # logwatch
 install -d %{buildroot}%{_datarootdir}/logwatch/scripts/services/
 install -d %{buildroot}%{_datarootdir}/logwatch/default.conf/services/
 install -p -m 644 contrib/logwatch/%{name} %{buildroot}%{_datarootdir}/logwatch/scripts/services/
 install -p -m 644 contrib/logwatch/%{name}-journald.conf %{buildroot}%{_datarootdir}/logwatch/default.conf/services/%{name}.conf
 
+install -m0644 -D radicale.sysusers.conf %{buildroot}%{_sysusersdir}/radicale.conf
+
 
 %check
 PYTHONPATH=%{buildroot}%{python3_sitelib}
 export PYTHONPATH
 
 # check whether radicale binary is at least displaying help
 echo "Check whether 'radicale' is at least able to display online help"
 %{buildroot}%{_libexecdir}/%{name}/%{radicale_name} --help >/dev/null
@@ -316,22 +322,16 @@ else
   exit 1
 fi
 
 # cleanup before packaging
 rm -rf %{buildroot}%{_sharedstatedir}/%{name}/collection-root
 rm -rf %{buildroot}%{_sharedstatedir}/%{name}/.Radicale.lock
 
 
-%pre -n %{radicale_package_name}
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-    useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /sbin/nologin \
-    -c "Radicale service account" %{name}
-exit 0
 
 
 %post -n %{radicale_package_name}
 %systemd_post %{name}.service
 
 
 %post -n %{radicale_package_name}-selinux
 for selinuxvariant in %{selinux_variants}
@@ -414,16 +414,17 @@ fi
 %{_unitdir}/%{name}.service
 %{_tmpfilesdir}/%{name}.conf
 %dir %attr(750, %{name}, %{name}) %{_sharedstatedir}/%{name}
 %dir %attr(750, %{name}, %{name}) %{_localstatedir}/cache/%{name}
 %dir %{_datadir}/%{name}
 %dir %attr(755, %{name}, %{name}) %{_rundir}/%{name}
 
 %{_libexecdir}/%{name}
+%{_sysusersdir}/radicale.conf
 
 
 %files -n %{radicale_package_name}-selinux
 %doc SELinux/*
 %{_datadir}/selinux/*/%{name}.pp
 
 
 %files -n python3-%{radicale_package_name}
@@ -438,16 +439,19 @@ fi
 
 
 %files -n %{radicale_package_name}-httpd
 %{_datadir}/%{name}/%{name}.wsgi
 %config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.4.0-2.2
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.4.0-2.1
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jan 09 2025 Peter Bieringer <pb@bieringer.de> - 3.4.0-2
 - Update to 3.4.0
 
 * Sat Dec 28 2024 Peter Bieringer <pb@bieringer.de> - 3.3.3-1
 - Update to 3.3.3
diff --git rancid/rancid.spec rancid/rancid.spec.tmp
index d95928fac8..ec94e97f59 100644
--- rancid/rancid.spec
+++ rancid/rancid.spec.tmp
@@ -1,11 +1,11 @@
 Name: rancid
 Version: 3.13
-Release: 14%{?dist}
+Release: 15%{?dist}
 Summary: Really Awesome New Cisco confIg Differ
 
 License: BSD-3-Clause
 URL: http://www.shrubbery.net/rancid/
 Source0: https://shrubbery.net/pub/%{name}/%{name}-%{version}.tar.gz
 Source1: %{name}.cron
 Patch0: %{name}-Makefile.patch
 Patch1: %{name}-configure-no-ping-test.patch
@@ -20,17 +20,16 @@ BuildRequires: expect >= 5.40
 BuildRequires: findutils
 # To configure ping command line arguments:
 BuildRequires: iputils
 # To configure path to /usr/sbin/sendmail:
 BuildRequires: ssmtp
 # To configure telnet command line arguments:
 BuildRequires: telnet
 
-Requires(pre): shadow-utils
 Requires: expect >= 5.40
 # For control_rancid's use of find command:
 Requires: findutils
 # For lg.cgi's use of ping command:
 Requires: iputils
 Requires: perl-interpreter
 Requires: /usr/sbin/sendmail
 Requires: cronie
@@ -42,16 +41,23 @@ Suggests: telnet
 RANCID monitors a router's (or more generally a device's) configuration, 
 including software and hardware (cards, serial numbers, etc) and uses CVS 
 (Concurrent Version System), Subversion, or Git to maintain history of changes.
 
 
 %prep
 %autosetup -p1
 
+# Option -k was ignored. It must not be used for system users.
+# Option -m was ignored. It must not be used for system users.
+# Create a sysusers.d config file
+cat >rancid.sysusers.conf <<EOF
+u rancid - 'RANCID' %{_localstatedir}/%{name}/ /bin/bash
+EOF
+
 %build
 %configure \
     --sysconfdir=%{_sysconfdir}/%{name} \
     --bindir=%{_libexecdir}/%{name} \
     --libdir=%{perl_vendorlib} \
     --localstatedir=%{_localstatedir}/%{name} \
     --enable-conf-install \
     --with-git
@@ -80,23 +86,19 @@ install -D -p -m 0644 %{SOURCE1} %{buildroot}/%{_sysconfdir}/cron.d/%{name}
 sed -i 's|RANCIDBINDIR|%{_libexecdir}/%{name}|g' %{buildroot}/%{_sysconfdir}/cron.d/%{name}
 
 #Patch to point to correct log directory
 grep -rlF '$BASEDIR/logs' %{buildroot} | xargs sed -i 's|\$BASEDIR/logs|%{_localstatedir}/log/%{name}|'
 
 #Remove docs that will get installed to docdir in files section below
 rm -f %{buildroot}%{_datadir}/%{name}/{CHANGES,FAQ,README,README.lg,UPGRADING,Todo,COPYING}
 
+install -m0644 -D rancid.sysusers.conf %{buildroot}%{_sysusersdir}/rancid.conf
+
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-    useradd -r -g %{name} -d %{_localstatedir}/%{name}/ -s /bin/bash \
-	    -k /etc/skel -m -c "RANCID" %{name}
-exit 0
 
 
 %files
 %doc CHANGES FAQ README README.lg UPGRADING Todo
 %license COPYING
 
 #%%{_sysconfdir}-files
 %attr(750,%{name},%{name}) %dir %{_sysconfdir}/%{name}
@@ -116,19 +118,23 @@ exit 0
 %{_datadir}/%{name}
 
 #%%{_localstatedir}-directories
 %attr(750,%{name},%{name}) %dir %{_localstatedir}/log/%{name}
 %attr(750,%{name},%{name}) %dir %{_localstatedir}/log/%{name}/old
 %attr(750,%{name},%{name}) %dir %{_localstatedir}/%{name}/
 
 %{perl_vendorlib}/*
+%{_sysusersdir}/rancid.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.13-15
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.13-14
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.13-13
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Fri Apr 19 2024 Charles R. Anderson <cra@alum.wpi.edu> - 3.13-12
 - Enable git as default VCS for new installs
diff --git rbldnsd/rbldnsd.spec rbldnsd/rbldnsd.spec.tmp
index 53b7233fa9..82ae15e401 100644
--- rbldnsd/rbldnsd.spec
+++ rbldnsd/rbldnsd.spec.tmp
@@ -6,33 +6,32 @@
 %endif
 
 # Build hardened (PIE) where possible
 %global _hardened_build 1
 
 Summary:	Small, fast daemon to serve DNSBLs
 Name:		rbldnsd
 Version:	0.998b
-Release:	16%{?dist}
+Release:	17%{?dist}
 License:	GPL-2.0-or-later
 URL:		https://rbldnsd.io/
 Source0:	https://rbldnsd.io/dwl/rbldnsd-%{version}.tgz
 Source2:	rbldnsd.conf
 Source3:	rbldnsctl
 Source4:	README.systemd
 Patch0:		rbldnsd-configure-c99.patch
 Patch1:		rbldnsd-0.998b-version.patch
 BuildRequires:	coreutils
 BuildRequires:	gawk
 BuildRequires:	gcc
 BuildRequires:	make
 BuildRequires:	sed
 BuildRequires:	%{systemd_rpm_macros}
 BuildRequires:	zlib-devel
-Requires(pre):	shadow-utils
 Requires:	gawk
 %{?systemd_requires}
 
 %description
 Rbldnsd is a small, authoritative-only DNS nameserver designed to serve
 DNS-based blocklists (DNSBLs). It may handle IP-based and name-based
 blocklists.
 
@@ -44,38 +43,39 @@ blocklists.
 
 # Fix version number reported by rbldnsd
 %patch -P 1
 
 sed -i	-e 's@/var/lib/rbldns\([/ ]\)@%{_localstatedir}/lib/rbldnsd\1@g' \
 	-e 's@\(-r/[a-z/]*\) -b@\1 -q -b@g' contrib/debian/rbldnsd.default
 cp -p %{SOURCE2} %{SOURCE3} %{SOURCE4} ./
 
+# Create a sysusers.d config file
+cat >rbldnsd.sysusers.conf <<EOF
+u rbldns - 'rbldns daemon' %{_localstatedir}/lib/rbldnsd -
+EOF
+
 %build
 # this is not an autotools-generated configure script, and does not support --libdir
 CFLAGS="%{optflags}" \
 LDFLAGS="%{?__global_ldflags}" \
 ./configure
 make
 
 %install
 mkdir -p %{buildroot}{%{_sbindir},%{_mandir}/man8,%{_initrddir},%{_sysconfdir}/sysconfig}
 mkdir -p %{buildroot}{/etc/systemd,%{_localstatedir}/lib/rbldnsd}
 install -p -m 755 rbldnsd				%{buildroot}%{_sbindir}/
 install -p -m 644 rbldnsd.8				%{buildroot}%{_mandir}/man8/
 install -p -m 644 contrib/debian/rbldnsd.default	%{buildroot}%{_sysconfdir}/sysconfig/rbldnsd
 install -p -m 644 rbldnsd.conf				%{buildroot}/etc/systemd/
 install -p -m 755 rbldnsctl				%{buildroot}%{_sbindir}/
 
-%pre
-getent group rbldns >/dev/null || groupadd -r rbldns
-getent passwd rbldns >/dev/null || \
-	useradd -r -g rbldns -d %{_localstatedir}/lib/rbldnsd \
-		-s /sbin/nologin -c "rbldns daemon" rbldns
-exit 0
+install -m0644 -D rbldnsd.sysusers.conf %{buildroot}%{_sysusersdir}/rbldnsd.conf
+
 
 %post
 systemctl daemon-reload &>/dev/null || :
 
 %preun
 if [ $1 -eq 0 ]; then
 	# Package removal, not upgrade
 	%{_sbindir}/rbldnsctl stop &>/dev/null || :
@@ -94,18 +94,22 @@ fi
 %doc CHANGES-0.81 NEWS README README.user TODO contrib/debian/changelog
 %{_sbindir}/rbldnsd
 %{_mandir}/man8/rbldnsd.8*
 %dir %{_localstatedir}/lib/rbldnsd/
 %config(noreplace) %{_sysconfdir}/sysconfig/rbldnsd
 %doc README.systemd
 %config(noreplace) %{_sysconfdir}/systemd/rbldnsd.conf
 %{_sbindir}/rbldnsctl
+%{_sysusersdir}/rbldnsd.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.998b-17
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.998b-16
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.998b-15
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.998b-14
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git retrace-server/retrace-server.spec retrace-server/retrace-server.spec.tmp
index 9802bd9d30..312ef720ef 100644
--- retrace-server/retrace-server.spec
+++ retrace-server/retrace-server.spec.tmp
@@ -1,16 +1,16 @@
 #retrace uid/gid reserved in setup, rhbz #706012
 %define retrace_gid_uid 174
 %define retrace_home %{_sharedstatedir}/retrace
 
 Summary: Application for remote coredump analysis
 Name: retrace-server
 Version: 1.24.2
-Release: 9%{?dist}
+Release: 10%{?dist}
 License: GPL-2.0-or-later
 URL: https://github.com/abrt/retrace-server
 Source0: https://github.com/abrt/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
 
 BuildArch: noarch
 
 BuildRequires: asciidoc
 # /usr/bin/df from coreutils is used to calculate free disk space.
@@ -85,16 +85,21 @@ Provides: abrt-retrace-server = 2.0.3
 
 %description
 The retrace server provides a coredump analysis and backtrace
 generation service over a network using HTTP protocol.
 
 %prep
 %autosetup
 
+# Create a sysusers.d config file
+cat >retrace-server.sysusers.conf <<EOF
+u retrace %{retrace_gid_uid} - %{retrace_home} -
+EOF
+
 %build
 %meson \
     -Ddocs=enabled \
     %{nil}
 %meson_build
 
 %check
 %meson_test
@@ -137,20 +142,18 @@ mkdir -p %{buildroot}%{_libexecdir}/%{name}/hooks/post_clean_task
 %if 0%{?fedora} >= 29
 %py_byte_compile %{__python3} %{buildroot}%{_datadir}/%{name}/plugins
 %endif
 
 rm -f %{buildroot}%{_infodir}/dir
 
 %{find_lang} %{name}
 
-%pre
-getent group retrace > /dev/null || groupadd -f -g %{retrace_gid_uid} --system retrace
-getent passwd retrace > /dev/null || useradd --system -g retrace -u %{retrace_gid_uid} -d %{retrace_home} -s /sbin/nologin retrace
-exit 0
+install -m0644 -D retrace-server.sysusers.conf %{buildroot}%{_sysusersdir}/retrace-server.conf
+
 
 %post
 %if (0%{?rhel} && 0%{?rhel} <= 7) || (0%{?fedora} && 0%{?fedora} <= 27)
 /sbin/install-info %{_infodir}/%{name} %{_infodir}/dir 2> /dev/null || :
 %endif
 /usr/sbin/usermod -a -G mock retrace 2> /dev/null || :
 
 # Migrate old home directory during an upgrade (i.e. $1 == 2) -- if retrace's home
@@ -231,18 +234,22 @@ exit 0
 %doc %{_mandir}/man1/%{name}-cleanup.1*
 %doc %{_mandir}/man1/%{name}-interact.1*
 %doc %{_mandir}/man1/%{name}-reposync.1*
 %doc %{_mandir}/man1/%{name}-worker.1*
 %doc %{_mandir}/man1/%{name}-task.1*
 %doc %{_infodir}/%{name}*
 %doc README.md
 %license COPYING
+%{_sysusersdir}/retrace-server.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.24.2-10
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.24.2-9
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.24.2-8
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Fri Jun 07 2024 Python Maint <python-maint@redhat.com> - 1.24.2-7
 - Rebuilt for Python 3.13
diff --git rssh/rssh.spec rssh/rssh.spec.tmp
index 13bdf6bfb5..1afe9ca214 100644
--- rssh/rssh.spec
+++ rssh/rssh.spec.tmp
@@ -1,11 +1,11 @@
 Name:           rssh
 Version:        2.3.4
-Release:        31%{?dist}
+Release:        32%{?dist}
 Summary:        Restricted shell for use with OpenSSH, allowing only scp and/or sftp
 # Automatically converted from old format: BSD - review is highly recommended.
 License:        LicenseRef-Callaway-BSD 
 URL:            http://www.pizzashack.org/rssh/
 Source0:        http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
 Source1:        http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz.sig
 Patch0:         rssh-2.3.4-makefile.patch
 Patch2:         rssh-2.3.4-command-line-error.patch
@@ -23,17 +23,16 @@ Patch6:         rssh-configure-c99.patch
 BuildRequires: make
 BuildRequires:  gcc
 BuildRequires:  openssh-server
 BuildRequires:  openssh-clients
 BuildRequires:  cvs
 BuildRequires:  rsync
 BuildRequires:  rdist
 Requires:       openssh-server
-Requires(pre):  shadow-utils
 
 
 %description
 rssh is a restricted shell for use with OpenSSH, allowing only scp
 and/or sftp. For example, if you have a server which you only want
 to allow users to copy files off of via scp, without providing shell
 access, you can use rssh to do that. It is a alternative to scponly.
 
@@ -45,46 +44,54 @@ access, you can use rssh to do that. It is a alternative to scponly.
 %patch -P3 -p1 -b .rsync_opts
 %patch -P4 -p1 -b .scp_opts
 %patch -P5 -p1 -b .chroot_cmd
 %patch -P6 -p1 -b .c99
 
 chmod 644 conf_convert.sh
 chmod 644 mkchroot.sh
 
+# Create a sysusers.d config file
+cat >rssh.sysusers.conf <<EOF
+g rsshusers -
+EOF
+
 
 %build
 %configure
 %make_build
 
 
 %install
 %make_install
 # since rssh 2.3.4, default config is installed as rssh.conf.default,
 # rename it for packaging in rpm
 mv %{buildroot}/%{_sysconfdir}/rssh.conf{.default,}
 
+install -m0644 -D rssh.sysusers.conf %{buildroot}%{_sysusersdir}/rssh.conf
+
 
-%pre
-getent group rsshusers >/dev/null || groupadd -r rsshusers
-exit 0
 
 
 %files
 %license COPYING
 %doc AUTHORS ChangeLog CHROOT NEWS README SECURITY TODO
 %doc conf_convert.sh mkchroot.sh
 %{_mandir}/man1/rssh.1*
 %{_mandir}/man5/rssh.conf.5*
 %config(noreplace) %{_sysconfdir}/rssh.conf
 %attr(750, root, rsshusers) %{_bindir}/rssh
 %attr(4750, root, rsshusers) %{_libexecdir}/rssh_chroot_helper
+%{_sysusersdir}/rssh.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.3.4-32
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.4-31
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Sep 04 2024 Miroslav Suchý <msuchy@redhat.com> - 2.3.4-30
 - convert license to SPDX
 
 * Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.4-29
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git rtl-sdr/rtl-sdr.spec rtl-sdr/rtl-sdr.spec.tmp
index 5256d29607..d42d10e7a7 100644
--- rtl-sdr/rtl-sdr.spec
+++ rtl-sdr/rtl-sdr.spec.tmp
@@ -9,24 +9,23 @@
 # cd %%{name}
 # git archive --format=tar --prefix=%%{name}-%%{version}/ %%{git_commit} | \
 # bzip2 > ../%%{name}-%%{version}-%%{git_suffix}.tar.bz2
 
 Name:             rtl-sdr
 URL:              http://sdr.osmocom.org/trac/wiki/rtl-sdr
 #Version:          0.6.0^%%{git_suffix}
 Version:          2.0.1
-Release:          4%{?dist}
+Release:          5%{?dist}
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:          GPL-2.0-or-later
 BuildRequires:    gcc
 BuildRequires:    cmake
 BuildRequires:    libusbx-devel
 #BuildRequires:    libusb1-devel
-Requires(pre):    shadow-utils
 Requires(pre):    glibc-common
 Summary:          SDR utilities for Realtek RTL2832 based DVB-T dongles
 #Source0:          https://github.com/steve-m/librtlsdr/archive/%%{git_commit}/librtlsdr-%%{git_commit}.tar.gz
 Source0:          https://github.com/steve-m/librtlsdr/archive/refs/tags/v%{version}/librtlsdr-%{version}.tar.gz
 #Source0:          https://github.com/steve-m/librtlsdr/archive/%%{version}/librtlsdr-%%{version}.tar.gz
 # https://osmocom.org/projects/rtl-sdr/repository/revisions/222517b506278178ab93182d79ccf7eb04d107ce
 
 %description
@@ -41,51 +40,58 @@ Requires:         cmake-filesystem
 Development files for rtl-sdr.
 
 %prep
 #%%autosetup -p1 -n librtlsdr-%%{git_commit}
 %autosetup -p1 -n librtlsdr-%{version}
 rm -f src/getopt/*
 rmdir src/getopt
 
+# Create a sysusers.d config file
+cat >rtl-sdr.sysusers.conf <<EOF
+g rtlsdr -
+EOF
+
 %build
 %cmake -DDETACH_KERNEL_DRIVER=ON
 %cmake_build
 
 %install
 %cmake_install
 
 # remove static libs
 rm -f %{buildroot}%{_libdir}/*.a
 
 # Fix udev rules and allow access only to users in rtlsdr group
 sed -i 's/GROUP="plugdev"/GROUP="rtlsdr"/' ./rtl-sdr.rules
 install -Dpm 644 ./rtl-sdr.rules %{buildroot}%{_prefix}/lib/udev/rules.d/10-rtl-sdr.rules
 
-%pre
-getent group rtlsdr >/dev/null || \
-  %{_sbindir}/groupadd -r rtlsdr >/dev/null 2>&1
-exit 0
+install -m0644 -D rtl-sdr.sysusers.conf %{buildroot}%{_sysusersdir}/rtl-sdr.conf
+
 
 %ldconfig_scriptlets
 
 %files
 %license COPYING
 %doc AUTHORS
 %{_bindir}/*
 %{_libdir}/*.so.*
 %{_prefix}/lib/udev/rules.d/10-rtl-sdr.rules
+%{_sysusersdir}/rtl-sdr.conf
 
 %files devel
 %{_includedir}/*
 %{_libdir}/cmake/rtlsdr
 %{_libdir}/*.so
 %{_libdir}/pkgconfig/*.pc
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.0.1-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.1-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul  26 2024 Miroslav Suchý <msuchy@redhat.com> - 2.0.1-3
 - convert license to SPDX
 
 * Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.1-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git rwhoisd/rwhoisd.spec rwhoisd/rwhoisd.spec.tmp
index 4b6511172f..315fed304d 100644
--- rwhoisd/rwhoisd.spec
+++ rwhoisd/rwhoisd.spec.tmp
@@ -1,14 +1,14 @@
 # Disable TCP Wrappers connection filter
 %bcond_with rwhoisd_enables_tcpwrappers
 
 Name:       rwhoisd 
 Version:    1.5.9.6
-Release:    32%{?dist}
+Release:    33%{?dist}
 Summary:    ARIN's Referral WHOIS server
 # common/strerror.c:                GPL-2.0-or-later (libiberty)
 # LICENSE:                          GPL-2.0 text
 # mkdb/metaphon.c:                  LicenseRef-Fedora-Public-Domain
 # mkdb/y.tab.c:                     GPL-2.0-or-later WITH Bison-exception-1.24
 # regexp/COPYRIGHT:                 Spencer-86
 ## Not in any binary package
 # configure:                        FSFUL
@@ -51,17 +51,16 @@ BuildRequires:  make
 %if %{with rwhoisd_enables_tcpwrappers}
 BuildRequires:  tcp_wrappers-devel
 %endif
 BuildRequires:  systemd
 # cat executed by rwhois_repack
 Requires:       %{_bindir}/cat
 # sort executed by rwhois_indexer
 Requires:       %{_bindir}/sort
-Requires(pre):      shadow-utils
 %{?systemd_requires}
 
 %description
 This server is a reference implementation of the server side of the RWhois
 protocol, first described in RFC 1714.  This server attempts to implement
 concepts and practices in accordance with version 1.5 of the protocol,
 described in RFC 2167.
 
@@ -79,16 +78,21 @@ Recommended how-to is <http://www.unixadmin.cc/rwhois/>.
 %prep
 %autosetup -p1
 # Remove bundled tcp_wrappers for sure
 find tools/tcpd_wrapper -depth -mindepth 1 \! -name Makefile.in -delete
 # Keep System V8 regexp library
 # TODO: port to GNU glibc
 autoreconf
 
+# Create a sysusers.d config file
+cat >rwhoisd.sysusers.conf <<EOF
+u rwhoisd - 'rwhoisd daemon' %{_localstatedir}/%{name} -
+EOF
+
 %build
 %global _hardened_build 1
 %configure \
     --disable-gcc-debug \
     --disable-gprof \
     --enable-ipv6 \
     --enable-largefile \
     --enable-newsort \
@@ -115,22 +119,18 @@ install -d '%{buildroot}%{_sysconfdir}'
 install -m 0644 -t '%{buildroot}%{_sysconfdir}' sample.data/rwhoisd.conf
 install -m 0644 -t '%{buildroot}%{_sysconfdir}' sample.data/rwhoisd.dir
 install -m 0644 -t '%{buildroot}%{_sysconfdir}' sample.data/rwhoisd.x.dir
 install -m 0644 -t '%{buildroot}%{_sysconfdir}' sample.data/rwhoisd.root
 install -m 0644 -t '%{buildroot}%{_localstatedir}/%{name}/' \
     sample.data/rwhoisd.auth_area
 install -d -m 0775 "%{buildroot}%{_localstatedir}/%{name}/register-spool"
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-    useradd -r -g %{name} -d %{_localstatedir}/%{name} -s /sbin/nologin \
-    -c "rwhoisd daemon" %{name}
-exit 0
+install -m0644 -D rwhoisd.sysusers.conf %{buildroot}%{_sysusersdir}/rwhoisd.conf
+
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %postun
@@ -148,21 +148,25 @@ exit 0
 %{_unitdir}/%{name}.service
 %config(noreplace) %{_sysconfdir}/%{name}.conf
 %config(noreplace) %{_sysconfdir}/%{name}.dir
 %config(noreplace) %{_sysconfdir}/%{name}.x.dir
 %config(noreplace) %{_sysconfdir}/%{name}.root
 %dir %{_localstatedir}/%{name}
 %config(noreplace) %{_localstatedir}/%{name}/%{name}.auth_area
 %attr(775,root,%{name}) %dir %{_localstatedir}/%{name}/register-spool
+%{_sysusersdir}/rwhoisd.conf
 
 %files example
 %{_localstatedir}/%{name}/samples
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.5.9.6-33
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.9.6-32
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.9.6-31
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.9.6-30
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git safekeep/safekeep.spec safekeep/safekeep.spec.tmp
index b33dd9729a..e1177b9eaa 100644
--- safekeep/safekeep.spec
+++ safekeep/safekeep.spec.tmp
@@ -1,15 +1,15 @@
 %global commit 75e66fe16a3afcb78db5786018487adb63e91793
 %global date 20230910
 %global shortcommit %(c=%{commit}; echo ${c:0:7})
 
 %define name    safekeep
 %define version 1.5.1
-%define release 4
+%define release 5
 %define homedir %{_localstatedir}/lib/%{name}
 
 Name:           %{name}
 Version:        %{version}^%{date}git%{shortcommit}
 Release:        %{release}%{?dist}
 Summary:        The SafeKeep backup system
 
 License:        GPL-2.0-or-later
@@ -48,47 +48,47 @@ Requires:       %{name}-common = %{version}-%{release}
 SafeKeep is a client/server backup system which enhances the
 power of rdiff-backup with simple, centralized configuration.
 
 This is the client component of SafeKeep. It should be
 installed on all hosts that need to be backed-up.
 
 %package server
 Summary:        The SafeKeep backup system (server component)
-Requires(pre):  /usr/sbin/useradd
-Requires(pre):  /usr/sbin/groupadd
 Requires:       openssh, openssh-clients
 Requires:       %{name}-common = %{version}-%{release}
 Requires:       crontabs
 
 %description server
 SafeKeep is a client/server backup system which enhances the
 power of rdiff-backup with simple, centralized configuration.
 
 This is the server component of SafeKeep. It should be
 installed on the server on which the data will be backed-up to.
 
 %prep
 %setup -q -n %{name}-%{commit}
 cp -p %{SOURCE1} .
 
+# Create a sysusers.d config file
+cat >safekeep.sysusers.conf <<EOF
+u safekeep - 'Used by %{name} to run and store backups.' %{homedir} -
+EOF
+
 %build
 make %{?_smp_mflags} build
 
 %install
 rm -rf %{buildroot}
 make install DESTDIR=%{buildroot}
 install -d -m 750 "%{buildroot}%{homedir}"
 install -d -m 700 "%{buildroot}%{homedir}/.ssh"
 
-%pre server
-%{_sbindir}/groupadd -f -r %{name}
-id %{name} >/dev/null 2>&1 || \
-%{_sbindir}/useradd -r -g %{name} -d %{homedir} -s /sbin/nologin \
-  -c "Used by %{name} to run and store backups." %{name}
+install -m0644 -D safekeep.sysusers.conf %{buildroot}%{_sysusersdir}/safekeep.conf
+
 
 %files common
 %{_bindir}/%{name}
 %{_mandir}/man1/%{name}.1*
 %doc AUTHORS COPYING README INSTALL TODO samples/client-script-sample.sh
 %{!?_licensedir:%global license %doc}
 %license LICENSE
 %doc README.Fedora
@@ -100,18 +100,22 @@ id %{name} >/dev/null 2>&1 || \
 %attr(700,%{name},%{name}) %dir %{homedir}/.ssh
 %dir %{_sysconfdir}/%{name}
 %dir %{_sysconfdir}/%{name}/backup.d
 %config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
 %{_sysconfdir}/cron.daily/%{name}
 %{_mandir}/man5/%{name}.conf.5*
 %{_mandir}/man5/%{name}.backup.5*
 %doc samples/sample.backup
+%{_sysusersdir}/safekeep.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.5.1^20230910git75e66fe-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.1^20230910git75e66fe-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.1^20230910git75e66fe-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.1^20230910git75e66fe-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git sagator/sagator.spec sagator/sagator.spec.tmp
index ee019714ea..c8eefcfc50 100644
--- sagator/sagator.spec
+++ sagator/sagator.spec.tmp
@@ -13,17 +13,17 @@
 %global python_version python3
 %else
 %global python_version python2
 %endif
 
 Summary:   Antivirus/anti-spam gateway for smtp server
 Name:      sagator
 Version:   2.0.3
-Release:   0.beta3%{?dist}.3
+Release:   0.beta3%{?dist}.4
 Source:    http://www.salstar.sk/pub/antivir/snapshots/unstable/sagator-%{version}-0.beta3.tar.bz2
 URL:       http://www.salstar.sk/sagator/
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:   GPL-2.0-or-later
 BuildArch: noarch
 BuildRequires: %{python_version}-devel, ed, gettext
 BuildRequires: %{python_version}-passlib
 BuildRequires: make
@@ -66,17 +66,17 @@ Features:
 
 %package core
 Summary:        Antivirus/anti-spam gateway for smtp server, core files
 Requires:       sed
 %if 0%{?suse_version}
 BuildRequires: aaa_base, python-xml, clamav >= %{CLAMAV_VERSION}
 Requires:       aaa_base, smtp_daemon
 %else
-Requires:       server(smtp), shadow-utils
+Requires:       server(smtp)
 BuildRequires:  clamav-devel >= %{CLAMAV_VERSION}
 Requires:       clamav-lib >= %{CLAMAV_VERSION}
 %endif
 BuildRequires:  systemd
 %{?systemd_requires}
 Requires:       spamassassin
 BuildRequires:  logwatch
 Obsoletes:      sagator-libclamav <= 1.2.3
@@ -108,37 +108,39 @@ BuildRequires: selinux-policy-devel
 
 %description selinux
 This package helps moving to the upstream SELinux module.
 %endif
 
 %prep
 %setup -q
 
+# Create a sysusers.d config file
+cat >sagator.sysusers.conf <<EOF
+u vscan - 'SAGATOR' %{CHROOTDIR} -
+EOF
+
 %build
 sh configure --prefix=%{_prefix} --filelist --python=%{python_version}
 make %{?_smp_mflags}
 
 %install
 rm -rf %{buildroot}
 make DESTDIR=%{buildroot} PREFIX=%{_prefix} SBINDIR=%{buildroot}%{_sbindir} install
 rm -f %{buildroot}%{_datadir}/sagator/etc/sgconf.py* \
   scripts/mkchroot.sh scripts/graphs/*.in
 touch %{buildroot}%{_datadir}/%{name}/etc/sgconf.py_
 ln -s ../../../..%{_sysconfdir}/sagator.conf \
   %{buildroot}%{_datadir}/%{name}/etc/sgconf.py
 mkdir -p %{buildroot}%{CHROOTDIR}/tmp/quarantine
 cp -arf scripts/db %{buildroot}%{_datadir}/%{name}/
 %find_lang %{name}
 
-%pre core
-getent group vscan >/dev/null || groupadd -r vscan
-getent passwd vscan >/dev/null || \
-useradd -r -g vscan -d %{CHROOTDIR} -s /sbin/nologin -c "SAGATOR" vscan
-exit 0
+install -m0644 -D sagator.sysusers.conf %{buildroot}%{_sysusersdir}/sagator.conf
+
 
 %post core
 touch %{_var}/lib/sagator-mkchroot
 if [ $1 = 2 ]; then # upgrade
   [ -f %{_sysconfdir}/sysconfig/sagator ] && . %{_sysconfdir}/sysconfig/sagator || true
   # update configuration
   %{_datadir}/sagator/updatecfg.py || true
 fi
@@ -202,28 +204,32 @@ touch %{_var}/lib/sagator-mkchroot
 %{_datadir}/%{name}/srv
 %exclude %{_datadir}/%{name}/srv/web
 %exclude %{_datadir}/%{name}/srv/templates
 %{_datadir}/%{name}/db
 %{_mandir}/man*/*
 %dir %{CHROOTDIR}
 %attr(1777,vscan,vscan) %dir %{CHROOTDIR}/tmp
 %attr(0770,vscan,vscan) %dir %{CHROOTDIR}/tmp/quarantine
+%{_sysusersdir}/sagator.conf
 
 %files webq -f sagator.lang
 %{_datadir}/%{name}/srv/web
 %{_datadir}/%{name}/srv/templates
 
 %if 0%{?install_sepolicy}>0
 %files selinux
 %dir %{_datadir}/%{name}/selinux
 %{sepolicy}
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.0.3-0.beta3.4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.3-0.beta3.3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 2.0.3-0.beta3.2
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.3-0.beta3.1
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git screen/screen.spec screen/screen.spec.tmp
index 75fc77ed05..199dc145a0 100644
--- screen/screen.spec
+++ screen/screen.spec.tmp
@@ -1,18 +1,17 @@
 %bcond_with multiuser
 %global _hardened_build 1
 
 Summary:        A screen manager that supports multiple logins on one terminal
 Name:           screen
 Version:        5.0.0
-Release:        2%{?dist}
+Release:        3%{?dist}
 License:        GPL-3.0-or-later
 URL:            http://www.gnu.org/software/screen
-Requires(pre):  /usr/sbin/groupadd
 BuildRequires: make
 BuildRequires:  ncurses-devel pam-devel libutempter-devel autoconf texinfo
 BuildRequires:  automake gcc
 # for %%_tmpfilesdir macro
 BuildRequires:  systemd
 
 Source0:        https://ftp.gnu.org/gnu/screen/screen-%{version}.tar.gz
 Source1:        screen.pam
@@ -28,16 +27,21 @@ login.
 
 Install the screen package if you need a screen manager that can
 support multiple logins on one terminal.
 
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >screen.sysusers.conf <<EOF
+g screen 84
+EOF
+
 %build
 ./autogen.sh
 
 %configure \
 	--enable-pam \
 	--enable-colors256 \
 	--enable-rxvt_osc \
 	--enable-use-locale \
@@ -85,19 +89,18 @@ d %{_rundir}/screen 0755 root root
 %else
 d %{_rundir}/screen 0775 root screen
 %endif
 EOF
 
 # Remove files from the buildroot which we don't want packaged
 rm -f $RPM_BUILD_ROOT%{_infodir}/dir
 
-%pre
-/usr/sbin/groupadd -g 84 -r -f screen
-:
+install -m0644 -D screen.sysusers.conf %{buildroot}%{_sysusersdir}/screen.conf
+
 
 %files
 %doc README doc/FAQ doc/README.DOTSCREEN ChangeLog
 %license COPYING
 %{_mandir}/man1/screen.*
 %{_infodir}/screen.info*
 %{_datadir}/screen
 %config(noreplace) %{_sysconfdir}/screenrc
@@ -105,18 +108,22 @@ rm -f $RPM_BUILD_ROOT%{_infodir}/dir
 %{_tmpfilesdir}/screen.conf
 %if %{with multiuser}
 %attr(4755,root,root) %{_bindir}/screen
 %attr(755,root,root) %{_rundir}/screen
 %else
 %attr(2755,root,screen) %{_bindir}/screen
 %attr(775,root,screen) %{_rundir}/screen
 %endif
+%{_sysusersdir}/screen.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 5.0.0-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.0-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Aug 29 2024 Josef Ridky <jridky@redhat.com> - 5.0.0-1
 - New upsream release 5.0.0 (#2308450)
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.9.1-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git sendmail/sendmail.spec sendmail/sendmail.spec.tmp
index ac714cf983..602e6eb312 100644
--- sendmail/sendmail.spec
+++ sendmail/sendmail.spec.tmp
@@ -36,17 +36,17 @@
 %if "%{with_nis}" == "yes"
 %global nis_cflags	-DNIS
 %global nis_ldadd	-lnsl
 %endif
 
 Summary: A widely used Mail Transport Agent (MTA)
 Name: sendmail
 Version: 8.18.1
-Release: 8%{?dist}
+Release: 9%{?dist}
 License: sendmail-8.23 AND MIT AND MIT-CMU AND BSD-3-Clause AND CDDL-1.0 AND BSD-4-Clause AND BSD-4-Clause-UC AND PostgreSQL AND ISC AND HPND-sell-variant AND mailprio
 URL: http://www.sendmail.org/
 
 Source0: https://ftp.sendmail.org/sendmail.%{version}.tar.gz
 # Systemd Service file
 Source1: sendmail.service
 # NetworkManager dispatch script
 Source2: sendmail.nm-dispatcher
@@ -117,17 +117,16 @@ BuildRequires: groff
 BuildRequires: ghostscript
 BuildRequires: m4
 BuildRequires: systemd
 BuildRequires: gcc
 Provides: MTA smtpdaemon server(smtp)
 Requires(post): systemd coreutils %{_sbindir}/alternatives %{_bindir}/openssl
 Requires(preun): systemd %{_sbindir}/alternatives
 Requires(postun): systemd coreutils %{_sbindir}/alternatives
-Requires(pre): shadow-utils
 Requires: procmail
 Requires: bash >= 2.0
 Requires: setup >= 2.5.31-1
 BuildRequires: setup >= 2.5.31-1
 %if "%{with_tls}" == "yes"
 BuildRequires: openssl-devel
 %if 0%{?fedora} >= 41
 BuildRequires:  openssl-devel-engine
@@ -230,16 +229,22 @@ cp devtools/M4/UNIX/{,shared}library.m4
 
 for f in RELEASE_NOTES contrib/etrn.0; do
 	iconv -f iso8859-1 -t utf8 -o ${f}{_,} &&
 		touch -r ${f}{,_} && mv -f ${f}{_,}
 done
 
 sed -i 's|/usr/local/bin/perl|%{_bindir}/perl|' contrib/*.pl
 
+# Create a sysusers.d config file
+cat >sendmail.sysusers.conf <<EOF
+u mailnull 47 - %{spooldir}/mqueue %{smshell}
+u smmsp 51 - %{spooldir}/mqueue %{smshell}
+EOF
+
 %build
 %set_build_flags
 # generate redhat config file
 cat > redhat.config.m4 << EOF
 define(\`confMAPDEF', \`%{?with_db:-DNEWDB }-DCDB %{?nis_cflags} -DMAP_REGEX -DSOCKETMAP -DNAMED_BIND=1')
 define(\`confOPTIMIZE', \`\`\`\`${CFLAGS} -std=gnu17'''')
 define(\`confENVDEF', \`%{?with_db:-I%{_includedir}/libdb }-I%{_prefix}/kerberos/include -Wall -DXDEBUG=0 -DNETINET6 -DHES_GETMAILHOST -DUSE_VENDOR_CF_PATH=1 -D_FFR_LINUX_MHNL -D_FFR_QOS -D_FILE_OFFSET_BITS=64 -DHAS_GETHOSTBYNAME2 -DHASFLOCK')
 define(\`confLIBDIRS', \`-L%{_prefix}/kerberos/%{_lib}')
@@ -507,28 +512,19 @@ touch %{buildroot}%{_prefix}/lib/sendmail
 touch %{buildroot}%{_sysconfdir}/pam.d/smtp
 
 # create stub man pages
 for m in man8/hoststat.8 man8/purgestat.8; do
 	[ -f %{buildroot}%{_mandir}/$m ] || 
 		echo ".so man8/sendmail.8" > %{buildroot}%{_mandir}/$m
 done
 
+install -m0644 -D sendmail.sysusers.conf %{buildroot}%{_sysusersdir}/sendmail.conf
+
 %pre
-getent group mailnull >/dev/null || \
-  groupadd -g 47 -r mailnull >/dev/null 2>&1
-getent passwd mailnull >/dev/null || \
-  useradd -u 47 -g mailnull -d %{spooldir}/mqueue -r \
-  -s %{smshell} mailnull >/dev/null 2>&1
-getent group smmsp >/dev/null || \
-  groupadd -g 51 -r smmsp >/dev/null 2>&1
-getent passwd smmsp >/dev/null || \
-  useradd -u 51 -g smmsp -d %{spooldir}/mqueue -r \
-  -s %{smshell} smmsp >/dev/null 2>&1
-
 # hack to turn sbin/makemap and man8/makemap.8.gz into alternatives symlink
 # (part of the rhbz#1219178 fix), this could be probably dropped in f25+
 [ -h /usr/sbin/makemap ] || rm -f /usr/sbin/makemap || :
 [ -h %{_mandir}/man8/makemap.8.gz ] || rm -f %{_mandir}/man8/makemap.8.gz || :
 
 exit 0
 
 %postun
@@ -706,16 +702,17 @@ exit 0
 %{_unitdir}/sm-client.service
 %config(noreplace) %{_sysconfdir}/sysconfig/sendmail
 %config(noreplace) %{_sysconfdir}/pam.d/smtp.sendmail
 %{_prefix}/lib/NetworkManager
 
 %if "%{with_sasl2}" == "yes"
 %config(noreplace) %{_sysconfdir}/sasl2/Sendmail.conf
 %endif
+%{_sysusersdir}/sendmail.conf
 
 %files cf
 %doc %{sendmailcf}/README
 %dir %{sendmailcf}
 %{sendmailcf}/cf
 %{sendmailcf}/domain
 %{sendmailcf}/feature
 %{sendmailcf}/hack
@@ -744,16 +741,19 @@ exit 0
 %{_docdir}/sendmail/README.smrsh
 %{_docdir}/sendmail/SECURITY
 %{_docdir}/sendmail/op.pdf
 %dir %{_docdir}/sendmail/contrib
 %attr(0644,root,root) %{_docdir}/sendmail/contrib/*
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 8.18.1-9
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Tue Jan 21 2025 Jaroslav Škarvada <jskarvad@redhat.com> - 8.18.1-8
 - Built with gnu17 C standard
   Resolves: rhbz#2336394
 
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 8.18.1-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jan 16 2025 Zbigniew Jedrzejewski-Szmek <zbyszek@in.waw.pl> - 8.18.1-6
diff --git shairport-sync/shairport-sync.spec shairport-sync/shairport-sync.spec.tmp
index 5a8e2f9eee..7e61eb9780 100644
--- shairport-sync/shairport-sync.spec
+++ shairport-sync/shairport-sync.spec.tmp
@@ -1,11 +1,11 @@
 Name:           shairport-sync
 Version:        4.3.5
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        AirTunes emulator. Multi-Room with Audio Synchronisation
 # MIT licensed except for tinysvcmdns under BSD, 
 # FFTConvolver/ under GPLv3+ and audio_sndio.c 
 # under ISC
 # Automatically converted from old format: MIT and BSD and GPLv3+ and ISC - review is highly recommended.
 License:        LicenseRef-Callaway-MIT AND LicenseRef-Callaway-BSD AND GPL-3.0-or-later AND ISC
 URL:            https://github.com/mikebrady/shairport-sync
 Source0:        https://github.com/mikebrady/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
@@ -34,35 +34,38 @@ Shairport Sync emulates an AirPort Express for the purpose of streaming audio
  devices playing the same source. Thus, for example, synchronised multi-room
  audio is possible without difficulty. (Hence the name Shairport Sync, BTW.)
 
 Shairport Sync does not support AirPlay video or photo streaming.
 
 %prep
 %setup -q
 
+# Create a sysusers.d config file
+cat >shairport-sync.sysusers.conf <<EOF
+u shairport-sync - '%{name} User' %{_sharedstatedir}/%{name} -
+m shairport-sync audio
+EOF
+
 %build
 autoreconf -i -f
 %configure --sysconfdir=/etc --with-alsa --with-pipe --with-dummy \
            --with-stdout --with-pa --with-pq --with-metadata \
            --with-soxr --with-avahi --with-systemd --with-ssl=openssl \
            --with-create-user-group=false
 
 %make_build
 
 %install
 %make_install
 rm %{buildroot}/etc/shairport-sync.conf.sample
 mkdir -p %{buildroot}/%{_sharedstatedir}/%{name}
 
-%pre
-getent group %{name} >/dev/null || groupadd --system %{name}
-getent passwd %{name} > /dev/null || useradd --system -c "%{name} User" \
-        -d %{_sharedstatedir}/%{name} -g %{name} -s /sbin/nologin \
-        -G audio %{name}
+install -m0644 -D shairport-sync.sysusers.conf %{buildroot}%{_sysusersdir}/shairport-sync.conf
+
 
 %post
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
 %postun
@@ -71,18 +74,22 @@ getent passwd %{name} > /dev/null || useradd --system -c "%{name} User" \
 %files
 %config(noreplace) /etc/shairport-sync.conf
 /usr/bin/shairport-sync
 /usr/share/man/man1/shairport-sync.1.gz
 %{_unitdir}/%{name}.service
 %doc README.md RELEASENOTES.md TROUBLESHOOTING.md
 %license LICENSES
 %attr(-, %{name}, %{name}) %{_sharedstatedir}/%{name}
+%{_sysusersdir}/shairport-sync.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.3.5-2
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.3.5-1
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Dec 19 2024 Bill Peck <bpeck@redhat.com> - 4.3.5-0
 - New Upstream release
 
 * Wed Sep 04 2024 Miroslav Suchý <msuchy@redhat.com> - 4.3.3-2
 - convert license to SPDX
diff --git shellinabox/shellinabox.spec shellinabox/shellinabox.spec.tmp
index e66ebd6158..6b0041fd54 100644
--- shellinabox/shellinabox.spec
+++ shellinabox/shellinabox.spec.tmp
@@ -1,13 +1,13 @@
 %global username shellinabox
 
 Name:           shellinabox
 Version:        2.20
-Release:        25%{?dist}
+Release:        26%{?dist}
 Summary:        Web based AJAX terminal emulator
 # Automatically converted from old format: GPLv2 - review is highly recommended.
 License:        GPL-2.0-only
 URL:            https://github.com/%{name}/%{name}
 
 Source0:        https://github.com/%{name}/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
 Source1:        shellinaboxd.sysconfig
 Source2:        shellinaboxd.service
@@ -20,17 +20,16 @@ Patch2: shellinabox-configure-c99.patch
 BuildRequires: make
 BuildRequires:  autoconf
 BuildRequires:  automake
 BuildRequires:  libtool
 BuildRequires:  openssl-devel
 BuildRequires:  zlib-devel
 
 Requires:       openssl
-Requires(pre):  shadow-utils
 
 %if 0%{?fedora} || 0%{?rhel} >= 7
 BuildRequires:      systemd
 Requires(post):     systemd
 Requires(preun):    systemd
 Requires(postun):   systemd
 %endif
 
@@ -48,16 +47,21 @@ JavaScript and CSS enabled web browser and does not require any additional
 browser plugins.
 
 %prep
 %setup -q
 %patch -P0 -p1
 %patch -P1 -p1
 %patch -P2 -p1
 
+# Create a sysusers.d config file
+cat >shellinabox.sysusers.conf <<EOF
+u shellinabox - 'Shellinabox' %{_sharedstatedir}/shellinabox -
+EOF
+
 %build
 autoreconf -vif
 %configure --disable-runtime-loading
 make %{?_smp_mflags}
 chmod 644 %{name}/*
 
 %install
 mkdir -p %{buildroot}%{_datadir}/%{name}
@@ -77,22 +81,19 @@ install -p -m 644 -D %{SOURCE2} %{buildroot}%{_unitdir}/shellinaboxd.service
 
 %else
 
 # Initscripts
 install -p -m 755 -D %{SOURCE3} %{buildroot}%{_initrddir}/shellinaboxd
 
 %endif
 
+install -m0644 -D shellinabox.sysusers.conf %{buildroot}%{_sysusersdir}/shellinabox.conf
+
 %pre
-getent group %username >/dev/null || groupadd -r %username &>/dev/null || :
-getent passwd %username >/dev/null || useradd -r -s /sbin/nologin \
-    -d %{_sharedstatedir}/shellinabox -M -c 'Shellinabox' -g %username %username &>/dev/null || :
-exit 0
-
 %if 0%{?fedora} || 0%{?rhel} >= 7
 
 %post
 %systemd_post shellinaboxd.service
 
 %preun
 %systemd_preun shellinaboxd.service
 
@@ -129,18 +130,22 @@ fi
 %{_datadir}/%{name}
 %{_sbindir}/shellinaboxd
 %if 0%{?fedora} || 0%{?rhel} >= 7
 %{_unitdir}/shellinaboxd.service
 %else
 %{_initrddir}/shellinaboxd
 %endif
 %attr(750,%{username},%{username}) %{_sharedstatedir}/%{name}
+%{_sysusersdir}/shellinabox.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.20-26
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.20-25
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Jul 29 2024 Miroslav Suchý <msuchy@redhat.com> - 2.20-24
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.20-23
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git sigul/sigul.spec sigul/sigul.spec.tmp
index c1fdbd1217..1ca63b3997 100644
--- sigul/sigul.spec
+++ sigul/sigul.spec.tmp
@@ -1,13 +1,13 @@
 Summary: A signing server and related software client
 Name: sigul
 
 Version: 1.2
-Release: 6%{?dist}
+Release: 7%{?dist}
 # Automatically converted from old format: GPLv2 - review is highly recommended.
 License: GPL-2.0-only
 
 URL: https://pagure.io/sigul/
 Source0: https://pagure.io/sigul/archive/v%{version}/sigul-v%{version}.tar.gz
 Source1: sigul_bridge.service
 Source2: sigul_server.service
 Source3: sigul.logrotate
@@ -28,17 +28,16 @@ BuildRequires: rpm-sign python3-urlgrabber git
 BuildRequires: python3-sqlalchemy
 BuildRequires: systemd-rpm-macros autoconf automake
 BuildRequires: python3-cryptography
 
 Requires: logrotate
 Requires: koji
 # For sigul_setup_client
 Requires: coreutils nss-tools
-Requires(pre): shadow-utils
 BuildRequires:  gcc
 # To detect the path correctly in configure
 BuildRequires: gnupg
 # To run the test suite
 BuildRequires: systemd
 BuildRequires: ostree
 BuildRequires: ostree-devel
 BuildRequires: skopeo
@@ -92,16 +91,21 @@ Requires(postun): systemd
 
 %description bridge
 The bridge part of sigul that facilitates connection between the client and server.
 
 
 %prep
 %autosetup -p1 -n sigul-v%{version}
 
+# Create a sysusers.d config file
+cat >sigul.sysusers.conf <<EOF
+u sigul - 'Signing server or bridge' %{_localstatedir}/lib/sigul -
+EOF
+
 %build
 autoreconf -i
 %configure
 make %{?_smp_mflags}
 
 %check
 exit 0
 %if 0%{?fedora}
@@ -117,22 +121,18 @@ exit 0
 
 %install
 make DESTDIR=$RPM_BUILD_ROOT INSTALL='install -p' install
 mkdir -p $RPM_BUILD_ROOT%{_unitdir} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
 install -m 0644 -p %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir}/sigul_bridge.service
 install -m 0644 -p %{SOURCE2} $RPM_BUILD_ROOT%{_unitdir}/sigul_server.service
 install -m 0644 -p %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/sigul
 
-%pre
-getent group sigul >/dev/null || groupadd -r sigul
-getent passwd sigul >/dev/null || \
-useradd -r -g sigul -d %{_localstatedir}/lib/sigul -s /sbin/nologin \
-        -c "Signing server or bridge" sigul
-exit 0
+install -m0644 -D sigul.sysusers.conf %{buildroot}%{_sysusersdir}/sigul.conf
+
 
 %post bridge
 %systemd_post sigul_bridge.service
 
 %post server
 %systemd_post sigul_server.service
 
 %preun bridge
@@ -165,16 +165,17 @@ exit 0
 %{_datadir}/sigul/settings.py*
 %{_datadir}/sigul/utils.py*
 %{_datadir}/sigul/__pycache__/bind_methods.*
 %{_datadir}/sigul/__pycache__/client.*
 %{_datadir}/sigul/__pycache__/double_tls.*
 %{_datadir}/sigul/__pycache__/errors.*
 %{_datadir}/sigul/__pycache__/settings.*
 %{_datadir}/sigul/__pycache__/utils.*
+%{_sysusersdir}/sigul.conf
 
 %files bridge
 %config(noreplace) %attr(640,root,sigul) %{_sysconfdir}/sigul/bridge.conf
 %{_unitdir}/sigul_bridge.service
 %{_sbindir}/sigul_bridge
 %{_datadir}/sigul/bridge*
 %{_datadir}/sigul/__pycache__/bridge.*
 
@@ -187,16 +188,19 @@ exit 0
 %{_sbindir}/sigul_server_create_db
 %dir %attr(700,sigul,sigul) %{_localstatedir}/lib/sigul
 %dir %attr(700,sigul,sigul) %{_localstatedir}/lib/sigul/gnupg
 %{_datadir}/sigul/server*
 %{_datadir}/sigul/__pycache__/server*
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.2-7
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Jul 29 2024 Miroslav Suchý <msuchy@redhat.com> - 1.2-5
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git slrn/slrn.spec slrn/slrn.spec.tmp
index 38e1c5bcb4..475914439f 100644
--- slrn/slrn.spec
+++ slrn/slrn.spec.tmp
@@ -1,12 +1,12 @@
 Summary: A threaded Internet news reader
 Name: slrn
 Version: 1.0.3a
-Release: 18%{?dist}
+Release: 19%{?dist}
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License: GPL-2.0-or-later
 URL: http://slrn.sourceforge.net/
 Source0: http://jedsoft.org/releases/%{name}/%{name}-%{version}.tar.bz2
 Source1: slrn-pull-expire
 Source2: slrnpull.log
 Source4: README.rpm-slrnpull
 Source5: http://jedsoft.org/releases/%{name}/%{name}-%{version}.tar.bz2.asc
@@ -23,17 +23,16 @@ Patch3: fix-FSF-address.patch
 Patch4: slrn-configure-c99.patch
 # Patch4: slrn-dont-limit-signatures.patch
 BuildRequires: make
 BuildRequires: inews
 BuildRequires: openssl-devel, gcc
 BuildRequires: slang-devel >= 2.2.3
 # Some s-lang scripts (smime.sl) use slsh interpreter
 Requires:      slang-slsh
-Requires(pre): shadow-utils
 # For source verification with gpgv
 BuildRequires:  gnupg2
 
 %description
 SLRN is a threaded Internet news reader. SLRN is highly customizable
 and allows users to design complex filters for sorting or killing news
 articles. SLRN works well over slow network lines. A helper utility
 for reading news offline is provided in the slrn-pull package.
@@ -60,16 +59,22 @@ gpgv2 --quiet --keyring %{SOURCE6} %{SOURCE5} %{SOURCE0}
 #%#patch4 -p1 -b .longsignatures
 
 for i in changes.txt; do
   iconv -f iso8859-1 -t utf8 -o ${i}{_,} && touch -r ${i}{,_} && mv -f ${i}{_,}
 done
 
 chmod 644 doc/slrnpull/* contrib/*
 
+# Create a sysusers.d config file
+cat >slrn.sysusers.conf <<EOF
+g news 13
+u news 9 'news user' / -
+EOF
+
 %build
 %configure \
     --with-ssl=%{_prefix} \
     --without-nss-compat \
     --with-slrnpull=%{_var}/spool/slrnpull \
     --without-x \
     --enable-charmap \
     --enable-emph-text \
@@ -96,43 +101,44 @@ install -p -m644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/slrn-pull
 install -p -m644 %{SOURCE4} doc/slrnpull/README.rpm
 
 %find_lang %{name}
 
 # remove unpackaged files from the buildroot
 rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/slrn
 
 # Static UID and GID defined by /usr/share/doc/setup-*/uidgid
-%pre
-getent group news >/dev/null || groupadd -r -g 13 news
-getent passwd news >/dev/null || \
-  useradd -r -u 9 -g news -d / -s /sbin/nologin -c "news user" news
-exit 0
+
+install -m0644 -D slrn.sysusers.conf %{buildroot}%{_sysusersdir}/slrn.conf
 
 %files -f %{name}.lang
 %license COPYING COPYRIGHT
 %doc changes.txt NEWS README
 %doc doc/FAQ doc/FIRST_STEPS doc/README.* doc/THANKS doc/*.txt doc/slrn*.html
 %doc doc/score.sl contrib
 %config(noreplace) %{_sysconfdir}/slrn.rc
 %{_bindir}/slrn
 %{_datadir}/slrn
 %{_mandir}/man1/slrn.1*
+%{_sysusersdir}/slrn.conf
 
 %files pull
 %doc doc/slrnpull/*
 %config(noreplace) %{_sysconfdir}/cron.daily/slrn-pull-expire
 %config(noreplace) %{_sysconfdir}/logrotate.d/slrn-pull
 %{_bindir}/slrnpull
 %attr(775,news,news) %dir %{_var}/spool/slrnpull
 %attr(3777,news,news) %dir %{_var}/spool/slrnpull/out.going
 %attr(644,news,news) %config(noreplace) %{_var}/spool/slrnpull/slrnpull.conf
 %{_mandir}/man1/slrnpull.1*
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.0.3a-19
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.3a-18
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 1.0.3a-17
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.3a-16
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git softhsm/softhsm.spec softhsm/softhsm.spec.tmp
index 0c3497a4cc..16ded3622b 100644
--- softhsm/softhsm.spec
+++ softhsm/softhsm.spec.tmp
@@ -1,15 +1,15 @@
 #global prever rc1
 #global prerelease yes
 
 Summary: Software version of a PKCS#11 Hardware Security Module
 Name: softhsm
 Version: 2.6.1
-Release: %{?prever:0.}10%{?prever:.%{prever}}%{?dist}.2
+Release: %{?prever:0.}10%{?prever:.%{prever}}%{?dist}.3
 License: BSD-2-clause
 Url: http://www.opendnssec.org/
 Source: http://dist.opendnssec.org/source/%{?prever:testing/}%{name}-%{version}.tar.gz
 Source1: http://dist.opendnssec.org/source/%{?prever:testing/}%{name}-%{version}.tar.gz.sig
 
 Patch1: softhsm-2.6.1-rh1831086-exit.patch
 Patch2: softhsm-openssl3-tests.patch
 # based on https://github.com/opendnssec/SoftHSMv2/commit/f94aaffc879ade97a51b8e1308af42f86be1885f
@@ -19,17 +19,16 @@ Patch3: softhsm-2.6.1-uninitialized.patch
 Patch4: softhsm-prevent-global-deleted-objects-access.patch
 # fix for https://fedoraproject.org/wiki/Changes/OpensslDeprecateEngine
 Patch5: softhsm-disable-usage-of-openssl-engines.patch
 
 BuildRequires: make
 BuildRequires: openssl-devel >= 1.0.1k-6, sqlite-devel >= 3.4.2, cppunit-devel
 BuildRequires: gcc-c++, pkgconfig, p11-kit-devel
 
-Requires(pre): shadow-utils
 Requires: p11-kit
 Requires: openssl-libs >= 1.0.1k-6
 
 %global _hardened_build 1
 
 %global softhsm_module "SoftHSM PKCS #11 Module"
 
 %description
@@ -61,16 +60,21 @@ The devel package contains the libsofthsm include files
    sed -i 's:^full_libdir=":#full_libdir=":g' configure.ac
    sed -i "s:libdir)/@PACKAGE@:libdir):" Makefile.in
 autoreconf -fiv
 %else
    # remove softhsm/ subdir auto-added to --libdir
    sed -i 's:full_libdir/softhsm:full_libdir:g' configure
 %endif
 
+# Create a sysusers.d config file
+cat >softhsm.sysusers.conf <<EOF
+u ods - 'softhsm private keys owner' %{_sharedstatedir}/softhsm -
+EOF
+
 %build
 # This package fails its testsuite with LTO enabled and needs further
 # investigation
 %define _lto_cflags %{nil}
 
 %configure --libdir=%{_libdir}/pkcs11 --with-openssl=%{_prefix} --enable-ecc --enable-eddsa --disable-gost \
            --with-migrate --enable-visibility --with-p11-kit=%{_datadir}/p11-kit/modules/
 
@@ -103,48 +107,48 @@ mkdir -p %{buildroot}/%{_sharedstatedir}/softhsm/tokens
 
 # leave a softlink where softhsm-1 installed its library. Programs like
 # opendnssec have that filename in their configuration file.
 mkdir -p %{buildroot}/%{_libdir}/softhsm/
 ln -s ../pkcs11/libsofthsm2.so %{buildroot}/%{_libdir}/softhsm/libsofthsm.so
 # rhbz#1272423 NSS needs it to be in the search path too
 ( cd  %{buildroot}/%{_libdir} ; ln -s pkcs11/libsofthsm2.so)
 
+install -m0644 -D softhsm.sysusers.conf %{buildroot}%{_sysusersdir}/softhsm.conf
+
 %files
 %config(noreplace) %{_sysconfdir}/softhsm2.conf
 %{_bindir}/*
 %dir %{_libdir}/softhsm
 %{_libdir}/pkcs11/libsofthsm2.so
 %{_libdir}/libsofthsm2.so
 %{_libdir}/softhsm/libsofthsm.so
 %attr(0664,root,root) %{_datadir}/p11-kit/modules/softhsm2.module
 %attr(0750,ods,ods) %dir %{_sharedstatedir}/softhsm
 %attr(1770,ods,ods) %dir %{_sharedstatedir}/softhsm/tokens
 %doc LICENSE README.md NEWS
 %{_mandir}/*/*
+%{_sysusersdir}/softhsm.conf
 
 %files devel
 %attr(0755,root,root) %dir %{_includedir}/softhsm
 %{_includedir}/softhsm/*.h
 
-%pre
-getent group ods >/dev/null || groupadd -r ods
-getent passwd ods >/dev/null || \
-    useradd -r -g ods -d %{_sharedstatedir}/softhsm -s /sbin/nologin \
-    -c "softhsm private keys owner" ods
-exit 0
 
 %post
 
 %triggerpostun -- softhsm < 2.0.0
 if [ -f /var/softhsm/slot0.db ]; then
       runuser -g ods ods -c 'softhsm2-migrate --db /var/softhsm/slot0.db --pin 1234 --slot 0' || :
 fi
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.6.1-10.3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-10.2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Sep 25 2024 Alexander Bokovoy <abokovoy@redhat.com> - 2.6.1-10
 - Build without OpenSSL ENGINE support
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-9.1
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git spamass-milter/spamass-milter.spec spamass-milter/spamass-milter.spec.tmp
index bae829b327..24231893b4 100644
--- spamass-milter/spamass-milter.spec
+++ spamass-milter/spamass-milter.spec.tmp
@@ -6,17 +6,17 @@
 %endif
 
 # Do a hardened build where possible
 %global _hardened_build 1
 
 Summary:	Milter (mail filter) for spamassassin
 Name:		spamass-milter
 Version:	0.4.0
-Release:	29%{?dist}
+Release:	30%{?dist}
 License:	GPL-2.0-or-later
 URL:		http://savannah.nongnu.org/projects/spamass-milt/
 Source0:	http://savannah.nongnu.org/download/spamass-milt/spamass-milter-%{version}.tar.gz
 Source1:	spamass-milter.README.Postfix
 Source2:	spamass-milter-tmpfs.conf
 Source3:	spamass-milter-postfix-tmpfs.conf
 # systemd
 Source20:	spamass-milter.service
@@ -39,17 +39,17 @@ BuildRequires:	coreutils
 BuildRequires:	gcc-c++
 BuildRequires:	make
 BuildRequires:	%milter_devel_package
 BuildRequires:	spamassassin
 Requires:	spamassassin, /usr/sbin/sendmail
 # Needed for ownership of %%{_tmpfilesdir}
 Requires:	systemd
 
-Requires(pre): glibc-common, shadow-utils
+Requires(pre): glibc-common
 BuildRequires: systemd
 Requires(post): coreutils, systemd
 Requires(preun): systemd
 Requires(postun): systemd
 
 %description
 A milter (Mail Filter) application that pipes incoming mail (including things
 received by rmail/UUCP) through SpamAssassin, a highly customizable spam
@@ -101,16 +101,21 @@ cp -p %{SOURCE3} spamass-milter-postfix-tmpfs.conf
 %endif
 
 # With systemd, the runtime directory is /run rather than /var/run
 %patch -P 11 -b .rundir
 
 # Copy in systemd files
 cp -p %{SOURCE20} %{SOURCE21} %{SOURCE22} %{SOURCE23} .
 
+# Create a sysusers.d config file
+cat >spamass-milter.sysusers.conf <<EOF
+u sa-milt - 'SpamAssassin Milter' %{_localstatedir}/lib/spamass-milter -
+EOF
+
 %build
 export SENDMAIL=/usr/sbin/sendmail
 %configure
 make %{?_smp_mflags}
 
 %install
 make DESTDIR=%{buildroot} install
 
@@ -132,21 +137,19 @@ install -m 644 spamass-milter-tmpfs.conf \
 	%{buildroot}%{_tmpfilesdir}/spamass-milter.conf
 install -m 644 spamass-milter-postfix-tmpfs.conf \
 	%{buildroot}%{_tmpfilesdir}/spamass-milter-postfix.conf
 
 # Create dummy sockets for %%ghost-ing
 : > %{buildroot}/run/spamass-milter/spamass-milter.sock
 : > %{buildroot}/run/spamass-milter/postfix/sock
 
+install -m0644 -D spamass-milter.sysusers.conf %{buildroot}%{_sysusersdir}/spamass-milter.conf
+
 %pre
-getent group sa-milt >/dev/null || groupadd -r sa-milt
-getent passwd sa-milt >/dev/null || \
-	useradd -r -g sa-milt -d %{_localstatedir}/lib/spamass-milter \
-		-s /sbin/nologin -c "SpamAssassin Milter" sa-milt
 # Fix homedir for upgrades
 usermod --home %{_localstatedir}/lib/spamass-milter sa-milt &>/dev/null
 exit 0
 
 %post
 if [ $1 -eq 1 ]; then
 	# Initial installation
 	systemctl daemon-reload &>/dev/null || :
@@ -183,25 +186,29 @@ usermod -a -G postfix sa-milt || :
 %config(noreplace) %{_sysconfdir}/sysconfig/spamass-milter
 %{_tmpfilesdir}/spamass-milter.conf
 %{_unitdir}/spamass-milter.service
 %{_unitdir}/spamass-milter-root.service
 %{_sbindir}/spamass-milter
 %dir %attr(-,sa-milt,sa-milt) %{_localstatedir}/lib/spamass-milter/
 %dir %attr(-,sa-milt,sa-milt) /run/spamass-milter/
 %ghost %attr(-,sa-milt,sa-milt) /run/spamass-milter/spamass-milter.sock
+%{_sysusersdir}/spamass-milter.conf
 
 %files postfix
 %doc README.Postfix
 %{_tmpfilesdir}/spamass-milter-postfix.conf
 %config(noreplace) %{_sysconfdir}/sysconfig/spamass-milter-postfix
 %dir %attr(-,sa-milt,postfix) /run/spamass-milter/postfix/
 %ghost %attr(-,sa-milt,postfix) /run/spamass-milter/postfix/sock
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.4.0-30
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.0-29
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.0-28
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Sat Jun  8 2024 Frank Crawford <frank@crawford.emu.id.au> - 0.4.0-27
 - Add quarantine option
diff --git spampd/spampd.spec spampd/spampd.spec.tmp
index fb58c0dfef..b020d661ad 100644
--- spampd/spampd.spec
+++ spampd/spampd.spec.tmp
@@ -1,12 +1,12 @@
 Summary: Transparent SMTP/LMTP proxy filter using spamassassin
 Name: spampd
 Version: 2.61
-Release: 11%{?dist}
+Release: 12%{?dist}
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License: GPL-2.0-or-later
 URL: http://www.worlddesign.com/index.cfm/rd/mta/spampd.htm
 Source0: https://github.com/mpaperno/spampd/archive/refs/tags/%{name}-%{version}.tar.gz
 Source1: spampd.service
 Source2: README.systemd
 Source3: spampd.sysconfig
 Patch0:  spampd-2.61-no-pid-file.patch
@@ -14,17 +14,16 @@ Patch0:  spampd-2.61-no-pid-file.patch
 BuildRequires: make
 BuildRequires: perl-generators
 BuildRequires: perl-podlators
 BuildRequires: perl-Pod-Html
 BuildRequires: systemd-units
 
 Requires: perl(Net::Server)
 
-Requires(pre): /usr/sbin/useradd
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 
 BuildArch: noarch
 
 %description
 Spampd is a program used within an e-mail delivery system to scan messages for
@@ -38,16 +37,21 @@ indicating it's spam and why.
 
 %prep
 %setup -q
 %patch -P0 -p1 -b .no-pid-file
 %{__rm} -f spampd.html
 %{__chmod} -x changelog.txt
 %{__cp} %{SOURCE2} .
 
+# Create a sysusers.d config file
+cat >spampd.sysusers.conf <<EOF
+u spampd - - /var/spool/spampd -
+EOF
+
 
 %build
 pod2man spampd.pod spampd.8
 pod2html --infile=spampd.pod --outfile=spampd.html
 
 
 %install
 %{__rm} -rf %{buildroot}
@@ -61,21 +65,20 @@ pod2html --infile=spampd.pod --outfile=spampd.html
 %{__install} -D -p -m 0644 %{SOURCE1} \
     %{buildroot}%{_unitdir}/spampd.service
 # Sysconfig
 %{__install} -D -p -m 0644 %{SOURCE3} \
     %{buildroot}%{_sysconfdir}/sysconfig/spampd
 # Home directory
 %{__mkdir_p} %{buildroot}/var/spool/spampd
 
+install -m0644 -D spampd.sysusers.conf %{buildroot}%{_sysusersdir}/spampd.conf
+
 
 
-%pre
-/usr/sbin/useradd -r -M -s /sbin/nologin -d /var/spool/spampd \
-    spampd &>/dev/null || :
 
 %post
 %systemd_post spampd.service
 
 %preun
 %systemd_preun spampd.service
 
 %postun
@@ -83,19 +86,23 @@ pod2html --infile=spampd.pod --outfile=spampd.html
 
 %files
 %doc changelog.txt spampd.html README.systemd
 %config(noreplace) %{_sysconfdir}/sysconfig/spampd
 %{_unitdir}/spampd.service
 %{_sbindir}/spampd
 %{_mandir}/man8/spampd.8*
 %attr(0750,spampd,spampd) /var/spool/spampd
+%{_sysusersdir}/spampd.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.61-12
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.61-11
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 2.61-10
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.61-9
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git sphinx/sphinx.spec sphinx/sphinx.spec.tmp
index 07fbfbed47..3e398a4e86 100644
--- sphinx/sphinx.spec
+++ sphinx/sphinx.spec.tmp
@@ -15,17 +15,17 @@
 %bcond_with java
 %else
 %bcond_without java
 %endif
 
 
 Name:		sphinx
 Version:	2.2.11
-Release:	32%{?dist}
+Release:	33%{?dist}
 Summary:	Free open-source SQL full-text search engine
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:	GPL-2.0-or-later
 URL:		http://sphinxsearch.com
 
 Source0:	http://sphinxsearch.com/files/%{name}-%{version}-release.tar.gz
 Source1:	searchd.service
 Patch0:		%{name}-2.0.3-fix_static.patch
@@ -40,17 +40,16 @@ BuildRequires:	mariadb-connector-c-devel openssl-devel
 BuildRequires:	libpq-devel
 BuildRequires:	systemd
 
 Requires(post):		systemd
 Requires(preun):	systemd
 Requires(postun):	systemd
 
 # Users and groups
-Requires(pre):		shadow-utils
        
 
 %description
 Sphinx is a full-text search engine, distributed under GPL version 2.
 Commercial licensing (e.g. for embedded use) is also available upon request.
 
 Generally, it's a standalone search engine, meant to provide fast,
 size-efficient and relevant full-text search functions to other
@@ -130,16 +129,22 @@ for f in \
 	api/ruby/spec/%{name}/%{name}_test.sql \
 ; do
 	sed -i 's/\r$//' ${f};
 done
 
 # Fix file not UTF8
 iconv -f iso8859-1 -t utf-8 doc/%{name}.txt > doc/%{name}.txt.conv && mv -f doc/%{name}.txt.conv doc/%{name}.txt
 
+# Create a sysusers.d config file
+cat >sphinx.sysusers.conf <<EOF
+g sphinx -
+u sphinx - 'Sphinx Search' %{sphinx_home} /bin/bash
+EOF
+
 %build
 %if %{__isa_bits} == 64
 %configure --sysconfdir=%{_sysconfdir}/%{name} --with-mysql --with-pgsql --enable-id64
 %else
 %configure --sysconfdir=%{_sysconfdir}/%{name} --with-mysql --with-pgsql
 %endif
 
 make %{?_smp_mflags}
@@ -228,23 +233,19 @@ install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/php
 install -m 0644 api/%{name}api.php $RPM_BUILD_ROOT%{_datadir}/php
 
 # clean-up .la archives
 find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
 
 # clean-up .a archives
 find $RPM_BUILD_ROOT -name '*.a' -exec rm -f {} ';'
 
+install -m0644 -D sphinx.sysusers.conf %{buildroot}%{_sysusersdir}/sphinx.conf
+
 
-%pre
-getent group %{sphinx_group} >/dev/null || groupadd -r %{sphinx_group}
-getent passwd %{sphinx_user} >/dev/null || \
-useradd -r -g %{sphinx_group} -d %{sphinx_home} -s /bin/bash \
--c "Sphinx Search" %{sphinx_user}
-exit 0
 
 %post
 %systemd_post searchd.service
 
 %preun
 %systemd_preun searchd.service
 
 %ldconfig_scriptlets -n libsphinxclient
@@ -277,16 +278,17 @@ chown -R %{sphinx_user}:root %{_localstatedir}/lib/%{name}/
 %{_unitdir}/searchd.service
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
 %{_tmpfilesdir}/%{name}.conf
 %{_bindir}/*
 %dir %attr(0755, %{sphinx_user}, root) %{_localstatedir}/log/%{name}
 %dir %attr(0755, %{sphinx_user}, root) %{_localstatedir}/run/%{name}
 %dir %attr(0755, %{sphinx_user}, root) %{_localstatedir}/lib/%{name}
 %{_mandir}/man1/*
+%{_sysusersdir}/sphinx.conf
 
 %files -n libsphinxclient
 %doc COPYING %{?with_java: api/java} api/ruby api/*.php api/*.py api/libsphinxclient/README
 %{_libdir}/libsphinxclient-0*.so
 
 %files -n libsphinxclient-devel
 %{_libdir}/libsphinxclient.so
 %{_includedir}/*
@@ -297,16 +299,19 @@ chown -R %{sphinx_user}:root %{_localstatedir}/lib/%{name}/
 %{_javadir}/*
 %endif
 
 %files php
 %doc COPYING
 %{_datadir}/php/*
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.2.11-33
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.11-32
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 2.2.11-31
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.11-30
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git sqlgrey/sqlgrey.spec sqlgrey/sqlgrey.spec.tmp
index ef48bf9cdd..40e27d2973 100644
--- sqlgrey/sqlgrey.spec
+++ sqlgrey/sqlgrey.spec.tmp
@@ -1,24 +1,23 @@
 Name:           sqlgrey
 Version:        1.8.0
-Release:        30%{?dist}
+Release:        31%{?dist}
 Summary:        Postfix grey-listing policy service
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:        GPL-2.0-or-later
 URL:            http://sqlgrey.sourceforge.net/
 Source0:        http://dl.sourceforge.net/sqlgrey/sqlgrey-%{version}.tar.gz
 Source1:        sqlgrey.service
 Patch0:         sqlgrey-1.7.4-sqlite.patch
 Patch1:         sqlgrey-1.7.4-warnings.patch
 BuildArch:      noarch
 
 Requires:               postfix
 Requires:               perl(DBD::SQLite)
-Requires(pre): shadow-utils
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 BuildRequires: make
 BuildRequires: systemd
 BuildRequires: perl-generators
 BuildRequires: perl-Pod-Perldoc
 BuildRequires: perl-podlators
@@ -29,28 +28,35 @@ written in Perl with SQL database as storage backend.  Greylisting stops 50
 to 90% of junk mails (spam and virus) before they reach your Postfix server
 (saves BW, user time and CPU time).
 
 %prep
 %setup -q
 %patch -P0 -p1
 %patch -P1 -p1
 
+# Create a sysusers.d config file
+cat >sqlgrey.sysusers.conf <<EOF
+u sqlgrey - 'SQLgrey server' /var/lib/sqlgrey -
+EOF
+
 %build
 make %{?_smp_mflags}
 
 %install
 rm -rf $RPM_BUILD_ROOT
 make rh-install ROOTDIR=$RPM_BUILD_ROOT
 install -D -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir}/sqlgrey.service
 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/init.d/
 mkdir -p -m 755 $RPM_BUILD_ROOT%{_var}/lib
 mkdir -m 750 $RPM_BUILD_ROOT%{_var}/lib/sqlgrey
 touch $RPM_BUILD_ROOT%{_var}/lib/sqlgrey/sqlgrey.db
 
+install -m0644 -D sqlgrey.sysusers.conf %{buildroot}%{_sysusersdir}/sqlgrey.conf
+
 %files
 %doc Changelog CONTRIB COPYING FAQ HOWTO README* TODO
 %{_unitdir}/sqlgrey.service
 %{_sbindir}/sqlgrey
 %{_sbindir}/update_sqlgrey_config
 %{_bindir}/sqlgrey-logstats.pl
 %{_mandir}/man1/sqlgrey.1*
 %attr(-,sqlgrey,sqlgrey) %dir %{_var}/lib/sqlgrey
@@ -58,34 +64,32 @@ touch $RPM_BUILD_ROOT%{_var}/lib/sqlgrey/sqlgrey.db
 %dir %{_sysconfdir}/sqlgrey
 %config(noreplace) %{_sysconfdir}/sqlgrey/sqlgrey.conf
 # Content of these files are changed by sqlgrey itself
 %config(noreplace) %{_sysconfdir}/sqlgrey/clients_ip_whitelist
 %config(noreplace) %{_sysconfdir}/sqlgrey/clients_fqdn_whitelist
 %config(noreplace) %{_sysconfdir}/sqlgrey/*.regexp
 # Warning admins to not touch the above files
 %attr(644,root,root) %config %{_sysconfdir}/sqlgrey/README
+%{_sysusersdir}/sqlgrey.conf
 
-%pre
-getent group sqlgrey >/dev/null || groupadd -r sqlgrey
-getent passwd sqlgrey >/dev/null || \
-    useradd -r -g sqlgrey -d /var/lib/sqlgrey -s /sbin/nologin \
-    -c "SQLgrey server" sqlgrey
-exit 0
 
 %post
 %systemd_post sqlgrey.service
 
 %preun
 %systemd_preun sqlgrey.service
 
 %postun
 %systemd_postun_with_restart sqlgrey.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.8.0-31
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.8.0-30
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 1.8.0-29
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.8.0-28
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git squeezelite/squeezelite.spec squeezelite/squeezelite.spec.tmp
index 5130c85854..6d9b4ba9e9 100644
--- squeezelite/squeezelite.spec
+++ squeezelite/squeezelite.spec.tmp
@@ -41,28 +41,33 @@ BuildRequires:   mpg123-devel
 BuildRequires:   openssl-devel
 BuildRequires:   opus-devel
 BuildRequires:   opusfile-devel
 BuildRequires:   pandoc
 BuildRequires:   pulseaudio-libs-devel
 BuildRequires:   soxr-devel
 BuildRequires:   systemd
 
-Requires(pre):   shadow-utils
 %{?systemd_requires}
 
 
 %description
 Squeezelite is a headless client for Lyrion Music Server, and can be
 used in place of dedicated Squeezebox network music playing hardware.
 
 
 %prep
 %forgesetup
 
+# Create a sysusers.d config file
+cat >squeezelite.sysusers.conf <<EOF
+u squeezelite - 'Squeezelite headless streaming music client' %{_sharedstatedir}/%{name} -
+m squeezelite audio
+EOF
+
 
 %build
 %set_build_flags
 
 export OPTS="-DDSD -DLINKALL -DRESAMPLE -DVISEXPORT -DIR -DGPIO -DRPI -DFFMPEG %{?!with_faad:-DNO_FAAD} -DUSE_LIBOGG -DUSE_SSL -DOPUS"
 %make_build CPPFLAGS+="-I%{_includedir}/ffmpeg" CPPFLAGS+="-I%{_includedir}/ogg" CPPFLAGS+="-I%{_includedir}/opus" EXECUTABLE=%{name}-alsa
 %make_build clean
 
@@ -78,37 +83,33 @@ ln -s %{name}-alsa %{buildroot}/%{_bindir}/%{name}
 install -p -D -t %{buildroot}/%{_bindir} %{name}-pulse
 install -p -D -m 0644 %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service
 install -p -D -m 0644 %{SOURCE2} %{buildroot}/%{_userunitdir}/%{name}.service
 install -p -D -m 0644 %{SOURCE4} %{buildroot}/%{_sysconfdir}/sysconfig/%{name}
 install -p -D -t %{buildroot}/%{_mandir}/man1 -m 0644 doc/%{name}.1
 install -p -D -t %{buildroot}/%{_mandir}/man7 -m 0644 %{name}.service.7
 mkdir -p %{buildroot}/%{_sharedstatedir}/%{name}
 
+install -m0644 -D squeezelite.sysusers.conf %{buildroot}%{_sysusersdir}/squeezelite.conf
+
 
 %files
 %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
 %dir %attr(-,%{name},%{name}) %{_sharedstatedir}/%{name} 
 %doc %{_mandir}/*/*
 %doc README.md
 %license LICENSE.txt
 %{_bindir}/%{name}
 %{_bindir}/%{name}-alsa
 %{_bindir}/%{name}-pulse
 %{_unitdir}/%{name}.service
 %{_userunitdir}/%{name}.service
+%{_sysusersdir}/squeezelite.conf
 
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-    useradd -r -g %{name} -G audio -d %{_sharedstatedir}/%{name} \
-        -s /sbin/nologin -c "Squeezelite headless streaming music client" \
-        %{name}
-exit 0
 
 
 %post
 %systemd_post %{name}.service
 %systemd_user_post %{name}.service
 
 
 %preun
diff --git squid/squid.spec squid/squid.spec.tmp
index 22786ee1d4..0c6183b64c 100644
--- squid/squid.spec
+++ squid/squid.spec.tmp
@@ -1,13 +1,13 @@
 %define __perl_requires %{SOURCE98}
 
 Name:     squid
 Version:  6.12
-Release:  4%{?dist}
+Release:  5%{?dist}
 Summary:  The Squid proxy caching server
 Epoch:    7
 # See CREDITS for breakdown of non GPLv2+ code
 License:  GPL-2.0-or-later AND (LGPL-2.0-or-later AND MIT AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND BSD-4-Clause-UC AND LicenseRef-Fedora-Public-Domain AND Beerware)
 URL:      http://www.squid-cache.org
 
 Source0:  http://www.squid-cache.org/Versions/v6/squid-%{version}.tar.xz
 Source1:  http://www.squid-cache.org/Versions/v6/squid-%{version}.tar.xz.asc
@@ -73,17 +73,16 @@ BuildRequires: pkgconfig(cppunit)
 BuildRequires: gnupg2
 # for _unitdir macro
 # see https://docs.fedoraproject.org/en-US/packaging-guidelines/Systemd/#_packaging
 BuildRequires: systemd-rpm-macros
 # systemd notify
 BuildRequires: systemd-devel
 
 %{?systemd_requires}
-%{?sysusers_requires_compat}
 
 # Old NetworkManager expects the dispatcher scripts in a different place
 Conflicts: NetworkManager < 1.20
 
 %description
 Squid is a high-performance proxy caching server for Web clients,
 supporting FTP and HTTP data objects. Unlike traditional
 caching software, Squid handles all requests in a single,
@@ -249,18 +248,16 @@ install -p -D -m 0644 %{SOURCE9} %{buildroot}%{_sysusersdir}/squid.conf
 %{_bindir}/purge
 %{_mandir}/man8/*
 %{_mandir}/man1/*
 %{_libdir}/squid/*
 %{_datadir}/snmp/mibs/SQUID-MIB.txt
 %{_sysusersdir}/squid.conf
 
 %pre
-%sysusers_create_compat %{SOURCE9}
-
 for i in /var/log/squid /var/spool/squid ; do
         if [ -d $i ] ; then
                 for adir in `find $i -maxdepth 0 \! -user squid`; do
                         chown -R squid:squid $adir
                 done
         fi
 done
 
@@ -310,16 +307,19 @@ end
 if ! getent group wbpriv >/dev/null 2>&1 ; then
   /usr/sbin/groupadd -g 88 wbpriv >/dev/null 2>&1 || :
 fi
 /usr/sbin/usermod -a -G wbpriv squid >/dev/null 2>&1 || \
     chgrp squid /var/cache/samba/winbindd_privileged >/dev/null 2>&1 || :
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 7:6.12-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 7:6.12-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Nov 01 2024 Luboš Uhliarik <luhliari@redhat.com> - 7:6.12-3
 - better error handling in cache_swap.sh
 - added RuntimeDirectory to systemd service file
 
 * Fri Nov 01 2024 Luboš Uhliarik <luhliari@redhat.com> - 7:6.12-2
diff --git sslh/sslh.spec sslh/sslh.spec.tmp
index d989ebd05a..59aeb011c4 100644
--- sslh/sslh.spec
+++ sslh/sslh.spec.tmp
@@ -4,17 +4,17 @@
 %global gh_project   sslh
 #%global with_tests   %{?_without_tests:0}%{!?_without_tests:1}
 # disable tests until perl-conf-libconfig is in Fedora
 %global with_tests   0
 %define _default_patch_fuzz 3
 
 Name:    sslh
 Version: 1.21c
-Release: 11%{?dist}
+Release: 12%{?dist}
 Summary: Applicative protocol(SSL/SSH) multiplexer
 # Automatically converted from old format: GPLv2 - review is highly recommended.
 License: GPL-2.0-only
 URL:     https://github.com/%{gh_owner}/%{gh_project}
 Source0: https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{gh_project}-%{version}-%{gh_short}.tar.gz
 
 # Make the systemd unit a little nicer for Fedora
 Patch0:  00-systemd-tuning.patch
@@ -43,17 +43,16 @@ BuildRequires: psmisc
 
 %if 0%{?fedora} >= 28 || 0%{?rhel} > 7
 %global use_libwrap 0
 %else
 %global use_libwrap 1
 BuildRequires: tcp_wrappers-devel
 %endif
 
-Requires(pre):    shadow-utils
 %{?systemd_requires}
 
 %description
 sslh accepts connections on specified ports, and forwards them further
 based on tests performed on the first data packet sent by the remote
 client.
 
 Probes for HTTP, SSL, SSH, OpenVPN, tinc, XMPP are implemented, and
@@ -64,16 +63,21 @@ which almost never block port 443) while still serving HTTPS on that port.
 
 Hence sslh acts as a protocol multiplexer, or a switchboard. Its name
 comes from its original function to serve SSH and HTTPS on the same port.
 
 
 %prep
 %autosetup -n %{name}-%{gh_commit} -p1
 
+# Create a sysusers.d config file
+cat >sslh.sysusers.conf <<EOF
+u sslh - 'SSLH daemon' /dev/null -
+EOF
+
 %build
 ./genver.sh >version.h
 %if 0%{?rhel}
 export CFLAGS="${CFLAGS} -std=gnu99"
 %endif
 %if %{use_libwrap}
   make %{?_smp_mflags} USELIBWRAP=1 USELIBCAP=1 USESYSTEMD=1 sslh echosrv
 %else
@@ -109,30 +113,26 @@ Before=sslh.service
 
 [Socket]
 FreeBind=true
 
 [Install]
 WantedBy=sockets.target
 EOF
 
+install -m0644 -D sslh.sysusers.conf %{buildroot}%{_sysusersdir}/sslh.conf
+
 %check
 %if %{with_tests}
 # Use right ip6 localhost for Fedora
 sed -i 's/ip6-localhost/localhost6/g' t
 # Build the binaries with gcc coverage enabled
 make test
 %endif
 
-%pre
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || \
-    useradd -r -g %{name} -d /dev/null -s /sbin/nologin \
-    -c "SSLH daemon" %{name}
-exit 0
 
 %post
 %systemd_post sslh.service
 
 %preun
 %systemd_preun sslh.service
 
 %postun
@@ -143,21 +143,25 @@ exit 0
 %license COPYING
 %doc %{_mandir}/man8/%{name}.8*
 %attr(0755,root,root) %{_sbindir}/%{name}
 %attr(0755,root,root) %{_sbindir}/%{name}-select
 %{_unitdir}/%{name}.service
 %{_unitdir}/%{name}.socket
 %config(noreplace) %attr(0644,root,root) %{_sysconfdir}/%{name}.cfg
 %config(noreplace) %attr(0644,root,root) %{_sysconfdir}/sysconfig/%{name}
+%{_sysusersdir}/sslh.conf
 
 
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.21c-12
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.21c-11
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Jul 29 2024 Miroslav Suchý <msuchy@redhat.com> - 1.21c-10
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.21c-9
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git sstp-client/sstp-client.spec sstp-client/sstp-client.spec.tmp
index 57b495c85c..bbde2c9b02 100644
--- sstp-client/sstp-client.spec
+++ sstp-client/sstp-client.spec.tmp
@@ -1,16 +1,16 @@
 %global _hardened_build 1
 %global __provides_exclude ^sstp-pppd-plugin\\.so$
 %global ppp_version %(pkg-config --modversion pppd 2>/dev/null || echo bad)
 %global commonname sstpc
 
 Name:           sstp-client
 Version:        1.0.18
-Release:        9%{?dist}
+Release:        10%{?dist}
 Summary:        Secure Socket Tunneling Protocol(SSTP) Client
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:        GPL-2.0-or-later
 Url:            https://gitlab.com/eivnaes/sstp-client
 Source0:        https://gitlab.com/eivnaes/%{name}/-/releases/%{version}/downloads/dist-gzip/%{name}-%{version}.tar.gz
 Patch0:         0001-pppd-plugin-workaround-broken-pppd.h-header-for-memc.patch
 Patch1:         0001-Adding-support-for-compiling-against-pppd-version-2..patch
 BuildRequires:  make
@@ -18,17 +18,16 @@ BuildRequires:  gcc
 BuildRequires:  libevent-devel
 BuildRequires:  openssl-devel
 BuildRequires:  ppp
 BuildRequires:  pkgconfig
 BuildRequires:  ppp-devel >= 2.5.0
 # ppp 2.5.0 patches require autoreconf, drop this when a new version
 # is released and those patches are dropped
 BuildRequires:  autoconf automake libtool
-Requires(pre):  shadow-utils
 # PPP bumps location of the libraries with every new release.
 Requires:       ppp = %{ppp_version}
 
 Recommends:     (NetworkManager-sstp if NetworkManager)
 Recommends:     (NetworkManager-sstp-gnome if (NetworkManager-sstp and gnome-shell))
 
 %description
 This is a client for the Secure Socket Tunneling Protocol (SSTP). It can be 
@@ -50,16 +49,21 @@ Requires:       ppp-devel%{?_isa} = %{ppp_version}
 
 %description    devel
 This package contains libraries and header files for
 developing applications that use %{name}.
 
 %prep
 %autosetup -p1
 
+# Create a sysusers.d config file
+cat >sstp-client.sysusers.conf <<EOF
+u sstpc - 'Secure Socket Tunneling Protocol(SSTP) Client' %{_localstatedir}/run/%{commonname} -
+EOF
+
 %build
 # for ppp 2.5.0 patches
 autoreconf -fi
 %configure --disable-static                                          \
            --disable-silent-rules                                    \
            --with-libevent=2                                         \
            --with-pppd-plugin-dir="%{_libdir}/pppd/%{ppp_version}"   \
            --with-runtime-dir="%{_localstatedir}/run/%{commonname}"  \
@@ -73,49 +77,47 @@ sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
 %install
 %make_install
 
 # Use %%doc to handle documentation.
 rm -frv %{buildroot}%{_docdir}
 
 find %{buildroot} -name '*.la' -delete -print
 
+install -m0644 -D sstp-client.sysusers.conf %{buildroot}%{_sysusersdir}/sstp-client.conf
+
 %check
 make check
 
 %pre
-getent group %{commonname} >/dev/null || groupadd -r %{commonname}
-getent passwd %{commonname} >/dev/null || \
-    useradd -r -g %{commonname} \
-    -d %{_localstatedir}/run/%{commonname} \
-    -s /sbin/nologin \
-    -c "Secure Socket Tunneling Protocol(SSTP) Client" %{commonname}
-exit 0
-
 %ldconfig_post
 
 %postun
 %{?ldconfig}
 rm -rf %{_localstatedir}/run/%{commonname}
 
 %files
 %doc AUTHORS README ChangeLog TODO USING DEVELOPERS *.example
 %license COPYING
 %{_sbindir}/sstpc
 %{_libdir}/libsstp_api-0.so
 %{_libdir}/pppd/%{ppp_version}/sstp-pppd-plugin.so
 %{_mandir}/man8/sstpc.8*
+%{_sysusersdir}/sstp-client.conf
 
 %files devel
 %doc DEVELOPERS
 %{_includedir}/sstp-client/
 %{_libdir}/libsstp_api.so
 %{_libdir}/pkgconfig/sstp-client-1.0.pc
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.0.18-10
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.18-9
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Nov 27 2024 Adam Williamson <awilliam@redhat.com> - 1.0.18-8
 - Rebuild for ppp 2.5.1
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 1.0.18-7
 - convert license to SPDX
diff --git statsd/statsd.spec statsd/statsd.spec.tmp
index c308becdb1..4c3223ad26 100644
--- statsd/statsd.spec
+++ statsd/statsd.spec.tmp
@@ -1,16 +1,16 @@
 # filter provides and requires from examples directory RHBZ#1263969
 %{?perl_default_filter}
 
 %global enable_tests 0
 
 Name:       statsd
 Version:    0.8.6
-Release:    11%{?dist}
+Release:    12%{?dist}
 Summary:    A simple, lightweight network daemon to collect metrics over UDP
 License:    MIT
 URL:        https://github.com/statsd/statsd
 Source0:    %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
 Source1:    statsd.service
 
 BuildArch:      noarch
 ExclusiveArch:  %{nodejs_arches} noarch
@@ -20,17 +20,16 @@ BuildRequires:  nodejs-packaging
 BuildRequires:  perl-generators
 
 %if 0%{?enable_tests}
 BuildRequires:  npm(temp)
 BuildRequires:  nodeunit
 BuildRequires:  npm(underscore)
 %endif
 
-Requires(pre):  shadow-utils
 
 BuildRequires:      systemd
 Requires(post):     systemd
 Requires(preun):    systemd
 Requires(postun):   systemd
 
 
 %description
@@ -46,16 +45,21 @@ more pluggable backend services (e.g., Graphite).
 
 # fix end of line encodings
 /usr/bin/dos2unix examples/go/statsd.go
 /usr/bin/dos2unix examples/csharp_example.cs
 
 # set Graphitehost to localhost in default config
 sed -i 's/graphite\.example\.com/localhost/' exampleConfig.js
 
+# Create a sysusers.d config file
+cat >statsd.sysusers.conf <<EOF
+u statsd - 'statsd daemon user' / -
+EOF
+
 
 %build
 #nothing to do
 
 
 %install
 %{__mkdir_p} %{buildroot}%{nodejs_sitelib}/%{name}
 cp -pr package.json proxy.js stats.js utils %{buildroot}%{nodejs_sitelib}/%{name}
@@ -66,30 +70,26 @@ ln -s %{nodejs_sitelib}/%{name}/bin/%{name} %{buildroot}%{_bindir}/%{name}
 
 %{__mkdir_p} %{buildroot}%{_sysconfdir}/%{name}
 cp -pr exampleConfig.js %{buildroot}%{_sysconfdir}/%{name}/config.js
 
 %{__install} -Dp -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
 
 %nodejs_symlink_deps
 
+install -m0644 -D statsd.sysusers.conf %{buildroot}%{_sysusersdir}/statsd.conf
+
 
 %if 0%{?enable_tests}
 %check
 %nodejs_symlink_deps --check
 ./run_tests.sh
 %endif
 
 
-%pre
-getent group statsd >/dev/null || groupadd -r statsd
-getent passwd statsd >/dev/null || \
-    useradd -r -g statsd -d / -s /sbin/nologin \
-    -c "statsd daemon user" statsd
-exit 0
 
 
 %post
 %systemd_post %{name}.service
 
 
 %preun
 %systemd_preun %{name}.service
@@ -103,19 +103,23 @@ exit 0
 %doc README.md CONTRIBUTING.md Changelog.md exampleConfig.js exampleProxyConfig.js docs/ examples/
 %license LICENSE
 %{nodejs_sitelib}/%{name}
 %{_bindir}/statsd
 %{_sysconfdir}/%{name}
 %config(noreplace) %{_sysconfdir}/%{name}/config.js
 
 %{_unitdir}/%{name}.service
+%{_sysusersdir}/statsd.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.8.6-12
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.6-11
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.6-10
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.6-9
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git suricata/suricata.spec suricata/suricata.spec.tmp
index b2449d2a17..bbaa902037 100644
--- suricata/suricata.spec
+++ suricata/suricata.spec.tmp
@@ -1,12 +1,12 @@
 Summary: Intrusion Detection System
 Name: suricata
 Version: 7.0.8
-Release: 2%{?dist}
+Release: 3%{?dist}
 License: GPL-2.0-only
 URL: https://suricata-ids.org/
 Source0: https://www.openinfosecfoundation.org/download/%{name}-%{version}.tar.gz
 Source1: suricata.sysconfig
 Source2: fedora.notes
 Source3: suricata-tmpfiles.conf
 
 # Irrelevant docs are getting installed, drop them
@@ -46,17 +46,16 @@ BuildRequires: pkgconfig(gnutls)
 
 %if 0%{?fedora} >= 25 || 0%{?epel} >= 8
 %ifarch x86_64
 BuildRequires: hyperscan-devel
 %endif
 %endif
 
 Requires: python3-pyyaml
-Requires(pre): /usr/sbin/useradd
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 
 # Rust is not working on ppc64le systems (bz 1757548)
 # Or i686 (bz 2047425)
 ExcludeArch: ppc64le i686
 
@@ -80,16 +79,21 @@ install -m 644 %{SOURCE2} doc/
 %patch -P5 -p1
 sed -i 's/(datadir)/(sysconfdir)/' etc/Makefile.am
 %ifarch x86_64
 sed -i 's/-D__KERNEL__/-D__KERNEL__ -D__x86_64__/' ebpf/Makefile.am
 %endif
 find rust/ -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+'
 autoreconf -fv --install
 
+# Create a sysusers.d config file
+cat >suricata.sysusers.conf <<EOF
+u suricata - - None -
+EOF
+
 %build
 #  ensure standard Rust compiler flags are set
 export RUSTFLAGS="%build_rustflags"
 
 %configure --enable-gccprotect --enable-pie --disable-gccmarch-native \
         --disable-coccinelle --enable-nfqueue --enable-af-packet \
         --with-libnspr-includes=/usr/include/nspr4 \
         --with-libnss-includes=/usr/include/nss3 \
@@ -136,21 +140,21 @@ mkdir -p %{buildroot}/%{_var}/lib/%{name}
 # Setup tmpdirs
 mkdir -p %{buildroot}%{_tmpfilesdir}
 install -m 0644 %{SOURCE3} %{buildroot}%{_tmpfilesdir}/%{name}.conf
 mkdir -p %{buildroot}/run
 install -d -m 0755 %{buildroot}/run/%{name}/
 
 cp suricata-update/README.rst doc/suricata-update-README.rst
 
+install -m0644 -D suricata.sysusers.conf %{buildroot}%{_sysusersdir}/suricata.conf
+
 %check
 make check
 
-%pre
-getent passwd suricata >/dev/null || useradd -r -M -s /sbin/nologin suricata
 
 %post
 %systemd_post suricata.service
 if [ -d %{_var}/log/%{name} ] ; then
 	file=$(ls %{_var}/log/%{name}/* 2> /dev/null | wc -l)
 	if [ -n "$files" ] && [ "$files" != "0" ] ; then
 		chown -R suricata:suricata %{_var}/log/%{name}/ 2> /dev/null || :
 	fi
@@ -183,18 +187,22 @@ fi
 %config(noreplace) %attr(644,root,root) %{_sysconfdir}/logrotate.d/%{name}
 %attr(750,suricata,suricata) %dir %{_var}/log/%{name}
 %attr(750,suricata,suricata) %dir %{_sysconfdir}/%{name}
 %attr(750,suricata,suricata) %dir %{_sysconfdir}/%{name}/rules
 %attr(2770,suricata,suricata) %dir %{_var}/lib/%{name}
 %attr(2770,suricata,suricata) %dir /run/%{name}/
 %{_tmpfilesdir}/%{name}.conf
 %{_datadir}/%{name}/rules
+%{_sysusersdir}/suricata.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 7.0.8-3
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.8-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jan 03 2025 Steve Grubb <sgrubb@redhat.com> 7.0.8-1
 - New security and bugfix release
 
 * Tue Oct 22 2024 Richard W.M. Jones <rjones@redhat.com> - 7.0.7-2
 - Rebuild for Jansson 2.14
diff --git svxlink/svxlink.spec svxlink/svxlink.spec.tmp
index f94cee1bc2..59b6b7771d 100644
--- svxlink/svxlink.spec
+++ svxlink/svxlink.spec.tmp
@@ -5,17 +5,17 @@
 %define echolib_version 1.3.4
 %define qtel_version 1.2.5
 %define server_version 1.8.0
 %define reflector_version 1.2.0
 
 Name:		svxlink
 Epoch:		2
 Version:	%{main_version}
-Release:	4%{?dist}
+Release:	5%{?dist}
 Summary:	Repeater controller and EchoLink (simplex or repeater)
 
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:	GPL-2.0-or-later
 URL:		http://www.svxlink.org
 Source0:	https://github.com/sm0svx/svxlink/archive/%{version}/%{name}-%{version}.tar.gz
 Source1:	https://github.com/sm0svx/svxlink-sounds-en_US-heather/releases/download/%{version}/svxlink-sounds-en_US-heather-16k-%{version}.tar.bz2
 
@@ -148,16 +148,24 @@ The SvxReflector application is meant to be used as a center point
 to link SvxLink nodes together. The new SvxLink ReflectorLogic logic core is
 used to connect a SvxLink node to the reflector server. One or more logics can
 then be connected to the reflector using normal logic linking.
 
 %prep
 %setup -q -n %{name}-%{main_version}
 %setup -q -D -T -a 1 -n %{name}-%{main_version}
 
+# Create a sysusers.d config file
+cat >svxlink.sysusers.conf <<EOF
+g daemon -
+u svxlink - 'SvxLink Daemon ' / -
+m svxlink audio
+m svxlink dialout
+EOF
+
 %build
 %cmake -DLOCAL_STATE_DIR=%{_localstatedir} -DWITH_SYSTEMD=1 \
 	-DSYSTEMD_CONFIGURATIONS_FILES_DIR=%{_unitdir} \
 	-DSYSTEMD_DEFAULTS_FILES_DIR=%{_sysconfdir}/sysconfig src
 make %{?_smp_mflags} all doc
 doxygen doc/doxygen.async
 doxygen doc/doxygen.echolib
 
@@ -191,28 +199,23 @@ cp distributions/fedora/%{_sysconfdir}/logrotate.d/remotetrx %{buildroot}%{_sysc
 rm %{buildroot}%{_docdir}/svxlink/man1/*html*
 rm %{buildroot}%{_docdir}/svxlink/man5/*html*
 
 # Remove static linked files
 find %{buildroot} -name '*.a' -exec rm -f {} ';'
 
 sed -i -e "s@EnvironmentFile=/etc/default@EnvironmentFile=/etc/sysconfig@g" %{buildroot}%{_unitdir}/*.service
 
+install -m0644 -D svxlink.sysusers.conf %{buildroot}%{_sysusersdir}/svxlink.conf
+
 %ldconfig_scriptlets -n libasync
 
 %ldconfig_scriptlets -n echolib
 
 
-%pre -n svxlink-server
-getent group daemon >/dev/null || groupadd -r daemon
-getent passwd svxlink >/dev/null || \
-useradd -r -g daemon -d / -s /sbin/nologin \
--c "SvxLink Daemon " svxlink
-/usr/sbin/usermod -a -G audio,dialout svxlink >/dev/null 2>&1 || :
-exit 0
 
 %pre -n svxlink-reflector
 getent group daemon >/dev/null || groupadd -r daemon
 getent passwd svxlink >/dev/null || \
 useradd -r -g daemon -d / -s /sbin/nologin \
 -c "SvxLink Daemon " svxlink
 /usr/sbin/usermod -a -G audio,dialout svxlink >/dev/null 2>&1 || :
 exit 0
@@ -318,27 +321,31 @@ exit 0
 %{_mandir}/man1/remotetrx.*.*
 %{_mandir}/man1/siglevdetcal.*.*
 %{_mandir}/man5/*
 %attr(755,svxlink,daemon) %dir %{_localstatedir}/spool/svxlink
 %attr(755,svxlink,daemon) %dir %{_localstatedir}/spool/svxlink/propagation_monitor
 %attr(755,svxlink,daemon) %dir %{_localstatedir}/spool/svxlink/qso_recorder
 %attr(755,svxlink,daemon) %dir %{_localstatedir}/spool/svxlink/voice_mail
 %ghost %{_localstatedir}/log/svxlink
+%{_sysusersdir}/svxlink.conf
 
 %files -n svxlink-reflector
 %{_bindir}/svxreflector
 %{_bindir}/svxreflector-status
 %config(noreplace) %{_sysconfdir}/sysconfig/svxreflector
 %config(noreplace) %{_sysconfdir}/%{name}/svxreflector.conf
 %{_mandir}/man1/svxreflector.*
 %{_mandir}/man5/svxreflector.*
 %{_unitdir}/svxreflector.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2:24.02-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2:24.02-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 1:1.2.0-3
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2:24.02-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git sympa/sympa.spec sympa/sympa.spec.tmp
index 4b14c96a48..682acb3d68 100644
--- sympa/sympa.spec
+++ sympa/sympa.spec.tmp
@@ -78,17 +78,17 @@
 %endif
 
 %global static_content %{_datadir}/sympa/static_content
 
 #global pre_rel b.2
 
 Name:        sympa
 Version:     6.2.74
-Release:     %{?pre_rel:0.}1%{?pre_rel:.%pre_rel}%{?dist}.1
+Release:     %{?pre_rel:0.}1%{?pre_rel:.%pre_rel}%{?dist}.2
 Summary:     Powerful multilingual List Manager
 Summary(fr): Gestionnaire de listes électroniques
 Summary(ja): 高機能で多言語対応のメーリングリスト管理ソフトウェア
 # The License: tag depends on bundled code for a given distro/release
 License:     GPL-2.0-or-later%{licenses_bundled}
 URL:         http://www.sympa.org
 Source0:     https://github.com/sympa-community/sympa/releases/download/%{version}%{?pre_rel}/%{name}-%{version}%{?pre_rel}.tar.gz
 
@@ -214,17 +214,16 @@ BuildRequires: perl(XML::LibXML)
 # authorcheck
 %if %{with authorcheck}
 BuildRequires: perl(Test::Fixme)
 BuildRequires: perl(Test::Perl::Critic)
 BuildRequires: perl(Test::Pod::Coverage)
 BuildRequires: perl(Test::Pod::Spelling::CommonMistakes)
 %endif
 
-Requires(pre): shadow-utils
 %{?systemd_requires}
 Requires:    smtpdaemon
 Requires:    mhonarc
 Requires:    logrotate
 Requires:    perl(DBD::mysql)
 Requires:    perl(FCGI)
 
 # Optional CPAN packages
@@ -407,16 +406,21 @@ Requires: %{name} = %{version}-%{release}
 %description devel-doc
 Sympa documentation for developers.
 
 
 %prep
 %setup -q -n %{name}-%{version}%{?pre_rel}
 %patch -P13 -p0 -b .confdef
 
+# Create a sysusers.d config file
+cat >sympa.sysusers.conf <<EOF
+u sympa - 'System User for Sympa' %{_localstatedir}/lib/sympa -
+EOF
+
 
 %build
 # Development
 %if %{with autoreconf}
 autoreconf --install
 %endif
 
 # Give install "-p" preserving mtime to prevent unexpected update of CSS.
@@ -594,36 +598,27 @@ for conffile in \
     mime.types sympa.wsdl ;
     do cp -a %{buildroot}%{_datadir}/%{name}/default/$conffile \
         %{buildroot}%{_sysconfdir}/%{name}/;
 done
 
 # Create directory for S/MIME user certificates
 mkdir -p %{buildroot}%{_localstatedir}/lib/sympa/X509-user-certs
 
+install -m0644 -D sympa.sysusers.conf %{buildroot}%{_sysusersdir}/sympa.conf
+
 
 %check
 make check
 %if %{with authorcheck}
 make authorcheck || true
 %endif
 
 
 %pre
-# Create "sympa" group if it does not exist
-getent group sympa >/dev/null || /usr/sbin/groupadd -r sympa
-
-# Create "sympa" user if it does not exist
-getent passwd sympa >/dev/null || \
-  /usr/sbin/useradd -r -g sympa \
-      -d %{_localstatedir}/lib/sympa \
-      -c "System User for Sympa" \
-      -s "/sbin/nologin" \
-      sympa
-
 # Fix CSS and pictures paths
 if [ $1 -gt 1 ]; then
     if [ -d %{_localstatedir}/lib/%{name}/static_content/css ]; then
         mv -fu %{_localstatedir}/lib/%{name}/static_content/css/* \
             %{_localstatedir}/lib/%{name}/css/ \
             && rm -rf %{_localstatedir}/lib/%{name}/static_content/css/
     fi
     if [ -d %{_localstatedir}/lib/%{name}/static_content/pictures ]; then
@@ -805,16 +800,17 @@ fi
 %{_unitdir}/sympa-archive.service
 %{_unitdir}/sympa-bounce.service
 %{_unitdir}/sympa-task.service
 %{_tmpfilesdir}/sympa.conf
 %ghost %attr(-,sympa,sympa) %{_rundir}/sympa/
 %dir %{_sysconfdir}/systemd/system/sympa.service.d/
 %config(noreplace) %{_sysconfdir}/systemd/system/sympa.service.d/*
 %config(noreplace) %{_sysconfdir}/sysconfig/sympa
+%{_sysusersdir}/sympa.conf
 
 
 %files httpd
 %config(noreplace) %{_sysconfdir}/httpd/conf.d/sympa.conf
 %{_unitdir}/wwsympa.service
 %{_unitdir}/wwsympa.socket
 %{_unitdir}/sympasoap.service
 %{_unitdir}/sympasoap.socket
@@ -840,16 +836,19 @@ fi
 %config(noreplace) %{_sysconfdir}/systemd/system/sympasoap.socket.d/sympasoap-nginx.conf
 
 
 %files devel-doc
 %{_mandir}/man3/*
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 6.2.74-1.2
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 6.2.74-1.1
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Dec 16 2024 Xavier Bachelot <xavier@bachelot.org> - 6.2.74-1
 - Update to 6.2.74, fix for CVE-2024-55919
   - Full changelog: https://github.com/sympa-community/sympa/releases/tag/6.2.74
 
 * Thu Aug 22 2024 Xavier Bachelot <xavier@bachelot.org> 6.2.72-5
diff --git tarantool/tarantool.spec tarantool/tarantool.spec.tmp
index 7c789becce..498bae73b1 100644
--- tarantool/tarantool.spec
+++ tarantool/tarantool.spec.tmp
@@ -4,28 +4,26 @@ BuildRequires: gcc-c++ >= 4.5
 BuildRequires: coreutils
 BuildRequires: sed
 BuildRequires: readline-devel
 BuildRequires: openssl-devel
 BuildRequires: libcurl-devel
 BuildRequires: libicu-devel
 BuildRequires: libzstd-devel
 BuildRequires: perl-podlators
-Requires(pre): %{_sbindir}/useradd
-Requires(pre): %{_sbindir}/groupadd
 Requires: logrotate
 
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 BuildRequires: systemd
 
 Name: tarantool
 Version: 2.4.2.68
-Release: 21%{?dist}
+Release: 22%{?dist}
 Summary: In-Memory Database
 # Automatically converted from old format: BSD - review is highly recommended.
 License: LicenseRef-Callaway-BSD
 URL: https://tarantool.org/
 # Add dependency on network configuration files used by `socket` module
 # https://github.com/tarantool/tarantool/issues/1794
 Requires: /etc/protocols
 Requires: /etc/services
@@ -69,16 +67,21 @@ data sources. Implement HTTP-service.
 
 This package provides server development files needed to create
 C and Lua/C modules.
 
 %prep
 %setup -q -n %{name}-%{version}
 %patch -P0 -p1
 
+# Create a sysusers.d config file
+cat >tarantool.sysusers.conf <<EOF
+u tarantool - 'Tarantool Server' /var/lib/tarantool -
+EOF
+
 %build
 # RHBZ #1301720: SYSCONFDIR an LOCALSTATEDIR must be specified explicitly
 %cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo \
          -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=%{_localstatedir} \
          -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_sysconfdir} \
          -DENABLE_BUNDLED_LIBYAML:BOOL=ON \
          -DENABLE_BUNDLED_MSGPUCK:BOOL=ON \
          -DENABLE_BUNDLED_LIBCURL:BOOL=OFF \
@@ -90,23 +93,21 @@ C and Lua/C modules.
          -DENABLE_DIST:BOOL=ON
 %cmake_build --target tarantool api man-tarantool man-tarantoolctl
 
 %install
 %cmake_install
 # %%doc and %%license macroses are used instead
 rm -rf %{buildroot}%{_datarootdir}/doc/tarantool/
 
+install -m0644 -D tarantool.sysusers.conf %{buildroot}%{_sysusersdir}/tarantool.conf
+
 %check
 %ctest
 
-%pre
-/usr/sbin/groupadd -r tarantool > /dev/null 2>&1 || :
-/usr/sbin/useradd -M -N -g tarantool -r -d /var/lib/tarantool -s /sbin/nologin\
-    -c "Tarantool Server" tarantool > /dev/null 2>&1 || :
 
 %post
 %tmpfiles_create tarantool.conf
 %systemd_post 'tarantool@.service'
 
 %preun
 # Sic: doesn't work
 #systemd_preun 'tarantool@*.service'
@@ -129,28 +130,32 @@ rm -rf %{buildroot}%{_datarootdir}/doc/tarantool/
 %dir %{_sysconfdir}/tarantool
 %dir %{_sysconfdir}/tarantool/instances.available
 %config(noreplace) %{_sysconfdir}/tarantool/instances.available/example.lua
 %attr(-,tarantool,tarantool) %dir %{_localstatedir}/lib/tarantool/
 %attr(-,tarantool,tarantool) %dir %{_localstatedir}/log/tarantool/
 %config(noreplace) %{_sysconfdir}/logrotate.d/tarantool
 %{_unitdir}/tarantool@.service
 %{_tmpfilesdir}/tarantool.conf
+%{_sysusersdir}/tarantool.conf
 
 %files devel
 %dir %{_includedir}/tarantool
 %{_includedir}/tarantool/lauxlib.h
 %{_includedir}/tarantool/luaconf.h
 %{_includedir}/tarantool/lua.h
 %{_includedir}/tarantool/lua.hpp
 %{_includedir}/tarantool/luajit.h
 %{_includedir}/tarantool/lualib.h
 %{_includedir}/tarantool/module.h
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.4.2.68-22
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.2.68-21
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sun Dec 08 2024 Pete Walter <pwalter@fedoraproject.org> - 2.4.2.68-20
 - Rebuild for ICU 76
 
 * Wed Sep 04 2024 Miroslav Suchý <msuchy@redhat.com> - 2.4.2.68-19
 - convert license to SPDX
diff --git taskd/taskd.spec taskd/taskd.spec.tmp
index b686fc8cde..f19a2167f7 100644
--- taskd/taskd.spec
+++ taskd/taskd.spec.tmp
@@ -1,11 +1,11 @@
 Name:           taskd
 Version:        1.1.0
-Release:        25%{?dist}
+Release:        26%{?dist}
 Summary:        Secure server providing multi-user, multi-client access to task data
 License:        MIT
 URL:            https://github.com/goldenHairDafo/taskd/
 Source0:        http://taskwarrior.org/download/%{name}-%{version}.tar.gz
 Source1:        taskd.service
 Source2:        taskd-config
 Source3:        taskd.xml
 Source4:        README.Fedora
@@ -46,16 +46,21 @@ continuous connectivity, and may not have feature parity.
 The Taskserver provides this and builds a framework to go several steps beyond
 merely synchronizing data.
 
 %prep
 %autosetup
 
 cp -a %{SOURCE4} .
 
+# Create a sysusers.d config file
+cat >taskd.sysusers.conf <<EOF
+u taskd - 'Task Server system user' %{_sharedstatedir}/taskd/ /usr/bin/sh
+EOF
+
 
 %build
 %cmake
 %cmake_build
 
 %install
 %cmake_install
 
@@ -80,23 +85,19 @@ mkdir -p %{buildroot}%{_prefix}/lib/firewalld/services
 cp -a %{SOURCE3} %{buildroot}%{_prefix}/lib/firewalld/services/taskd.xml
 %endif
 
 mkdir -p %{buildroot}%{_sharedstatedir}/taskd/orgs/
 cp -a %{SOURCE2} %{buildroot}%{_sharedstatedir}/taskd/config
 
 rm -r %{buildroot}%{_datadir}/doc/taskd/
 
+install -m0644 -D taskd.sysusers.conf %{buildroot}%{_sysusersdir}/taskd.conf
+
 %pre
-getent group taskd >/dev/null || groupadd -r taskd
-getent passwd taskd >/dev/null || \
-    useradd -r -g taskd -d %{_sharedstatedir}/taskd/ -s /usr/bin/sh \
-    -c "Task Server system user" taskd
-exit 0
-
 # Systemd scriptlets
 %if 0%{?rhel} && 0%{?rhel} <= 6
 # No systemd for el6
 %else
 
 %post
 %systemd_post taskd.service
 
@@ -129,18 +130,22 @@ exit 0
 %dir %attr(0750, taskd, taskd) %{_sharedstatedir}/taskd/orgs/
 
 %if 0%{?rhel} && 0%{?rhel} <= 6
 # No sysvinit files for el6
 %else
 %{_unitdir}/taskd.service
 %{_prefix}/lib/firewalld/services/taskd.xml
 %endif
+%{_sysusersdir}/taskd.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.1.0-26
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-25
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-24
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-23
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git tcpcrypt/tcpcrypt.spec tcpcrypt/tcpcrypt.spec.tmp
index cf5642a982..ef2760f05d 100644
--- tcpcrypt/tcpcrypt.spec
+++ tcpcrypt/tcpcrypt.spec.tmp
@@ -1,15 +1,15 @@
 %global _hardened_build 1
 %global snapshot 0
 
 Summary: Opportunistically encrypt TCP connections
 Name: tcpcrypt
 Version: 0.5
-Release: 17%{?dist}
+Release: 18%{?dist}
 # Automatically converted from old format: BSD - review is highly recommended.
 License: LicenseRef-Callaway-BSD
 Url: http://tcpcrypt.org/
 Source0: http://tcpcrypt.org//%{name}-%{version}.tar.gz
 SOURCE1: tmpfiles-tcpcrypt.conf
 SOURCE2: tcpcryptd.service
 SOURCE3: tcpcryptd-firewall
 Requires: %{name}-libs%{?_isa} = %{version}-%{release}
@@ -17,17 +17,16 @@ BuildRequires: make
 BuildRequires:  gcc
 BuildRequires: openssl-devel libnetfilter_queue-devel libcap-devel
 BuildRequires: libnetfilter_conntrack-devel libpcap-devel
 BuildRequires: libtool autoconf automake
 BuildRequires: systemd
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
-Requires(pre): shadow-utils
 
 %description
 Provides a protocol that attempts to encrypt (almost) all of your
 network traffic. Unlike other security mechanisms, Tcpcrypt works out
 of the box: it requires no configuration, no changes to applications,
 and your network connections will continue to work even if the remote
 end does not support
 
@@ -42,70 +41,76 @@ The devel package contains the tcpcrypt library and the include files
 Summary: Libraries used by tcpcryptd server and tcpcrypt-aware applications
 
 %description libs
 Contains libraries used by tcpcryptd server and tcpcrypt-aware applications
 
 %prep
 %autosetup
 
+# Create a sysusers.d config file
+cat >tcpcrypt.sysusers.conf <<EOF
+u tcpcryptd - 'tcpcrypt daemon account' /var/run/tcpcryptd -
+EOF
+
 %build
 sh bootstrap.sh
 %configure --disable-static --disable-rpath
 %make_build
 
 %install
 %make_install
 install -m 0755 %{SOURCE3} %{buildroot}/%{_bindir}
 rm %{buildroot}%{_libdir}/*.la
 mkdir -p %{buildroot}%{_sysconfdir}/tmpfiles.d/ %{buildroot}/run/tcpcryptd
 install -D -m 0644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}/tcpcrypt.conf
 mkdir -p %{buildroot}%{_unitdir}
 install -m 0755 %{SOURCE2} %{buildroot}/%{_unitdir}/tcpcryptd.service
 
+install -m0644 -D tcpcrypt.sysusers.conf %{buildroot}%{_sysusersdir}/tcpcrypt.conf
+
 %files libs
 %doc README.markdown
 %license LICENSE
 %{_libdir}/libtcpcrypt.so.*
 
 %files
 %doc README.markdown
 %license LICENSE
 %{_bindir}/tcnetstat
 %{_bindir}/tcpcryptd
 %{_bindir}/tcpcryptd-firewall
 %{_bindir}/tcs
 %{_mandir}/man8/*
 %attr(0644,root,root) %{_tmpfilesdir}/tcpcrypt.conf
 %attr(0644,root,root) %{_unitdir}/tcpcryptd.service
 %attr(0755,tcpcryptd,tcpcryptd) %dir /run/tcpcryptd
+%{_sysusersdir}/tcpcrypt.conf
 
 %files devel
 %{_libdir}/libtcpcrypt.so
 %dir %{_includedir}/tcpcrypt
 %{_includedir}/tcpcrypt/*.h
 
 %ldconfig_scriptlets libs
 
-%pre
-getent group tcpcryptd >/dev/null || groupadd -r tcpcryptd
-getent passwd tcpcryptd >/dev/null || \
-useradd -r -g tcpcryptd -d /var/run/tcpcryptd -s /sbin/nologin \
--c "tcpcrypt daemon account" tcpcryptd || exit 0
 
 %post
 %systemd_post tcpcryptd.service
 
 %preun
 %systemd_preun tcpcryptd.service
 
 %postun
 %systemd_postun_with_restart tcpcryptd.service
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.5-18
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.5-17
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Sep 04 2024 Miroslav Suchý <msuchy@redhat.com> - 0.5-16
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.5-15
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git tetrinetx/tetrinetx.spec tetrinetx/tetrinetx.spec.tmp
index 4bfa59082f..ae79ff7ca6 100644
--- tetrinetx/tetrinetx.spec
+++ tetrinetx/tetrinetx.spec.tmp
@@ -1,23 +1,22 @@
 Name:           tetrinetx
 Version:        1.13.16
-Release:        42%{?dist}
+Release:        43%{?dist}
 Summary:        The GNU TetriNET server
 
 # Automatically converted from old format: GPLv2 - review is highly recommended.
 License:        GPL-2.0-only
 URL:            http://tetrinetx.sourceforge.net/
 Source0:        http://switch.dl.sourceforge.net/sourceforge/tetrinetx/%{name}-%{version}+qirc-1.40c.tar.gz
 Source1:        tetrinetx.init
 Source2:        tetrinetx.logrotate
 Source3:        tetrinetx.service
 Source4:        %{name}-tmpfiles.conf
 
-Requires(pre):  shadow-utils
 %{?systemd_requires}
 BuildRequires:  gcc
 BuildRequires:  systemd-rpm-macros
 BuildRequires:  adns-devel
 Requires:       logrotate
 
 
 %description
@@ -39,16 +38,21 @@ sed -i "s:/usr/local:%{_prefix}:g; s/tetrix\\.linux/tetrinetx/g" -i src/compile.
 sed -i "s:game\\.pid:%{_localstatedir}/run/tetrinetx/game.pid:" bin/game.conf
 
 # Modify config.h to use correct directories for config files, etc
 sed -i "s:game\\.log:%{_localstatedir}/log/tetrinetx/game\\.log:;
         s:game\\.pid:%{_localstatedir}/run/tetrinetx/game\\.pid:;
         s:game\\.winlist:%{_localstatedir}/games/tetrinetx/game\\.winlist:g;
         s:\"game:\"%{_sysconfdir}/tetrinetx/game:g" src/config.h
 
+# Create a sysusers.d config file
+cat >tetrinetx.sysusers.conf <<EOF
+u tetrinetx - 'Tetrinetx service account' %{_localstatedir}/games/tetrinetx -
+EOF
+
 
 %build
 %undefine _fortify_level
 cd src
 ./compile.linux "%{optflags}"
 cd ..
 
 
@@ -72,22 +76,19 @@ install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/tetrinetx
 mkdir -p %{buildroot}%{_localstatedir}/log/tetrinetx
 # State data (winlists, etc) for the game will be placed in /var/games/tetrinetx
 mkdir -p %{buildroot}%{_localstatedir}/games/tetrinetx
 # Tetrinetx pid file goes here
 mkdir -p %{buildroot}%{_tmpfilesdir}/
 install -p -m 644 %{SOURCE4} %{buildroot}%{_tmpfilesdir}/%{name}.conf
 mkdir -p %{buildroot}%{_localstatedir}/run/tetrinetx
 
+install -m0644 -D tetrinetx.sysusers.conf %{buildroot}%{_sysusersdir}/tetrinetx.conf
+
 
-%pre
-getent group tetrinetx >/dev/null || groupadd -r tetrinetx
-getent passwd tetrinetx >/dev/null || \
-    useradd -r -g tetrinetx -d %{_localstatedir}/games/tetrinetx -M -s /sbin/nologin \
-    -c "Tetrinetx service account" tetrinetx
 
 %post
 %systemd_post tetrinetx.service
 
 %preun
 %systemd_preun tetrinetx.service
 
 %postun
@@ -101,19 +102,23 @@ getent passwd tetrinetx >/dev/null || \
 %{_unitdir}/tetrinetx.service
 %dir %{_sysconfdir}/tetrinetx
 %config(noreplace) %{_sysconfdir}/logrotate.d/tetrinetx
 %dir %attr(-,tetrinetx,tetrinetx) %{_localstatedir}/log/tetrinetx/
 %dir %attr(-,tetrinetx,tetrinetx) %{_localstatedir}/games/tetrinetx/
 %dir %attr(-,tetrinetx,tetrinetx) %{_localstatedir}/run/tetrinetx/
 %{_tmpfilesdir}/%{name}.conf
 %config(noreplace) %{_sysconfdir}/tetrinetx/*
+%{_sysusersdir}/tetrinetx.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.13.16-43
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.16-42
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Jul 29 2024 Miroslav Suchý <msuchy@redhat.com> - 1.13.16-41
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.16-40
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git thermald/thermald.spec thermald/thermald.spec.tmp
index 447b4a803b..6f8e7a2760 100644
--- thermald/thermald.spec
+++ thermald/thermald.spec.tmp
@@ -25,17 +25,16 @@ BuildRequires:	libxml2-devel
 BuildRequires:	systemd-rpm-macros
 BuildRequires:  upower-devel
 BuildRequires:  libevdev-devel
 BuildRequires:  gtk-doc
 
 Requires:	dbus%{?_isa}
 
 Requires(pre):	glibc-common
-Requires(pre):	shadow-utils
 
 %{?systemd_requires}
 
 %description
 %{name} monitors and controls platform temperature.
 
 Thermal issues are important to handle proactively to reduce performance
 impact.  %{name} uses the existing Linux kernel infrastructure and can
@@ -147,16 +146,21 @@ Running the thermald-monitor-app
 To communicate with thermald via dbus, the user has to be member
 of the "power" group.  So make sure to add your user id to this
 group before using the thermald-monitor-app.
 EOF
 %endif
 
 NO_CONFIGURE=1 ./autogen.sh
 
+# Create a sysusers.d config file
+cat >thermald.sysusers.conf <<EOF
+g power -
+EOF
+
 
 %build
 %configure									\
 	--with-systemdsystemunitdir=%{_unitdir}					\
 	--disable-option-checking						\
 	--disable-silent-rules
 
 %make_build
@@ -192,26 +196,25 @@ chmod -c 0644 %{buildroot}%{_rundir}/%{name}/%{name}.pid
 install -Dpm 0755 tools/thermal_monitor/%{_target_platform}/ThermalMonitor	\
 	%{buildroot}%{_bindir}/ThermalMonitor
 install -Dpm 0644 fedora_addons/%{name}-monitor.desktop			\
 	%{buildroot}%{_datadir}/applications/%{name}-monitor.desktop
 install -Dpm 0644 fedora_addons/%{name}-monitor.svg			\
 	%{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{name}-monitor.svg
 %endif
 
+install -m0644 -D thermald.sysusers.conf %{buildroot}%{_sysusersdir}/thermald.conf
+
 
 %check
 %if %{with qt}
 %{_bindir}/desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
 %endif
 
 
-%pre
-getent group power >/dev/null || groupadd -r power
-exit 0
 
 
 %post
 %systemd_post thermald.service
 
 
 %preun
 %systemd_preun thermald.service
@@ -229,16 +232,17 @@ exit 0
 %{_bindir}/%{name}-set-pref
 %{_datadir}/dbus-1/system-services/org.freedesktop.%{name}.service
 %{_datadir}/dbus-1/system.d/org.freedesktop.%{name}.conf
 %{_mandir}/man5/thermal-conf.xml.5*
 %{_mandir}/man8/%{name}.8*
 %{_sbindir}/%{name}
 %{_tmpfilesdir}/%{name}.conf
 %{_unitdir}/%{name}.service
+%{_sysusersdir}/thermald.conf
 
 
 %if %{with qt}
 %files monitor
 %doc fedora_addons/%{name}-monitor.ReadMe.txt
 %license tools/thermal_monitor/COPYING
 %{_bindir}/ThermalMonitor
 %{_datadir}/applications/%{name}-monitor.desktop
diff --git thttpd/thttpd.spec thttpd/thttpd.spec.tmp
index e4f620fd40..8cca06dba3 100644
--- thttpd/thttpd.spec
+++ thttpd/thttpd.spec.tmp
@@ -1,14 +1,14 @@
 # Where the default web root will be configured and default files installed
 %global webroot /var/www/thttpd
 
 Name:           thttpd
 Version:        2.29
-Release:        19%{?dist}
+Release:        20%{?dist}
 Summary:        A tiny, turbo, throttleable lightweight HTTP server
 
 # Automatically converted from old format: BSD - review is highly recommended.
 License:        LicenseRef-Callaway-BSD
 URL:            http://www.acme.com/software/thttpd/
 Source0:        http://www.acme.com/software/thttpd/thttpd-%{version}.tar.gz
 Source1:        thttpd.service
 Source2:        thttpd.logrotate
@@ -17,17 +17,16 @@ Source11:       thttpd_powered_3.png
 Source12:       poweredby.png
 Patch0:         thttpd-2.25b-CVE-2005-3124.patch
 Patch1:         thttpd-2.25b-CVE-2012-5640-check_crypt_return_value.patch
 Patch2:         thttpd-fix-world-readable-log.patch
 Patch3:         thttpd-c99.patch
 BuildRequires: make
 BuildRequires:  systemd gcc
 %{?systemd_requires}
-Requires(pre):  shadow-utils
 
 %description
 Thttpd is a very compact no-frills httpd serving daemon that can handle
 very high loads. While lacking many of the advanced features of Apache, 
 thttpd operates without forking and is extremely efficient in memory use. 
 Basic support for cgi scripts, authentication, and ssi is provided for. 
 Advanced features include the ability to throttle traffic.
 
@@ -38,16 +37,22 @@ Advanced features include the ability to throttle traffic.
 %patch -P2 -p1 -b .rhbz924857
 %patch -P3 -p1 -b .c99
 # Convert man pages to UTF8
 for man in *.8 */*.8 */*.1; do
     iconv -f iso8859-1 -t utf-8 -o tmp ${man}
     mv -f tmp ${man}
 done
 
+# Create a sysusers.d config file
+cat >thttpd.sysusers.conf <<EOF
+g www -
+u thttpd - 'Thttpd Web Server User' %{webroot} -
+EOF
+
 %build
 %configure
 # Hacks :-)
 sed -i.old -e 's/-o bin -g bin//g' Makefile
 sed -i.old -e 's/-m 444/-m 644/g; s/-m 555/-m 755/g' Makefile
 sed -i.old -e 's/.*chgrp.*//g; s/.*chmod.*//g' extras/Makefile
 # Config changes
 %{?_without_indexes:      sed -i.old -e 's/#define GENERATE_INDEXES/#undef GENERATE_INDEXES/g' config.h}
@@ -104,20 +109,18 @@ pidfile=/var/run/thttpd.pid
 # nosymlink         # default = !chroot
 # novhost
 # nocgipat
 # nothrottles
 # host=0.0.0.0
 # charset=iso-8859-1
 EOF
 
-%pre
-/usr/sbin/groupadd -r www &>/dev/null || :
-/usr/sbin/useradd -s /sbin/nologin -c "Thttpd Web Server User" \
-    -d %{webroot} -M -r -g www thttpd &>/dev/null || :
+install -m0644 -D thttpd.sysusers.conf %{buildroot}%{_sysusersdir}/thttpd.conf
+
 
 %post
 %systemd_post thttpd.service
 
 %preun
 %systemd_preun thttpd.service
 
 %postun
@@ -139,18 +142,22 @@ EOF
 %config(noreplace) %{_sysconfdir}/logrotate.d/thttpd
 %config(noreplace) %{_sysconfdir}/thttpd.conf
 %{webroot}/
 %{_mandir}/man1/thtpasswd.1*
 %{_mandir}/man8/syslogtocern.8*
 %{_mandir}/man8/thttpd.8*
 # Hack to own parent directory for the default "webroot". Remove if needed.
 %dir /var/www
+%{_sysusersdir}/thttpd.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.29-20
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.29-19
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Sep 04 2024 Miroslav Suchý <msuchy@redhat.com> - 2.29-18
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.29-17
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git tntnet/tntnet.spec tntnet/tntnet.spec.tmp
index 0de0dc2fea..164264acd5 100644
--- tntnet/tntnet.spec
+++ tntnet/tntnet.spec.tmp
@@ -1,11 +1,11 @@
 Name:             tntnet
 Version:          3.0
-Release:          12%{?dist}
+Release:          13%{?dist}
 Summary:          A web application server for web applications
 Epoch:            1
 
 # GPLv2+: framework/common/gcryptinit.c
 # zlib:   framework/common/unzip.h
 # Automatically converted from old format: LGPLv2+ and GPLv2+ and zlib - review is highly recommended.
 License:          LicenseRef-Callaway-LGPLv2+ AND GPL-2.0-or-later AND Zlib
 URL:              http://www.tntnet.org/
@@ -18,17 +18,16 @@ BuildRequires:    gcc
 BuildRequires:    gcc-c++
 BuildRequires:    kernel-headers
 BuildRequires:    openssl-devel
 BuildRequires:    cxxtools-devel >= 3.0
 BuildRequires:    perl-generators
 BuildRequires:    zip
 BuildRequires:    zlib-devel
 BuildRequires:    systemd-units
-Requires(pre):    shadow-utils
 Requires(post):   systemd-units
 Requires(preun):  systemd-units
 Requires(postun): systemd-units
 
 %description
 %{summary}
 
 %package          devel
@@ -37,41 +36,42 @@ Requires:         %{name}%{?_isa} = %{epoch}:%{version}-%{release}
 Requires:         cxxtools-devel%{?_isa} >= 3.0
 
 %description devel
 Development files for %{name}
 
 %prep
 %autosetup -p0
 
+# Create a sysusers.d config file
+cat >tntnet.sysusers.conf <<EOF
+u tntnet - 'User' %{_localstatedir}/lib/%{name} -
+EOF
+
 %build
 %configure --disable-static
 %make_build
 
 %install
 %make_install DESTDIR=%{buildroot} INSTALL="install -p"
 
 # Systemd unit files
 # copy tntnet.service to unitdir /lib/systemd/system
 mkdir -p %{buildroot}%{_unitdir}
 mkdir -p %{buildroot}%{_datadir}/doc/
 install -Dpm 644 %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service
 
 # Find and remove all la files
 find %{buildroot} -type f -name "*.la" -exec rm -f {} ';'
 
+install -m0644 -D tntnet.sysusers.conf %{buildroot}%{_sysusersdir}/tntnet.conf
+
 %check
 test/tntnet-test
 
-%pre
-getent group %{name} > /dev/null || groupadd -r %{name}
-getent passwd %{name} > /dev/null || \
-    useradd -r -g %{name} -d %{_localstatedir}/lib/%{name} -s /sbin/nologin \
-    -c "User" %{name}
-exit 0
 
 %post
 /sbin/ldconfig
 %systemd_post %{name}.service
 
 %preun
 %systemd_preun %{name}.service
 
@@ -91,26 +91,30 @@ exit 0
 %{_libdir}/tntnet/
 %{_datadir}/tntnet/
 %exclude %{_datadir}/%{name}/template/
 %{_mandir}/man1/ecppc.1.gz
 %{_mandir}/man1/tntnet-defcomp.1.gz
 %{_mandir}/man7/ecpp.7.gz
 %{_mandir}/man7/tntnet.xml.7.gz
 %{_mandir}/man8/tntnet.8.gz
+%{_sysusersdir}/tntnet.conf
 
 %files devel
 %{_bindir}/tntnet-project
 %{_libdir}/libtntnet*.so
 %{_includedir}/tnt/
 %{_libdir}/pkgconfig/tntnet.pc
 %{_libdir}/pkgconfig/tntnet_sdk.pc
 %{_datadir}/%{name}/template/
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1:3.0-13
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.0-12
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Sep 04 2024 Miroslav Suchý <msuchy@redhat.com> - 1:3.0-11
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.0-10
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git totpcgi/totpcgi.spec totpcgi/totpcgi.spec.tmp
index cc6e25d383..7c727b569e 100644
--- totpcgi/totpcgi.spec
+++ totpcgi/totpcgi.spec.tmp
@@ -5,17 +5,17 @@
 
 %global totpcgiuser     totpcgi
 %global totpcgiprovuser totpcgiprov
 
 %global fixfiles_dirs %{_localstatedir}/www/totpcgi %{_localstatedir}/www/totpcgi-provisioning %{_localstatedir}/lib/totpcgi %{_sysconfdir}/totpcgi
 
 Name:       totpcgi
 Version:    0.6.0
-Release:    0.22.20190713git%{?dist}
+Release:    0.23.20190713git%{?dist}
 Summary:    A centralized totp solution based on google-authenticator
 
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:    GPL-2.0-or-later
 URL:        https://github.com/mricon/totp-cgi
 Source0:    https://github.com/mricon/totp-cgi/archive/%{commit}/totp-cgi-%{shortcommit}.tar.gz
 
 # Switch from python-crypto to python-cryptodome. 
@@ -61,16 +61,23 @@ Requires(post):   /usr/sbin/semodule, /sbin/restorecon, /sbin/fixfiles
 Requires(postun): /usr/sbin/semodule, /sbin/restorecon, /sbin/fixfiles
 
 %description selinux
 This package includes SELinux policy for totpcgi and totpcgi-provisioning.
 
 %prep
 %autosetup -n totp-cgi-%{commit} -p1
 
+# Previously, a non-system user was created :(, sysusers does not support this
+# Create a sysusers.d config file
+cat >totpcgi.sysusers.conf <<EOF
+u totpcgi - 'Totpcgi user' /var/lib/totpcgi -
+u totpcgiprov - 'Totpcgi provisioning user' /etc/totpcgi -
+EOF
+
 
 %build
 %py3_build
 pushd selinux
 for selinuxvariant in %{selinux_variants}
 do
   make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile
   mv totpcgi.pp totpcgi.pp.${selinuxvariant}
@@ -128,23 +135,19 @@ do
 done
 /usr/bin/hardlink -cv %{buildroot}%{_datadir}/selinux
 
 # fix python shebangs
 sed -i -e 's|/usr/bin/env python|/usr/bin/python3|' %{buildroot}/var/www/totpcgi/index.cgi
 sed -i -e 's|/usr/bin/env python|/usr/bin/python3|' %{buildroot}/var/www/totpcgi-provisioning/index.cgi
 sed -i -e 's|/usr/bin/env python|/usr/bin/python3|' %{buildroot}/usr/bin/totpprov
 
+install -m0644 -D totpcgi.sysusers.conf %{buildroot}%{_sysusersdir}/totpcgi.conf
+
 %pre -n python3-totpcgi
-# We always add both the totpcgi and totpcgi-provisioning user
-/usr/sbin/useradd -c "Totpcgi user" \
-    -M -s /sbin/nologin -d /var/lib/totpcgi %{totpcgiuser} 2> /dev/null || :
-/usr/sbin/useradd -c "Totpcgi provisioning user" \
-    -M -s /sbin/nologin -d /etc/totpcgi %{totpcgiprovuser} 2> /dev/null || :
-
 # For some reason the labeling doesn't always happen correctly
 # force it if fixfiles exists
 %post
 if [ -f /sbin/fixfiles ] ; then
   /sbin/fixfiles -R totpcgi restore || :
 fi
 
 # For some reason the labeling doesn't always happen correctly
@@ -190,31 +193,35 @@ fi
 %files -n python3-totpcgi
 %doc COPYING
 %{python3_sitelib}/*
 %dir %attr(-, %{totpcgiprovuser}, %{totpcgiuser}) %{_sysconfdir}/totpcgi
 %dir %attr(-, %{totpcgiprovuser}, %{totpcgiuser}) %{_sysconfdir}/totpcgi/totp
 %config(noreplace) %attr(-, -, %{totpcgiprovuser}) %{_sysconfdir}/totpcgi/provisioning.conf
 %{_bindir}/*
 %{_mandir}/*/*
+%{_sysusersdir}/totpcgi.conf
 
 %files provisioning
 %dir %attr(-, %{totpcgiprovuser}, %{totpcgiprovuser}) %{_localstatedir}/www/totpcgi-provisioning
 %attr(-, %{totpcgiprovuser}, %{totpcgiprovuser}) %{_localstatedir}/www/totpcgi-provisioning/*.cgi
 %config(noreplace) %{_localstatedir}/www/totpcgi-provisioning/*.css
 %config(noreplace) %{_sysconfdir}/httpd/conf.d/totpcgi-provisioning.conf
 %dir %attr(-, -, %{totpcgiprovuser}) %{_sysconfdir}/totpcgi/templates
 %config(noreplace) %attr(-, -, %{totpcgiprovuser}) %{_sysconfdir}/totpcgi/templates/*.html
 
 %files selinux
 %doc selinux/*.{fc,if,sh,te}
 %{_datadir}/selinux/*/totpcgi.pp
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.6.0-0.23.20190713git
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.0-0.22.20190713git
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 0.6.0-0.21.20190713git
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.0-0.20.20190713git
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git transmission/transmission.spec transmission/transmission.spec.tmp
index ac162e4bca..f3cc382ad9 100644
--- transmission/transmission.spec
+++ transmission/transmission.spec.tmp
@@ -1,11 +1,11 @@
 Name:           transmission
 Version:        4.0.6
-Release:        4%{?dist}
+Release:        5%{?dist}
 Summary:        A lightweight GTK+ BitTorrent client
 # See COPYING. This licensing situation is... special.
 License:        MIT and GPL-2.0-only
 URL:            http://www.transmissionbt.com
 
 Source0:        https://github.com/transmission/transmission/releases/download/%{version}/transmission-%{version}.tar.xz
 # https://bugzilla.redhat.com/show_bug.cgi?id=1221292
 Source1:        https://raw.githubusercontent.com/gnome-design-team/gnome-icons/master/apps-symbolic/Adwaita/scalable/apps/transmission-symbolic.svg
@@ -64,17 +64,16 @@ transmission-edit, transmission-show utilities.
 Summary:       Transmission command line implementation
 Requires:      transmission-common%{?_isa}
 %description cli
 Command line version of Transmission BitTorrent client.
 
 %package daemon
 Summary:       Transmission daemon
 Requires:      transmission-common%{?_isa}
-Requires(pre): shadow-utils
 BuildRequires: systemd
 %description daemon
 Transmission BitTorrent client daemon.
 
 %package gtk
 Summary:       Transmission GTK interface
 Requires:      transmission-common%{?_isa}
 # for canberra-gtk-play
@@ -87,22 +86,16 @@ GTK graphical interface of Transmission BitTorrent client.
 Summary:       Transmission Qt interface
 Requires:      transmission-common%{?_isa}
 # for canberra-gtk-play
 Recommends:    libcanberra-gtk3%{?_isa}
 
 %description qt
 Qt graphical interface of Transmission BitTorrent client.
 
-%pre daemon
-getent group transmission >/dev/null || groupadd -r transmission
-getent passwd transmission >/dev/null || \
-useradd -r -g transmission -d %{_sharedstatedir}/transmission -s /sbin/nologin \
-        -c "transmission daemon account" transmission
-exit 0
 
 %prep
 %autosetup -p1
 
 # unbundle
 pushd third-party
 find fast_float/ libb64/ libdeflate/ libevent/ libnatpmp/ libpsl/ \
      miniupnpc/ utfcpp/ -type f -delete
@@ -110,16 +103,21 @@ popd
 
 # fix icon location for Transmission Qt
 sed -i 's|Icon=%{name}-qt|Icon=%{name}|g' qt/%{name}-qt.desktop
 
 # convert to UTF encoding
 iconv --from=ISO-8859-1 --to=UTF-8 AUTHORS > AUTHORS.new
 mv AUTHORS.new AUTHORS
 
+# Create a sysusers.d config file
+cat >transmission.sysusers.conf <<EOF
+u transmission - 'transmission daemon account' %{_sharedstatedir}/transmission -
+EOF
+
 %build
 
 CXXFLAGS="%{optflags} -fPIC"
 CFLAGS="%{optflags} -fPIC"
 
 %cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_CLI=ON -DENABLE_QT=ON -DUSE_QT_VERSION=6 -DENABLE_GTK=ON -DUSE_GTK_VERSION=4
 %cmake_build
 
@@ -142,16 +140,18 @@ cp %{SOURCE1} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/transmission-s
 %find_lang %{name} --with-qt
 %find_lang %{name}-gtk
 
 desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}-gtk.desktop
 desktop-file-install \
                 --dir=%{buildroot}%{_datadir}/applications/  \
                   qt/%{name}-qt.desktop
 
+install -m0644 -D transmission.sysusers.conf %{buildroot}%{_sysusersdir}/transmission.conf
+
 %post daemon
 %systemd_post transmission-daemon.service
 
 %preun daemon
 %systemd_preun transmission-daemon.service
 
 %postun daemon
 %systemd_postun_with_restart transmission-daemon.service
@@ -178,29 +178,33 @@ desktop-file-install \
 %{_bindir}/transmission-cli
 %doc %{_mandir}/man1/transmission-cli*
 
 %files daemon
 %{_bindir}/transmission-daemon
 %{_unitdir}/transmission-daemon.service
 %attr(-,transmission, transmission)%{_sharedstatedir}/transmission/
 %doc %{_mandir}/man1/transmission-daemon*
+%{_sysusersdir}/transmission.conf
 
 %files gtk -f %{name}-gtk.lang
 %{_bindir}/transmission-gtk
 %{_datadir}/metainfo/transmission-gtk.metainfo.xml
 %{_datadir}/applications/transmission-gtk.desktop
 %doc %{_mandir}/man1/transmission-gtk.*
 
 %files qt -f %{name}.lang
 %{_bindir}/transmission-qt
 %{_datadir}/applications/transmission-qt.desktop
 %doc %{_mandir}/man1/transmission-qt.*
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.0.6-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.6-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Oct 08 2024 Simone Caronni <negativo17@gmail.com> - 4.0.6-3
 - Rebuild for updated miniupnpc.
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.6-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git ufdbGuard/ufdbGuard.spec ufdbGuard/ufdbGuard.spec.tmp
index 5f1c50ab4e..88d503e9d8 100644
--- ufdbGuard/ufdbGuard.spec
+++ ufdbGuard/ufdbGuard.spec.tmp
@@ -1,11 +1,11 @@
 Name:		ufdbGuard
 Version:	1.35.8
-Release:	4%{?dist}
+Release:	5%{?dist}
 Summary:	A URL filter for squid
 URL:		https://www.urlfilterdb.com/
 License:	GPL-2.0-only
 
 Source0:	https://www.urlfilterdb.com/files/downloads/%{name}-%{version}.tar.gz
 Source1:	ufdbGuard.logrotate
 
 %if 0%{?fedora} || 0%{?rhel} >= 7
@@ -24,17 +24,16 @@ BuildRequires: gcc
 BuildRequires: systemd
 %else
 BuildRequires: systemd-rpm-macros
 %endif
 BuildRequires: openssl-devel
 BuildRequires: openssl-devel-engine
 BuildRequires: bind-utils
 BuildRequires: wget
-Requires(pre): shadow-utils
 Requires: logrotate
 
 %description
 ufdbGuard is a free URL filter for Squid with additional features like
 SafeSearch enforcement for a large number of search engines, safer HTTPS 
 visits and dynamic detection of proxies (URL filter circumventors).
 
 ufdbGuard supports free and commercial URL databases that can be
@@ -42,16 +41,21 @@ downloaded from various sites and vendors.
 You can also make your own URL database for ufdbGuard.
 
 %prep
 %setup -q
 
 iconv -c --from-code=ISO-8859-1 --to-code=UTF-8 -o CHANGELOG.new CHANGELOG
 mv CHANGELOG.new CHANGELOG
 
+# Create a sysusers.d config file
+cat >ufdbguard.sysusers.conf <<EOF
+u ufdb - 'ufdbGuard URL filter' /var/lib/ufdbguard -
+EOF
+
 %build
 INSTALL_PROGRAM=./install-sh %configure \
 	--with-ufdb-user=ufdb \
 	--prefix=%{_prefix} \
 	--with-ufdb-bindir=%{_sbindir} \
 	--with-ufdb-piddir=%{_localstatedir}/run/ufdbguard \
 	--with-ufdb-mandir=%{_mandir} \
 	--with-ufdb-images_dir=%{_sharedstatedir}/ufdbguard/images \
@@ -89,23 +93,19 @@ rm -f %{buildroot}%{_sbindir}/ufdbsignal
 mkdir -p %{buildroot}%{_var}/run/ufdbguard
 %if %{with tmpfiles}
 # Setup tmpfiles.d config for the above
 mkdir -p %{buildroot}/usr/lib/tmpfiles.d
 echo 'd /var/run/ufdbguard 0750 ufdb ufdb -' > \
     %{buildroot}/usr/lib/tmpfiles.d/ufdbGuard.conf
 %endif
 
+install -m0644 -D ufdbguard.sysusers.conf %{buildroot}%{_sysusersdir}/ufdbguard.conf
+
 
-%pre
-getent group ufdb >/dev/null || groupadd -r ufdb
-getent passwd ufdb >/dev/null || \
-    useradd -r -g ufdb -d /var/lib/ufdbguard -s /sbin/nologin \
-    -c "ufdbGuard URL filter" ufdb
-exit 0
 
 %post
 %systemd_post ufdbguard.service
 
 %preun
 %systemd_preun ufdbguard.service
 
 %postun
@@ -125,18 +125,22 @@ exit 0
 %dir %{_sharedstatedir}/ufdbguard/
 %attr(-, ufdb, ufdb) %dir %{_localstatedir}/log/ufdbguard/
 %{_sharedstatedir}/ufdbguard/*
 %{_unitdir}/ufdbguard.service
 %attr(-, ufdb, ufdb) %dir %{_var}/run/ufdbguard/
 %if %{with tmpfiles}
 %config(noreplace) %{_tmpfilesdir}/ufdbGuard.conf
 %endif
+%{_sysusersdir}/ufdbguard.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.35.8-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.35.8-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jan 08 2025 Gwyn Ciesla <gwync@protonmail.com> - 1.35.8-3
 - Fix FTBFS
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.35.8-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git uhd/uhd.spec uhd/uhd.spec.tmp
index f3e49ce05c..27fdff0112 100644
--- uhd/uhd.spec
+++ uhd/uhd.spec.tmp
@@ -26,17 +26,17 @@
 %global have_neon -DHAVE_ARM_NEON_H=0
 %endif
 %endif
 
 Name:           uhd
 URL:            http://github.com/EttusResearch/uhd
 Version:        4.7.0.0
 %global images_ver %{version}
-Release:        4%{?dist}
+Release:        5%{?dist}
 # Automatically converted from old format: GPLv3+ - review is highly recommended.
 License:        GPL-3.0-or-later
 BuildRequires:  make
 BuildRequires:  gcc-c++
 BuildRequires:  cmake
 BuildRequires:  boost-devel
 BuildRequires:  libusb1-devel
 BuildRequires:  python3-cheetah
@@ -58,17 +58,17 @@ BuildRequires:  python3-mako
 BuildRequires:  python3-requests
 BuildRequires:  python3-devel
 BuildRequires:  python3-setuptools
 BuildRequires:  tar
 %if ! %{with binary_firmware}
 BuildRequires:  sdcc
 BuildRequires:  sed
 %endif
-Requires(pre):  shadow-utils, glibc-common
+Requires(pre):  glibc-common
 Requires:       python3-tkinter
 Summary:        Universal Hardware Driver for Ettus Research products
 Source0:        %{url}/archive/v%{version}/uhd-%{version}.tar.gz
 Source1:        %{name}-limits.conf
 Source2:        %{url}/releases/download/v%{images_ver}/uhd-images_%{images_ver}.tar.xz
 # dirty workaround for the https://github.com/EttusResearch/uhd/issues/551
 # until the better fix is available
 Patch0:         uhd-4.2.0.0-imagepath-fix.patch
@@ -129,16 +129,21 @@ tar -xJf %{SOURCE2} -C images/images --strip-components=1
 rm -f images/images/{LICENSE.txt,*.tag}
 # remove Windows drivers
 rm -rf images/winusb_driver
 %endif
 
 # fix python shebangs
 find . -type f -name "*.py" -exec sed -i '/^#!/ s|.*|#!%{__python3}|' {} \;
 
+# Create a sysusers.d config file
+cat >uhd.sysusers.conf <<EOF
+g usrp -
+EOF
+
 %build
 # firmware
 %if ! %{with binary_firmware}
 # rebuilt from sources
 export PATH=$PATH:%{_libexecdir}/sdcc
 pushd images
 sed -i '/-name "\*\.twr" | xargs grep constraint | grep met/ s/^/#/' Makefile
 make %{?_smp_mflags} images
@@ -224,22 +229,20 @@ popd
 # fix wireshark dissectors location
 mkdir -p %{buildroot}%{_libdir}/wireshark/plugins/%{wireshark_ver}
 mv %{buildroot}%{_prefix}/epan %{buildroot}%{_libdir}/wireshark/plugins/%{wireshark_ver}
 %endif
 
 # add directory for modules
 mkdir -p %{buildroot}%{_libdir}/uhd/modules
 
+install -m0644 -D uhd.sysusers.conf %{buildroot}%{_sysusersdir}/uhd.conf
+
 %ldconfig_scriptlets
 
-%pre
-getent group usrp >/dev/null || \
-  %{_sbindir}/groupadd -r usrp >/dev/null 2>&1
-exit 0
 
 %files
 %exclude %{_docdir}/%{name}/doxygen
 %exclude %{_datadir}/uhd/images
 %doc _tmpdoc/*
 %dir %{_libdir}/uhd
 %{_bindir}/usrpctl
 %{_bindir}/uhd_*
@@ -250,16 +253,17 @@ exit 0
 %config(noreplace) %{_sysconfdir}/security/limits.d/*.conf
 %{_libdir}/lib*.so.*
 %{_libdir}/uhd/modules
 %{_libexecdir}/uhd
 %{_mandir}/man1/*.1*
 %{_datadir}/uhd
 %{python3_sitearch}/uhd
 %{python3_sitearch}/usrp_mpm
+%{_sysusersdir}/uhd.conf
 
 %files firmware
 %dir %{_datadir}/uhd/images
 %{_datadir}/uhd/images/*
 
 %files devel
 %{_includedir}/*
 %{_libdir}/lib*.so
@@ -275,16 +279,19 @@ exit 0
 %{_bindir}/chdr_log
 
 %if %{with wireshark}
 %files wireshark
 %{_libdir}/wireshark/plugins/%{wireshark_ver}/epan/*
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.7.0.0-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.7.0.0-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Thu Jul 25 2024 Miroslav Suchý <msuchy@redhat.com> - 4.7.0.0-3
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.7.0.0-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git up-imapproxy/up-imapproxy.spec up-imapproxy/up-imapproxy.spec.tmp
index 9becca3e06..4096d45790 100644
--- up-imapproxy/up-imapproxy.spec
+++ up-imapproxy/up-imapproxy.spec.tmp
@@ -1,31 +1,30 @@
 %global _hardened_build 1
 
 Name:           up-imapproxy
 Summary:        University of Pittsburgh IMAP Proxy
 Version:        1.2.8
-Release:        0.31.20250101svn15036%{?dist}
+Release:        0.32.20250101svn15036%{?dist}
 License:        GPL-2.0-or-later
 URL:            http://www.imapproxy.org
 # The source for this package was pulled from upstream's vcs.  Use the
 # following commands to generate the tarball:
 #  svn export -r 15036 https://svn.code.sf.net/p/squirrelmail/code/trunk/imap_proxy squirrelmail-imap_proxy-1.2.8
 #  tar cJvf squirrelmail-imap_proxy-20250101svn15036.tar.gz squirrelmail-imap_proxy-1.2.8
 Source0:        squirrelmail-imap_proxy-20250101svn15036.tar.gz
 Source1:        imapproxy.service
 # handle aarch64 per RH BZ 926684
 Patch0:         http://ausil.fedorapeople.org/aarch64/up-imapproxy/up-imapproxy-aarch64.patch
 Patch1:         up-imapproxy-ssl.patch
 Patch2:         up-imapproxy-configure-c99.patch
 Patch3:         up-imapproxy-c99.patch
 BuildRequires: make
 BuildRequires:  gcc
 BuildRequires:  openssl-devel ncurses-devel
-Requires(pre): shadow-utils
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 BuildRequires: systemd
 
 %description
 imapproxy was written to compensate for webmail clients that are
 unable to maintain persistent connections to an IMAP server. Most
@@ -55,38 +54,39 @@ sed -i \
     -e 's/  *$//' \
     -e 's!/usr/share/ssl!/etc/pki/tls!' \
     -e 's/^\(proc_username\) .*/\1 imapproxy/' \
     -e 's/^\(proc_groupname\) .*/\1 imapproxy/' \
     -e 's!^#*\(chroot_directory\) .*!\1 /var/lib/imapproxy!' \
     -e 's/^\(foreground_mode\) .*/\1 yes/' \
     scripts/imapproxy.conf
 
+# Create a sysusers.d config file
+cat >up-imapproxy.sysusers.conf <<EOF
+u imapproxy - 'IMAP proxy service' /var/lib/imapproxy -
+EOF
+
 %build
 %configure CFLAGS="%{optflags} -std=gnu17"
 [ -d bin ] || mkdir bin
 make %{?_smp_mflags}
 
 %install
 # The install-* Makefile targets don't support DESTDIR syntax, so work around.
 install -D -m 0644 -p scripts/imapproxy.conf \
     $RPM_BUILD_ROOT%{_sysconfdir}/imapproxy.conf
 install -D -m 0755 -p %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir}/imapproxy.service
 install -d -m 0755 $RPM_BUILD_ROOT%{_sbindir}
 install -D -m 0755 bin/* $RPM_BUILD_ROOT%{_sbindir}
 
 # Use a private chroot directory, also home directory for private user
 install -d -m 0755 $RPM_BUILD_ROOT/var/lib/imapproxy
 
-%pre
-getent group imapproxy >/dev/null || groupadd -r imapproxy
-getent passwd imapproxy >/dev/null || \
-    useradd -r -g imapproxy -d /var/lib/imapproxy -s /sbin/nologin \
-    -c "IMAP proxy service" imapproxy
-exit 0
+install -m0644 -D up-imapproxy.sysusers.conf %{buildroot}%{_sysusersdir}/up-imapproxy.conf
+
 
 %post
 %systemd_post imapproxy.service
 
 %preun
 %systemd_preun imapproxy.service
 
 %postun
@@ -95,18 +95,22 @@ exit 0
 %files
 %doc COPYING ChangeLog README README.ssl
 %doc copyright
 %config(noreplace) %{_sysconfdir}/imapproxy.conf
 %{_unitdir}/imapproxy.service
 %{_sbindir}/in.imapproxyd
 %{_sbindir}/pimpstat
 %dir /var/lib/imapproxy
+%{_sysusersdir}/up-imapproxy.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.2.8-0.32.20250101svn15036
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Tue Jan 21 2025 Chris Adams <linux@cmadams.net> - 1.2.8-0.31.20250101svn15036
 - update to latest SVN
 - explicitly set C level (due to config function handling)
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.8-0.30.20171022svn14722
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Fri May 10 2024 Chris Adams <linux@cmadams.net> - 1.2.8-0.29.20171022svn14722
diff --git usbauth-notifier/usbauth-notifier.spec usbauth-notifier/usbauth-notifier.spec.tmp
index 4ff2d9c7c7..2c87be7673 100644
--- usbauth-notifier/usbauth-notifier.spec
+++ usbauth-notifier/usbauth-notifier.spec.tmp
@@ -22,66 +22,74 @@
 
 
 Name:           usbauth-notifier
 Version:        1.0.4
 Summary:        Notifier for USB Firewall to use with desktop environments
 URL:            https://github.com/kochstefan/usbauth-all/tree/master/usbauth-notifier
 Source:         https://github.com/kochstefan/usbauth-all/archive/v%{version}.tar.gz
 
-Release:        6%{?dist}
+Release:        7%{?dist}
 # Automatically converted from old format: GPLv2 - review is highly recommended.
 License:        GPL-2.0-only
 
-Requires(pre):  shadow-utils
 Requires:       usbauth
 BuildRequires:  pkgconfig(dbus-1)
 BuildRequires:  pkgconfig(libudev)
 BuildRequires:  libusbauth-configparser-devel
 BuildRequires:  gcc
 BuildRequires:  libnotify-devel
 BuildRequires:  libtool
 BuildRequires:  gettext-devel
 BuildRequires:  pkgconfig
 
 %description
 A notifier for the usbauth firewall against BadUSB attacks. The user could manually allow or deny USB devices.
 
 %prep
 %autosetup -n usbauth-all-%{version} -p1
 
+# Create a sysusers.d config file
+cat >usbauth-notifier.sysusers.conf <<EOF
+g usbauth -
+g usbauth-notifier -
+EOF
+
 %build
 pushd %{name}/
 autoreconf -f -i
 %configure
 %make_build
 popd
 
 %pre
-if ! getent group usbauth>/dev/null; then groupadd -r usbauth; fi
-if ! getent group usbauth-notifier>/dev/null; then groupadd -r usbauth-notifier; fi
-
 %install
 pushd %{name}/
 %make_install
 %find_lang %name
 popd
 
+install -m0644 -D usbauth-notifier.sysusers.conf %{buildroot}%{_sysusersdir}/usbauth-notifier.conf
+
 %files -f %{name}/%name.lang
 %license %{name}/COPYING
 %doc %{name}/README
 %doc %_mandir/*/*
 %dir %_sysconfdir/xdg/autostart
 %_sysconfdir/xdg/autostart/usbauth-notifier.desktop
 %attr(04750,root,usbauth) %_libexecdir/usbauth-npriv
 %dir %attr(00750,root,usbauth-notifier) %_libexecdir/usbauth-notifier
 %attr(02755,root,usbauth) %_libexecdir/usbauth-notifier/usbauth-notifier
+%{_sysusersdir}/usbauth-notifier.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.0.4-7
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.4-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Jul 29 2024 Miroslav Suchý <msuchy@redhat.com> - 1.0.4-5
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.4-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git usbmuxd/usbmuxd.spec usbmuxd/usbmuxd.spec.tmp
index 6ef1d1be3d..0bd74cc8b4 100644
--- usbmuxd/usbmuxd.spec
+++ usbmuxd/usbmuxd.spec.tmp
@@ -18,17 +18,16 @@ BuildRequires:  libtool
 BuildRequires:  make
 BuildRequires:  sed
 BuildRequires:  systemd
 
 BuildRequires:  libimobiledevice-devel
 BuildRequires:  libplist-devel
 BuildRequires:  libusbx-devel
 
-Requires(pre):  shadow-utils
 
 %description
 usbmuxd is a daemon used for communicating with Apple's iPod Touch, iPhone, 
 iPad and Apple TV devices. It allows multiple services on the device to be 
 accessed simultaneously.
 
 %prep
 %autosetup -p1 -n %{name}-%{commit}
@@ -36,30 +35,31 @@ accessed simultaneously.
 %if %{defined commit}
 echo %{version} > .tarball-version
 %endif
 
 # Set the owner of the device node to be usbmuxd
 sed -i.owner 's/OWNER="usbmux"/OWNER="usbmuxd"/' udev/39-usbmuxd.rules.in
 sed -i.user 's/--user usbmux/--user usbmuxd/' systemd/usbmuxd.service.in
 
+# Create a sysusers.d config file
+cat >usbmuxd.sysusers.conf <<EOF
+u usbmuxd 113 'usbmuxd user' / -
+EOF
+
 %build
 NOCONFIGURE=1 ./autogen.sh
 %configure
 %make_build
 
 %install
 %make_install
 
-%pre
-getent group usbmuxd >/dev/null || groupadd -r usbmuxd -g 113
-getent passwd usbmuxd >/dev/null || \
-useradd -r -g usbmuxd -d / -s /sbin/nologin \
-	-c "usbmuxd user" -u 113 usbmuxd
-exit 0
+install -m0644 -D usbmuxd.sysusers.conf %{buildroot}%{_sysusersdir}/usbmuxd.conf
+
 
 %post
 %systemd_post usbmuxd.service
 
 %preun
 %systemd_preun usbmuxd.service
 
 %postun
@@ -67,11 +67,12 @@ exit 0
 
 %files
 %license COPYING.GPLv2 COPYING.GPLv3
 %doc AUTHORS README.md
 %{_unitdir}/usbmuxd.service
 %{_udevrulesdir}/39-usbmuxd.rules
 %{_sbindir}/usbmuxd
 %{_datadir}/man/man8/usbmuxd.8.gz
+%{_sysusersdir}/usbmuxd.conf
 
 %changelog
 %autochangelog
RPMAutoSpec usage detected, not changing the spec file.
diff --git util-linux/util-linux.spec util-linux/util-linux.spec.tmp
index 7d3d4c505c..59d2075443 100644
--- util-linux/util-linux.spec
+++ util-linux/util-linux.spec.tmp
@@ -264,17 +264,16 @@ across a network.
 
 See also the "uuid-devel" package, which is a separate implementation.
 
 
 %package -n uuidd
 Summary: Helper daemon to guarantee uniqueness of time-based UUIDs
 Requires: libuuid = %{version}-%{release}
 License: GPL-2.0-only
-Requires(pre): shadow-utils
 %{?systemd_ordering}
 
 %description -n uuidd
 The uuidd package contains a userspace daemon (uuidd) which guarantees
 uniqueness of time-based UUID generation even at very high rates on
 SMP systems.
 
 
@@ -304,16 +303,21 @@ Summary: Utilities for creating and replaying typescripts of terminal session
 Requires: util-linux = %{version}-%{release}
 
 %description -n util-linux-script
 The utilities scripts, scriptreplay, and scriptlive are used to create and replay terminal sessions.
 
 %prep
 %autosetup -p1 -n %{name}-%{upstream_version}
 
+# Create a sysusers.d config file
+cat >util-linux.sysusers.conf <<EOF
+u uuidd - 'UUID generator helper daemon' /var/lib/libuuid -
+EOF
+
 %build
 unset LINGUAS || :
 
 # enable only when make a change to the build-system
 #./autogen.sh
 
 
 export CFLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 $RPM_OPT_FLAGS"
@@ -455,33 +459,29 @@ find  %{buildroot}%{_mandir}/man8 -regextype posix-egrep  \
 	-regex ".*(linux32|linux64|s390|s390x|i386|ppc|ppc64|ppc32|sparc|sparc64|sparc32|sparc32bash|mips|mips64|mips32|ia64|x86_64|uname26)\.8.*" \
 	-printf "%{_mandir}/man8/%f*\n" >> %{name}.files
 
 %if "%{_sbindir}" == "%{_bindir}"
 # Autotools installation script gets the location wrong :(
 mv -v %{buildroot}/usr/sbin/* %{buildroot}/usr/bin/
 %endif
 
+install -m0644 -D util-linux.sysusers.conf %{buildroot}%{_sysusersdir}/util-linux.conf
+
 %post
 %systemd_post fstrim.{service,timer}
 
 %preun
 %systemd_preun fstrim.{service,timer}
 
 %postun
 %systemd_postun_with_restart fstrim.timer
 %systemd_postun fstrim.service
 
 %pre -n uuidd
-getent group uuidd >/dev/null || groupadd -r uuidd
-getent passwd uuidd >/dev/null || \
-useradd -r -g uuidd -d /var/lib/libuuid -s /sbin/nologin \
-    -c "UUID generator helper daemon" uuidd
-exit 0
-
 # Please, keep uuidd running after installation! Note that systemd_post is
 # "systemctl preset" and it enable/disable service only.
 %post -n uuidd
 %systemd_post uuidd.service
 if [ $1 -eq 1 ] && [ -x /usr/bin/systemctl ]; then
 	# install
 	/usr/bin/systemctl start uuidd.service > /dev/null 2>&1 || :
 fi
@@ -886,16 +886,17 @@ fi
 %license Documentation/licenses/COPYING.GPL-2.0-only
 %{_mandir}/man8/uuidd.8*
 %{_sbindir}/uuidd
 %{_unitdir}/uuidd.*
 %dir %attr(2775, uuidd, uuidd) /var/lib/libuuid
 %dir %attr(2775, uuidd, uuidd) /run/uuidd
 %{compldir}/uuidd
 %{_tmpfilesdir}/uuidd-tmpfiles.conf
+%{_sysusersdir}/util-linux.conf
 
 
 %files -n libfdisk
 %license Documentation/licenses/COPYING.LGPL-2.1-or-later
 %{_libdir}/libfdisk.so.*
 
 %files -n libfdisk-devel
 %license Documentation/licenses/COPYING.LGPL-2.1-or-later
diff --git uwsgi/uwsgi.spec uwsgi/uwsgi.spec.tmp
index cdf2d9f976..8094efe76c 100644
--- uwsgi/uwsgi.spec
+++ uwsgi/uwsgi.spec.tmp
@@ -245,17 +245,17 @@
 %global __python /usr/bin/true
 %endif
 %endif
 %endif
 %endif
 
 Name:           uwsgi
 Version:        2.0.28
-Release:        3%{?dist}
+Release:        4%{?dist}
 Summary:        Fast, self-healing, application container server
 # uwsgi is licensed under GPLv2 with a linking exception
 # docs are licensed under MIT
 # Automatically converted from old format: GPLv2 with exceptions and MIT - review is highly recommended.
 License:        LicenseRef-Callaway-GPLv2-with-exceptions AND LicenseRef-Callaway-MIT
 URL:            https://github.com/unbit/uwsgi
 
 ExcludeArch:    %{ix86}
@@ -365,17 +365,16 @@ BuildRequires:  libargon2-devel
 Obsoletes:      uwsgi-router-access <= 2.0.16
 %endif
 
 Obsoletes:      uwsgi-loggers <= 1.9.8-1
 Obsoletes:      uwsgi-routers <= 2.0.6
 Obsoletes:      uwsgi-plugin-erlang <= 1.9.20-1
 Obsoletes:      uwsgi-plugin-admin <= 2.0.6
 
-Requires(pre):    shadow-utils
 %{?systemd_requires}
 
 %filter_requires_in %{_usrsrc}
 %filter_provides_in %{_usrsrc}
 %filter_provides_in %{_libdir}/uwsgi/.*\.so$
 %filter_setup
 
 %description
@@ -1335,16 +1334,21 @@ cp -p %{SOURCE5} README.Fedora
 %patch -P6 -p1
 %endif
 %if %{with mono}
 %patch -P7 -p1
 %endif
 %patch -P13 -p1
 %patch -P14 -p1
 
+# Create a sysusers.d config file
+cat >uwsgi.sysusers.conf <<EOF
+u uwsgi - 'uWSGI daemon user' /run/uwsgi -
+EOF
+
 %build
 CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini
 %if %{with python2}
 CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --verbose --plugin plugins/python fedora
 CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --verbose --plugin plugins/gevent fedora
 CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --verbose --plugin plugins/tornado fedora
 %endif
 %if %{with python3}
@@ -1492,23 +1496,19 @@ gacutil -i plugins/mono/uwsgi.dll -f -package uwsgi -root %{buildroot}/usr/lib
 %endif
 install -D -p -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/uwsgi.ini
 install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/uwsgi.service
 install -D -p -m 0644 %{SOURCE7} %{buildroot}%{_tmpfilesdir}/uwsgi.conf
 %if %{with mod_proxy_uwsgi}
 install -D -p -m 0755 apache2/.libs/mod_proxy_uwsgi.so %{buildroot}%{_httpd_moddir}/mod_proxy_uwsgi.so
 %endif
 
+install -m0644 -D uwsgi.sysusers.conf %{buildroot}%{_sysusersdir}/uwsgi.conf
+
 
-%pre
-getent group uwsgi >/dev/null || groupadd -r uwsgi
-getent passwd uwsgi >/dev/null || \
-    useradd -r -g uwsgi -d /run/uwsgi -s /sbin/nologin \
-    -c "uWSGI daemon user" uwsgi
-exit 0
 
 %post
 %systemd_post uwsgi.service
 
 %preun
 %systemd_preun uwsgi.service
 
 %postun
@@ -1518,16 +1518,17 @@ exit 0
 %files
 %{_sbindir}/uwsgi
 %config(noreplace) %{_sysconfdir}/uwsgi.ini
 %{_unitdir}/uwsgi.service
 %{_tmpfilesdir}/uwsgi.conf
 %dir %{_sysconfdir}/uwsgi.d
 %doc README README.Fedora CHANGELOG
 %license LICENSE
+%{_sysusersdir}/uwsgi.conf
 
 %files -n uwsgi-devel
 %{_includedir}/uwsgi
 %{_usrsrc}/uwsgi
 
 %if %{with python2}
 %files -n python2-uwsgidecorators
 %{python2_sitelib}/uwsgidecorators.py*
@@ -1959,16 +1960,19 @@ exit 0
 
 %if %{with mod_proxy_uwsgi}
 %files -n mod_proxy_uwsgi
 %{_httpd_moddir}/mod_proxy_uwsgi.so
 %endif
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.0.28-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.28-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Jan 08 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 2.0.28-2
 - Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.4
 
 * Sun Oct 27 2024 Ralf Ertzinger <ralf@skytale.net> - 2.0.28-1
 - Update to 2.0.28, drop merged patches
diff --git vfrnav/vfrnav.spec vfrnav/vfrnav.spec.tmp
index 2eeef3ce82..aaa5474879 100644
--- vfrnav/vfrnav.spec
+++ vfrnav/vfrnav.spec.tmp
@@ -1,11 +1,11 @@
 Name:           vfrnav
 Version:        20230429
-Release:        17%{?dist}
+Release:        18%{?dist}
 Summary:        VFR/IFR Navigation
 
 License:        GPL-2.0-or-later
 URL:            https://gitlab.com/tsailer/vfrnav/
 Source:         https://gitlab.com/tsailer/vfrnav/-/archive/%{version}/%{name}-%{version}.tar.bz2
 Patch:          vfrnav-octave-colors.patch
 Patch:          vfrnav-compile.patch
 
@@ -233,16 +233,21 @@ Requires:       httpd
 %description webservice
 This package contains a webservice for the CFMU Autorouter.
 %endif
 
 %prep
 %autosetup -p1
 autoreconf -fiv
 
+# Create a sysusers.d config file
+cat >vfrnav.sysusers.conf <<EOF
+u vfrnav - 'Special user account to be used by vfrnav cfmuautoroute/cfmuvalidate services' /var/lib/vfrnav -
+EOF
+
 %build
 CXXFLAGS=`echo %optflags | sed -e 's/-O2//'`
 export CXXFLAGS
 CFLAGS=`echo %optflags | sed -e 's/-O2//'`
 export CFLAGS
 %configure
 %make_build
 # build selinux module
@@ -310,21 +315,18 @@ rm -f $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/cfmuautoroute
 %if %{with wetterdl}
 %else
 rm -f $RPM_BUILD_ROOT/%{_bindir}/wetterdl.py
 rm -f $RPM_BUILD_ROOT/%{_datadir}/applications/wetterdl.desktop
 rm -f $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/32x32/apps/wetterdl.png
 rm -f $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/48x48/apps/wetterdl.png
 %endif
 
-%pre validatorservice
-getent group vfrnav &>/dev/null || groupadd -r vfrnav
-getent passwd vfrnav &>/dev/null || \
-useradd -g vfrnav -d /var/lib/vfrnav -M -r -s /sbin/nologin \
-    -c "Special user account to be used by vfrnav cfmuautoroute/cfmuvalidate services" vfrnav
+install -m0644 -D vfrnav.sysusers.conf %{buildroot}%{_sysusersdir}/vfrnav.conf
+
 
 %post selinux
 /usr/sbin/semodule -i %{_datadir}/selinux/packages/%{name}/%{name}.pp >/dev/null 2>&1 || :
 
 %postun selinux
 if [ $1 -eq 0 ] ; then
     /usr/sbin/semodule -r %{name} >/dev/null 2>&1 || :
 fi
@@ -455,31 +457,35 @@ fi
 
 %files validatorservice
 /lib/systemd/system/cfmuvalidate.service
 /lib/systemd/system/cfmuvalidate.socket
 %config(noreplace) %{_sysconfdir}/sysconfig/cfmuvalidate
 %dir %attr(0755,vfrnav,vfrnav) /run/vfrnav
 %dir %attr(0750,vfrnav,vfrnav) /run/vfrnav/validator
 %dir %attr(0750,vfrnav,vfrnav) /var/lib/vfrnav
+%{_sysusersdir}/vfrnav.conf
 
 %files selinux
 %{_datadir}/selinux/packages/%{name}/vfrnav.pp
 
 %if %{with webservice}
 %files webservice
 /lib/systemd/system/cfmuautoroute@.service
 /lib/systemd/system/cfmuautoroute@.socket
 %config(noreplace) %{_sysconfdir}/sysconfig/cfmuautoroute
 %dir %{_sysconfdir}/vfrnav
 %config(noreplace) %attr(0660,vfrnav,apache) %{_sysconfdir}/vfrnav/autoroute.db
 %dir %attr(0750,vfrnav,apache) /run/vfrnav/autoroute
 %endif
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 20230429-18
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 20230429-17
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Tue Jan 07 2025 Thomas Sailer <fedora@tsailer.ch> - 20230429-16
 - fixes for octave 9
 
 * Mon Dec 23 2024 Björn Esser <besser82@fedoraproject.org> - 20230429-15
 - Rebuild (libpqxx)
diff --git vnstat/vnstat.spec vnstat/vnstat.spec.tmp
index 69022fc895..27cdbcb3ac 100644
--- vnstat/vnstat.spec
+++ vnstat/vnstat.spec.tmp
@@ -1,19 +1,18 @@
 Summary: Console-based network traffic monitor
 Name: vnstat
 Version: 2.10
-Release: 7%{?dist}
+Release: 8%{?dist}
 
 # Automatically converted from old format: GPLv2 - review is highly recommended.
 License: GPL-2.0-only
 URL: http://humdi.net/vnstat/
 Source0: http://humdi.net/vnstat/vnstat-%{version}.tar.gz
 Patch0: vnstat.service.patch
-Requires(pre): shadow-utils
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 BuildRequires: make
 BuildRequires: gcc
 BuildRequires: gd-devel
 BuildRequires: systemd
 BuildRequires: sqlite-devel
@@ -38,16 +37,21 @@ be outputted either to a file or to standard output.
 %setup -q
 %patch -P0 -p1
 
 # disable maximum bandwidth setting and change pidfile location
 sed -i -e "s,/var/run/,/run/vnstat/,g; \
 	s,MaxBandwidth 100,MaxBandwidth 0,g;" \
 	cfg/vnstat.conf
 
+# Create a sysusers.d config file
+cat >vnstat.sysusers.conf <<EOF
+u vnstat - 'vnStat user' %{_localstatedir}/lib/%{name} -
+EOF
+
 %build
 %{configure}
 %{__make} %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS" all
 
 %install
 %{__mkdir_p} $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}
 %{__mkdir_p} $RPM_BUILD_ROOT%{_unitdir}
 %{__mkdir_p} $RPM_BUILD_ROOT%{_tmpfilesdir}
@@ -61,21 +65,18 @@ sed -i -e "s,/var/run/,/run/vnstat/,g; \
 %{__rm} -rf examples/systemd
 %{__rm} -rf examples/launchd
 %{__rm} -rf examples/upstart
 
 %{__cat} >> $RPM_BUILD_ROOT/%{_tmpfilesdir}/%{name}.conf << END
 D /run/vnstat 0700 vnstat vnstat
 END
 
-%pre
-getent group %{name} > /dev/null || groupadd -r %{name}
-getent passwd %{name} > /dev/null || useradd -r -g %{name} -M \
-  -d %{_localstatedir}/lib/%{name} -s /sbin/nologin -c "vnStat user" %{name}
-exit 0
+install -m0644 -D vnstat.sysusers.conf %{buildroot}%{_sysusersdir}/vnstat.conf
+
 
 %post
 %systemd_post vnstat.service
 
 %preun
 %systemd_preun vnstat.service
 
 %postun
@@ -89,23 +90,27 @@ exit 0
 %{_tmpfilesdir}/%{name}.conf
 %{_mandir}/man1/vnstat.1*
 %{_mandir}/man5/vnstat.conf.5*
 %{_mandir}/man8/vnstatd.8*
 %{_bindir}/vnstat
 %{_sbindir}/vnstatd
 %attr(-,vnstat,vnstat)%dir /run/%{name}/
 %attr(-,vnstat,vnstat)%{_localstatedir}/lib/%{name}
+%{_sysusersdir}/vnstat.conf
 
 %files vnstati
 %license COPYING
 %{_mandir}/man1/vnstati.1*
 %{_bindir}/vnstati
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.10-8
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.10-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Jul 29 2024 Miroslav Suchý <msuchy@redhat.com> - 2.10-6
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.10-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git voms/voms.spec voms/voms.spec.tmp
index 6ac26cb86c..98c66f4b2a 100644
--- voms/voms.spec
+++ voms/voms.spec.tmp
@@ -1,13 +1,13 @@
 %global _hardened_build 1
 
 Name:		voms
 Version:	2.1.0
-Release:	4%{?dist}
+Release:	5%{?dist}
 Summary:	Virtual Organization Membership Service
 
 License:	Apache-2.0
 URL:		https://italiangrid.github.io/voms/
 Source0:	https://github.com/italiangrid/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
 #		Post-install setup instructions:
 Source1:	%{name}.INSTALL
 #		https://github.com/italiangrid/voms/pull/140
@@ -84,17 +84,16 @@ certificates and SAML assertions used in the Grid environment for
 authorization purposes.
 
 This package provides command line applications to access the VOMS
 services.
 
 %package server
 Summary:	Virtual Organization Membership Service Server
 Requires:	%{name}%{?_isa} = %{version}-%{release}
-%{?sysusers_requires_compat}
 %{?systemd_requires}
 
 %description server
 The Virtual Organization Membership Service (VOMS) is an attribute authority
 which serves as central repository for VO user authorization information,
 providing support for sorting users into group hierarchies, keeping track of
 their roles and other attributes in order to issue trusted attribute
 certificates and SAML assertions used in the Grid environment for
@@ -105,16 +104,21 @@ This package provides the VOMS service.
 %prep
 %setup -q
 %patch -P0 -p1
 
 ./autogen.sh
 
 install -m 644 -p %{SOURCE1} README.Fedora
 
+# Create a sysusers.d config file
+cat >voms.sysusers.conf <<EOF
+u voms - 'VOMS Server Account' %{_sysconfdir}/%{name} -
+EOF
+
 %build
 %configure --disable-static --enable-docs --disable-parser-gen
 
 %make_build
 
 %install
 %make_install
 
@@ -140,26 +144,24 @@ for b in voms-proxy-init voms-proxy-info voms-proxy-destroy; do
   ln -s %{_bindir}/${b}2 %{buildroot}%{_sysconfdir}/alternatives/${b}
   ln -s %{_sysconfdir}/alternatives/${b} %{buildroot}%{_bindir}/${b}
   ## and man pages
   mv %{buildroot}%{_mandir}/man1/${b}.1 %{buildroot}%{_mandir}/man1/${b}2.1
   ln -s %{_mandir}/man1/${b}2.1.gz %{buildroot}%{_sysconfdir}/alternatives/${b}.1.gz
   ln -s %{_sysconfdir}/alternatives/${b}.1.gz %{buildroot}%{_mandir}/man1/${b}.1.gz
 done
 
+install -m0644 -D voms.sysusers.conf %{buildroot}%{_sysusersdir}/voms.conf
+
 %posttrans
 # Recover /etc/vomses...
 if [ -r %{_sysconfdir}/vomses.rpmsave -a ! -r %{_sysconfdir}/vomses ] ; then
    mv %{_sysconfdir}/vomses.rpmsave %{_sysconfdir}/vomses
 fi
 
-%pre server
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || useradd -r -g %{name} \
-    -d %{_sysconfdir}/%{name} -s /sbin/nologin -c "VOMS Server Account" %{name}
 
 %post server
 if [ $1 -eq 1 ] ; then
     systemctl daemon-reload >/dev/null 2>&1 || :
 fi
 
 %preun server
 if [ $1 -eq 0 ] ; then
@@ -288,18 +290,22 @@ fi
 %{_datadir}/%{name}/upgrade1to2
 %{_datadir}/%{name}/voms.data
 %{_datadir}/%{name}/voms_install_db
 %{_datadir}/%{name}/voms-ping
 %{_datadir}/%{name}/voms_replica_master_setup.sh
 %{_datadir}/%{name}/voms_replica_slave_setup.sh
 %{_mandir}/man8/voms.8*
 %doc README.Fedora
+%{_sysusersdir}/voms.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.1.0-5
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 2.1.0-4
 - Fix compilation with GCC 15
 
 * Thu Oct 31 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 2.1.0-3
 - Rebuild for gsoap 2.8.135 (Fedora 42)
 - Add additional ghost files to package (rpmlint)
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-2
diff --git vsomeip3/vsomeip3.spec vsomeip3/vsomeip3.spec.tmp
index dcc3ba3215..bfa53c4adf 100644
--- vsomeip3/vsomeip3.spec
+++ vsomeip3/vsomeip3.spec.tmp
@@ -1,11 +1,11 @@
 Name:    vsomeip3
 Version: 3.3.8
-Release: 5%{?dist}
+Release: 6%{?dist}
 Summary: COVESA implementation of SOME/IP protocol
 
 License: MPL-2.0 AND BSL-1.0
 URL:     https://github.com/COVESA/vsomeip
 Source0: %{URL}/archive/%{VERSION}/vsomeip-%{VERSION}.tar.gz
 Source1: routingmanagerd.service
 Source2: routingmanagerd.socket
 Source3: tmpfiles-vsomeip.conf
@@ -64,17 +64,16 @@ BuildArch:      noarch
 %{?selinux_requires}
 
 %description selinux
 This package contains the SELinux policy module for %{name}.
 
 %package routingmanager
 Summary: Routingmanager daemon %{name}
 Requires: %{name}%{?_isa} = %{version}-%{release}
-Requires(pre): shadow-utils
 Requires: systemd
 
 %description routingmanager
 %{summary}.
 
 %package examples
 Summary: Examples for %{name}
 Requires: %{name}%{?_isa} = %{version}-%{release}
@@ -103,16 +102,21 @@ Requires: %{name}-compat%{?_isa} = %{version}-%{release}
 %autosetup -n vsomeip-%{version} -p1 
 mkdir vsomeip-selinux
 cp %{SOURCE5} %{SOURCE6} %{SOURCE7} vsomeip-selinux/
 
 # For some reasons, some source files are executable, which messes
 # with debuginfo
 find -name "*.[ch]pp" | xargs chmod a-x
 
+# Create a sysusers.d config file
+cat >vsomeip3.sysusers.conf <<EOF
+u routingmanagerd - 'User for routingmanagerd' /var/lib/routingmanagerd -
+EOF
+
 %ldconfig_scriptlets
 
 %ldconfig_scriptlets compat
 
 %build
 %cmake \
        -DENABLE_SIGNAL_HANDLING=OFF  \
        -DENABLE_CONFIGURATION_OVERLAYS=ON \
@@ -154,31 +158,26 @@ install -m 0644 %{SOURCE3} %{buildroot}%{_tmpfilesdir}/%{name}.conf
 
 mkdir -p %{buildroot}%{_sysconfdir}
 install -m 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/vsomeip.json
 
 mkdir -p %{buildroot}%{_datadir}/selinux/packages/ %{buildroot}%{_datadir}/selinux/devel/include/contrib/
 install -m 0644 vsomeip-selinux/vsomeip.pp.bz2 %{buildroot}%{_datadir}/selinux/packages/
 install -m 0644 vsomeip-selinux/vsomeip.if %{buildroot}%{_datadir}/selinux/devel/include/contrib/
 
+install -m0644 -D vsomeip3.sysusers.conf %{buildroot}%{_sysusersdir}/vsomeip3.conf
+
 %post selinux
 %selinux_modules_install %{_datadir}/selinux/packages/vsomeip.pp.bz2
 
 %postun selinux
 if [ $1 -eq 0 ]; then
     %selinux_modules_uninstall %{_datadir}/selinux/packages/vsomeip.pp.bz2
 fi
 
-%pre routingmanager
-## This creates the users that are needed for routingmanagerd
-getent group routingmanagerd >/dev/null || groupadd -r routingmanagerd
-getent passwd routingmanagerd >/dev/null || \
-    useradd -r -g routingmanagerd -d /var/lib/routingmanagerd -s /sbin/nologin \
-    -c "User for routingmanagerd" routingmanagerd
-exit 0
 
 %post routingmanager
 %systemd_post routingmanagerd.socket routingmanagerd.service
 
 %preun routingmanager
 %systemd_preun routingmanagerd.socket routingmanagerd.service
 
 %postun routingmanager
@@ -203,16 +202,17 @@ exit 0
 
 %files routingmanager
 %doc AUTHORS CHANGES README.md
 %license LICENSE LICENSE_boost
 %attr(755,routingmanagerd,routingmanagerd) %dir /var/lib/routingmanagerd
 %{_bindir}/routingmanagerd
 %{_unitdir}/routingmanagerd.service
 %{_unitdir}/routingmanagerd.socket
+%{_sysusersdir}/vsomeip3.conf
 
 %files tools
 %doc AUTHORS CHANGES README.md
 %license LICENSE LICENSE_boost
 %{_bindir}/vsomeip_ctrl
 
 %files examples
 %doc AUTHORS CHANGES README.md
@@ -235,16 +235,19 @@ exit 0
 %license LICENSE LICENSE_boost
 %{_includedir}/vsomeip
 %{_libdir}/libvsomeip3.so
 %{_libdir}/libvsomeip3-*.so
 %{_libdir}/cmake/vsomeip3
 %{_libdir}/pkgconfig/vsomeip3.pc
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.3.8-6
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git webalizer/webalizer.spec webalizer/webalizer.spec.tmp
index 85ca2501bb..58cbe55163 100644
--- webalizer/webalizer.spec
+++ webalizer/webalizer.spec.tmp
@@ -5,17 +5,17 @@
 %global db_devel  db4-devel
 %else
 %global db_devel  libdb-devel
 %endif
 
 Name: webalizer
 Summary: A flexible Web server log file analysis program
 Version: 2.23_08
-Release: 27%{?dist}
+Release: 28%{?dist}
 URL: http://www.mrunix.net/webalizer/
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License: GPL-2.0-or-later
 Source0: ftp://ftp.mrunix.net/pub/webalizer/%{name}-%{ver}-%{patchlevel}-src.tgz
 Source1: webalizer.conf
 Source2: webalizer.cron
 Source3: webalizer-httpd.conf
 Source4: webalizer.sysconfig
@@ -28,17 +28,16 @@ Patch21: 02_fix_a_spelling_error.diff
 Patch22: 04_Fix_cast_warnings_in_output.c.diff
 Patch23: 14_add_search_engines.diff
 Patch24: 17_fix_typo_supress_suppress_in_sample.conf.diff
 Patch25: 27_fix_compilation_with_gcc-10.diff
 BuildRequires: make
 BuildRequires:  gcc
 BuildRequires: gd-devel, %{db_devel}, bzip2-devel
 BuildRequires: GeoIP-devel
-Requires(pre): shadow-utils
 Requires: httpd, crontabs
 
 %description
 The Webalizer is a Web server log analysis program. It is designed to
 scan Web server log files in various formats and produce usage
 statistics in HTML format for viewing through a browser. It produces
 professional looking graphs which make analyzing when and where your
 Web traffic is coming from easy.
@@ -50,16 +49,21 @@ Web traffic is coming from easy.
 %patch -P9 -p1 -b .groupvisit
 %patch -P10 -p1 -b .memmove
 %patch -P21 -p1 -b .spelling_error
 %patch -P22 -p1 -b .cast_warnings
 %patch -P23 -p1 -b .sample_add_search_engines
 %patch -P24 -p1 -b .sample_typo
 %patch -P25 -p1 -b .gcc10_common_support
 
+# Create a sysusers.d config file
+cat >webalizer.sysusers.conf <<EOF
+u webalizer - 'Webalizer' %{_localstatedir}/www/usage -
+EOF
+
 %build
 #CPPFLAGS="-I%{_includedir}/db4" ; export CPPFLAGS
 #CFLAGS="$RPM_OPT_FLAGS $CPPFLAGS -D_GNU_SOURCE" ; export CFLAGS
 %configure --enable-dns --enable-bz2 --enable-geoip
 
 %make_build
 
 %install
@@ -78,36 +82,36 @@ mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d
 install -p -m 644 %{SOURCE3} \
         %{buildroot}%{_sysconfdir}/httpd/conf.d/webalizer.conf
 mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
 install -p -m 644 %{SOURCE4} \
         %{buildroot}%{_sysconfdir}/sysconfig/webalizer
 
 rm -f %{buildroot}%{_sysconfdir}/webalizer.conf.sample
 
-%pre
-getent group webalizer >/dev/null || groupadd -r webalizer
-getent passwd webalizer >/dev/null || \
-    useradd -r -g webalizer -d %{_localstatedir}/www/usage -s /sbin/nologin \
-    -c "Webalizer" webalizer
-exit 0
+install -m0644 -D webalizer.sysusers.conf %{buildroot}%{_sysusersdir}/webalizer.conf
+
 
 %files
 %doc README
 %{_mandir}/man1/*.1*
 %{_bindir}/*
 %config(noreplace) %{_sysconfdir}/webalizer.conf
 %{_sysconfdir}/cron.daily/00webalizer
 %config(noreplace) %{_sysconfdir}/httpd/conf.d/webalizer.conf
 %config(noreplace) %{_sysconfdir}/sysconfig/webalizer
 %attr(-, webalizer, root) %dir %{_localstatedir}/www/usage
 %attr(-, webalizer, root) %dir %{_localstatedir}/lib/webalizer
 %attr(-, webalizer, root) %{_localstatedir}/www/usage/*.png
+%{_sysusersdir}/webalizer.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.23_08-28
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.23_08-27
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 2.23_08-26
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.23_08-25
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git wsdd/wsdd.spec wsdd/wsdd.spec.tmp
index f86f6abee6..a32df4ffd7 100644
--- wsdd/wsdd.spec
+++ wsdd/wsdd.spec.tmp
@@ -1,21 +1,20 @@
 Name:           wsdd
 Version:        0.8
-Release:        3%{?dist}
+Release:        4%{?dist}
 Summary:        Web Services Dynamic Discovery host daemon
 License:        MIT 
 URL:            https://github.com/christgau/wsdd 
 Source0:        https://github.com/christgau/wsdd/archive/v%{version}/wsdd-%{version}.tar.gz
 
 Patch:          Modify-systemd-service-for-Fedora.patch
 
 BuildArch:      noarch
 BuildRequires:  systemd
-Requires(pre):  shadow-utils
 
 
 %description
 wsdd implements a Web Service Discovery host daemon. This enables (Samba)
 hosts, like your local NAS device, to be found by Web Service Discovery Clients
 like Windows.
 
 
@@ -26,23 +25,24 @@ like Windows.
 %install
 install -pDm644 etc/firewalld/services/wsdd.xml %{buildroot}%{_usr}/lib/firewalld/services/wsdd.xml
 install -pDm644 etc/firewalld/services/wsdd-http.xml %{buildroot}%{_usr}/lib/firewalld/services/wsdd-http.xml
 install -pDm644 etc/systemd/wsdd.defaults %{buildroot}%{_sysconfdir}/sysconfig/wsdd
 install -pDm644 etc/systemd/wsdd.service %{buildroot}%{_unitdir}/wsdd.service
 install -pDm644 man/wsdd.8 %{buildroot}%{_mandir}/man8/wsdd.8
 install -pDm755 src/wsdd.py %{buildroot}%{_bindir}/wsdd
 
+# Create a sysusers.d config file
+cat >wsdd.sysusers.conf <<EOF
+u wsdd - '%{summary}' / -
+EOF
+
+install -m0644 -D wsdd.sysusers.conf %{buildroot}%{_sysusersdir}/wsdd.conf
+
 
-%pre
-getent group wsdd >/dev/null || groupadd -r wsdd
-getent passwd wsdd >/dev/null || \
-    useradd -r -g wsdd -d / -s /sbin/nologin \
-    -c "%{summary}" wsdd
-exit 0
 
 %post
 %systemd_post wsdd.service
 
 %preun
 %systemd_preun wsdd.service
 
 %postun
@@ -52,19 +52,23 @@ exit 0
 %{_unitdir}/wsdd.service
 %{_usr}/lib/firewalld/services/wsdd.xml
 %{_usr}/lib/firewalld/services/wsdd-http.xml
 %config(noreplace) %{_sysconfdir}/sysconfig/wsdd
 %{_bindir}/wsdd
 %{_mandir}/man8/wsdd.8*
 %license LICENSE
 %doc AUTHORS README.md
+%{_sysusersdir}/wsdd.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.8-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.8-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.8-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
 
 * Wed Apr 17 2024 Ondrej Holy <oholy@redhat.com> - 0.8.0-1
 - Update to 0.8
diff --git x2godesktopsharing/x2godesktopsharing.spec x2godesktopsharing/x2godesktopsharing.spec.tmp
index 302a7091f7..e10bc5a3bd 100644
--- x2godesktopsharing/x2godesktopsharing.spec
+++ x2godesktopsharing/x2godesktopsharing.spec.tmp
@@ -1,11 +1,11 @@
 Name:           x2godesktopsharing
 Version:        3.2.0.0
-Release:        16%{?dist}
+Release:        17%{?dist}
 Summary:        Share X11 desktops with other users via X2Go
 
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:        GPL-2.0-or-later
 URL:            https://www.x2go.org
 Source0:        https://code.x2go.org/releases/source/%{name}/%{name}-%{version}.tar.gz
 
 BuildRequires: make
@@ -27,16 +27,21 @@ X2Go Desktop Sharing is an X2Go add-on tool that allows a user to
 grant other X2Go users access to the current session (shadow session
 support). The current session may be an X2Go session itself or simply
 a local X11 session.
 
 
 %prep
 %setup -q
 
+# Create a sysusers.d config file
+cat >x2godesktopsharing.sysusers.conf <<EOF
+g x2godesktopsharing -
+EOF
+
 
 %build
 lrelease-qt5 x2godesktopsharing.pro
 %{qmake_qt5}
 %make_build
 
 
 %install
@@ -49,36 +54,39 @@ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/{16x16,32x32,64x64,128x128}/apps
 install -p -m 644 icons/128x128/%{name}.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/%{name}.png
 install -p -m 644 icons/16x16/%{name}.png %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/%{name}.png
 install -p -m 644 icons/64x64/%{name}.png %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/%{name}.png
 install -p -m 644 icons/32x32/%{name}.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/%{name}.png
 mkdir -p %{buildroot}%{_datadir}/x2go/versions
 install -p -m 644 VERSION.x2godesktopsharing %{buildroot}%{_datadir}/x2go/versions/VERSION.x2godesktopsharing
 cp -rp man %{buildroot}%{_datadir}/
 
+install -m0644 -D x2godesktopsharing.sysusers.conf %{buildroot}%{_sysusersdir}/x2godesktopsharing.conf
+
 
-%pre
-# Needed for sharing a desktop with another user
-getent group x2godesktopsharing >/dev/null || groupadd -r x2godesktopsharing
 
 %files
 %license COPYING
 %doc ChangeLog
 %{_bindir}/%{name}
 %{_datadir}/applications/%{name}.desktop
 %{_datadir}/%{name}/
 %{_datadir}/icons/hicolor/128x128/apps/%{name}.png
 %{_datadir}/icons/hicolor/16x16/apps/%{name}.png
 %{_datadir}/icons/hicolor/32x32/apps/%{name}.png
 %{_datadir}/icons/hicolor/64x64/apps/%{name}.png
 %{_datadir}/x2go/versions/VERSION.x2godesktopsharing
 %{_mandir}/man1/%{name}.1.gz
+%{_sysusersdir}/x2godesktopsharing.conf
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.2.0.0-17
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.2.0.0-16
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 3.2.0.0-15
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.2.0.0-14
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git x2goserver/x2goserver.spec x2goserver/x2goserver.spec.tmp
index a3acf88e91..bde7dae8ba 100644
--- x2goserver/x2goserver.spec
+++ x2goserver/x2goserver.spec.tmp
@@ -1,13 +1,13 @@
 #global commit 3a0d285b225207b3eccbb7b0ec3f27a2fbdc5be3
 
 Name:           x2goserver
 Version:        4.1.0.6
-Release:        6%{?dist}
+Release:        7%{?dist}
 Summary:        X2Go Server
 
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:        GPL-2.0-or-later
 URL:            http://www.x2go.org
 Source0:        http://code.x2go.org/releases/source/%{name}/%{name}-%{version}.tar.gz
 # git clone git://code.x2go.org/x2goserver
 # cd x2goserver
@@ -48,17 +48,16 @@ Requires:       sshfs
 # For /etc/sudoers.d
 Requires:       sudo
 Requires:       which
 Requires:       x2goagent = %{version}-%{release}
 Requires:       x2goserver-common = %{version}-%{release}
 Requires:       xorg-x11-fonts-misc
 Requires:       xorg-x11-xauth
 Requires:       xwininfo
-Requires(pre):  shadow-utils
 Requires(post): coreutils
 Requires(post): grep
 Requires(post): perl-X2Go-Server-DB
 Requires(post): x2goserver-common
 
 %if 0%{?fedora} || 0%{?rhel} >= 7
 %{?systemd_requires}
 %endif
@@ -94,17 +93,16 @@ X2Go is a server based computing environment with
 This package contains the main daemon and tools for X2Go server-side session
 administrations.
 
 
 %package common
 Summary:        X2Go Server (common files)
 # for useradd/groupadd
 BuildRequires:  shadow-utils
-Requires(pre):  shadow-utils
 BuildArch:      noarch
 
 %description common
 X2Go is a server based computing environment with
     - session resuming
     - low bandwidth support
     - session brokerage support
     - client side mass storage mounting support
@@ -323,16 +321,21 @@ cached client-side.
 
 
 %prep
 %autosetup -p1
 
 # Don't try to be root
 sed -i -e 's/-o root -g root//' */Makefile
 
+# Create a sysusers.d config file
+cat >x2goserver.sysusers.conf <<EOF
+u x2gouser - 'x2go' /var/lib/x2go -
+EOF
+
 
 %build
 export PATH=%{_qt4_bindir}:$PATH
 %make_build CFLAGS="%{optflags}" PERL_INSTALLDIRS=vendor PREFIX=%{_prefix} NXLIBDIR=%{_libdir}/nx LIBDIR=%{_libdir}/x2go
 
 
 %install
 make install DESTDIR=%{buildroot} PREFIX=%{_prefix} NXLIBDIR=%{_libdir}/nx LIBDIR=%{_libdir}/x2go
@@ -366,23 +369,19 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/x2gofm.desktop
 # applications link
 ln -s ../..%{_datadir}/applications %{buildroot}%{_sysconfdir}/x2go/applications
 
 # Delete tmpfiles.d configuration file on systems not using systemd.
 %if 0%{?rhel} && 0%{?rhel} == 6
 rm -f %{buildroot}/etc/tmpfiles.d/x2goserver.conf
 %endif
 
+install -m0644 -D x2goserver.sysusers.conf %{buildroot}%{_sysusersdir}/x2goserver.conf
+
 
-%pre common
-getent group x2gouser >/dev/null || groupadd -r x2gouser
-getent passwd x2gouser >/dev/null || \
-    useradd -r -g x2gouser -d /var/lib/x2go -s /sbin/nologin \
-    -c "x2go" x2gouser
-exit 0
 
 %post
 # Initialize the session database
 [ ! -s %{_sharedstatedir}/x2go/x2go_sessions ] &&
     grep -E "^backend=sqlite.*" /etc/x2go/x2gosql/sql >/dev/null 2>&1 &&
     %{_sbindir}/x2godbadmin --createdb >/dev/null 2>&1 || :
 
 # Update the session database
@@ -506,16 +505,17 @@ exit 0
 %dir %{_sysconfdir}/x2go/x2gosql
 %dir %{_sysconfdir}/x2go/x2gosql/passwords
 %config(noreplace) %{_sysconfdir}/x2go/x2goserver.conf
 %config(noreplace) %{_sysconfdir}/x2go/x2gosql/sql
 %config(noreplace) %{_sysconfdir}/x2go/x2go_logout*
 %{_mandir}/man5/x2goserver.conf.5.gz
 %dir %{_datadir}/x2go/versions
 %{_datadir}/x2go/versions/VERSION.x2goserver-common
+%{_sysusersdir}/x2goserver.conf
 
 %files desktopsharing
 %license COPYING
 %doc ChangeLog
 %{_bindir}/x2go*-desktopsharing
 %{_datadir}/x2go/versions/VERSION.x2goserver-desktopsharing
 %{_datadir}/x2go/x2gofeature.d/x2goserver-desktopsharing.features
 %{_mandir}/man8/x2go*-desktopsharing.8*
@@ -595,16 +595,19 @@ exit 0
 %license COPYING
 %doc ChangeLog
 %{_datadir}/x2go/versions/VERSION.x2goserver-x2gokdrive
 %{_datadir}/x2go/x2gofeature.d/x2goserver-x2gokdrive.features
 %config(noreplace) %{_sysconfdir}/x2go/x2gokdrive.options
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.1.0.6-7
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.0.6-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 4.1.0.6-5
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.0.6-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
diff --git xpilot-ng/xpilot-ng.spec xpilot-ng/xpilot-ng.spec.tmp
index a9056673a4..7b36b7b514 100644
--- xpilot-ng/xpilot-ng.spec
+++ xpilot-ng/xpilot-ng.spec.tmp
@@ -1,15 +1,15 @@
 %global logwatch_root %{_datadir}/logwatch
 %global logwatch_conf %{logwatch_root}/dist.conf
 %global logwatch_scripts %{logwatch_root}/scripts
 
 Name:           xpilot-ng
 Version:        4.7.3
-Release:        34%{?dist}
+Release:        35%{?dist}
 Summary:        Space arcade game for multiple players
 
 # Automatically converted from old format: GPLv2+ - review is highly recommended.
 License:        GPL-2.0-or-later
 URL:            http://xpilot.sourceforge.net
 Source0:        http://downloads.sourceforge.net/sourceforge/xpilot/xpilot-ng-%{version}.tar.gz
 Source1:        xpilot-ng.png
 Source2:        xpilot-ng-sdl.desktop
@@ -63,17 +63,16 @@ Requires:       %{name}-engine = %{version}-%{release} dejavu-sans-fonts
 %description data
 Data files for %{name}.
 
 
 %package server
 Summary:        Server for hosting xpilot games
 Requires:       %{name}-data = %{version}-%{release}
 Requires:       logrotate
-Requires(pre):  shadow-utils
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 BuildRequires:  systemd
 Provides:       %{name}-engine = %{version}-%{release}
 # Make sure the old no longer supported selinux policy from 4.7.2 gets removed
 Obsoletes:      %{name}-selinux < %{version}-%{release}
 Provides:       %{name}-selinux = %{version}-%{release}
@@ -107,16 +106,21 @@ iconv --from=ISO-8859-1 --to=UTF-8 xpilot-ng-x11.man > xpilot-ng-x11.man.new
 touch -r xpilot-ng-x11.man xpilot-ng-x11.man.new
 mv xpilot-ng-x11.man.new xpilot-ng-x11.man
 popd
 
 iconv --from=ISO-8859-1 --to=UTF-8 AUTHORS > AUTHORS.new
 touch -r AUTHORS AUTHORS.new
 mv AUTHORS.new AUTHORS
 
+# Create a sysusers.d config file
+cat >xpilot-ng.sysusers.conf <<EOF
+u xpilot - 'xpilot game server' %{_datadir}/%{name} -
+EOF
+
 
 %build
 %configure --enable-sound
 iconv --from=ISO-8859-1 --to=UTF-8 README -o README
 touch -r README.in README
 make %{?_smp_mflags}
 
 
@@ -153,22 +157,18 @@ ln -s %{_datadir}/fonts/dejavu/DejaVuSansMono-Bold.ttf $RPM_BUILD_ROOT%{_datadir
 
 
 # Install logwatch files
 install -pD -m 0644 %{SOURCE10} $RPM_BUILD_ROOT%{logwatch_conf}/logfiles/%{name}.conf
 install -pD -m 0644 %{SOURCE11} $RPM_BUILD_ROOT%{logwatch_scripts}/services/%{name}
 install -pD -m 0644 %{SOURCE12} $RPM_BUILD_ROOT%{logwatch_conf}/services/%{name}.conf
 install -pD -m 0644 %{SOURCE13} $RPM_BUILD_ROOT%{logwatch_scripts}/shared/applyxpilotdate
 
-%pre server
-getent group xpilot >/dev/null || groupadd -r xpilot
-getent passwd xpilot >/dev/null || \
-useradd -r -g xpilot -d %{_datadir}/%{name} -s /sbin/nologin \
-    -c "xpilot game server" xpilot
-exit 0
+install -m0644 -D xpilot-ng.sysusers.conf %{buildroot}%{_sysusersdir}/xpilot-ng.conf
+
 
 %post server
 %systemd_post xpilot-ng-server.service
 
 %preun server
 %systemd_preun xpilot-ng-server.service
 
 %postun server
@@ -207,25 +207,29 @@ exit 0
 %exclude %{_datadir}/%{name}/sound
 %{_datadir}/appdata/xpilot-ng-server.metainfo.xml
 %dir %{_sysconfdir}/%{name}
 %config(noreplace) %attr(0600,xpilot,root) %{_sysconfdir}/%{name}/password.txt
 %config(noreplace) %{_sysconfdir}/%{name}/defaults.txt
 %config(noreplace) %{_sysconfdir}/%{name}/xpilot-ng-server-cmdline-opts
 %{_mandir}/man6/xpilot-ng-server.6.gz
 %{_mandir}/man6/xpilot-ng-xp-mapedit.6.gz
+%{_sysusersdir}/xpilot-ng.conf
 
 %files logwatch
 %{logwatch_conf}/logfiles/%{name}.conf
 %{logwatch_conf}/services/%{name}.conf
 %{logwatch_scripts}/services/%{name}
 %{logwatch_scripts}/shared/applyxpilotdate
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.7.3-35
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.7.3-34
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Fri Jul 26 2024 Miroslav Suchý <msuchy@redhat.com> - 4.7.3-33
 - convert license to SPDX
 
 * Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.7.3-32
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
RPMAutoSpec usage detected, not changing the spec file.
diff --git xpra/xpra.spec xpra/xpra.spec.tmp
index 23a1b177ef..280863c295 100644
--- xpra/xpra.spec
+++ xpra/xpra.spec.tmp
@@ -155,17 +155,16 @@ Requires: shared-mime-info%{?_isa}
 Requires: js-jquery
 
 # python3-opencv is required for webcam forwarding support, client-side only.
 # Available on Fedora only.
 # https://github.com/Xpra-org/xpra/issues/4035#issuecomment-2405430577
 #%%{?fedora:Requires: python3-opencv}
 
 # Needed to create the xpra group
-Requires(pre):  shadow-utils
 
 # xpra-html5 is now separately provided
 Obsoletes: xpra-html5 < 0:4.1-1
 
 Requires: systemd-udev%{?_isa}
 Obsoletes: xpra-udev < %{version}-%{release}
 Provides: xpra-udev = %{version}-%{release}
 
@@ -189,16 +188,21 @@ network bandwidth constraints.
 %patch -P2 -p1
 %endif
 
 # cc1: error: unrecognized compiler option ‘-mfpmath=387’
 %ifarch %{arm}
 sed -i 's|-mfpmath=387|-mfloat-abi=hard|' setup.py
 %endif
 
+# Create a sysusers.d config file
+cat >xpra.sysusers.conf <<EOF
+g xpra -
+EOF
+
 %build
 %set_build_flags
 export CFLAGS="%{optflags} -I%{_includedir}/security"
 %py3_build -- \
     --without-nvidia --without-pandoc_lua \
     --with-verbose \
     --with-vpx \
     %{?_with_enc_x264} \
@@ -268,22 +272,22 @@ for i in `find %{buildroot}%{_bindir} -perm /644 -type f \( -name "*" \)`; do
     chmod 0755 $i
 done
 
 # Remove Build documentation
 rm -rf %{buildroot}%{_docdir}/xpra/Build
 
 install -pm 644 README.md %{buildroot}%{_docdir}/xpra/
 
+install -m0644 -D xpra.sysusers.conf %{buildroot}%{_sysusersdir}/xpra.conf
+
 %check
 %{?fedora:appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/xpra.appdata.xml}
 desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
 
-%pre
-getent group xpra >/dev/null || groupadd -r xpra
 
 %files
 %license COPYING
 %dir %{_sysconfdir}/xpra
 %dir %{_sysconfdir}/xpra/conf.d
 %config(noreplace) %{_sysconfdir}/xpra/*.conf
 %config(noreplace) %{_sysconfdir}/xpra/nvenc.keys
 %config(noreplace) %{_sysconfdir}/xpra/conf.d/*.conf
@@ -318,11 +322,12 @@ getent group xpra >/dev/null || groupadd -r xpra
 %{_datadir}/xpra/
 %{cupslibdir}/backend/xpraforwarder
 %{_tmpfilesdir}/xpra.conf
 %dir %{_rundir}/xpra
 %{_docdir}/xpra
 %{_unitdir}/xpra.service
 %{_unitdir}/xpra.socket
 %{_udevrulesdir}/71-xpra-virtual-pointer.rules
+%{_sysusersdir}/xpra.conf
 
 %changelog
 %autochangelog
diff --git xrootd/xrootd.spec xrootd/xrootd.spec.tmp
index 12074971f8..8d39dac206 100644
--- xrootd/xrootd.spec
+++ xrootd/xrootd.spec.tmp
@@ -9,17 +9,17 @@
 %endif
 
 # Needed for EPEL 8
 %undefine __cmake_in_source_build
 
 Name:		xrootd
 Epoch:		1
 Version:	5.7.2
-Release:	3%{?dist}
+Release:	4%{?dist}
 Summary:	Extended ROOT file server
 License:	LGPL-3.0-or-later AND BSD-2-Clause AND BSD-3-Clause AND curl AND MIT AND Zlib
 URL:		https://xrootd.web.cern.ch
 Source0:	%{url}/download/v%{version}/%{name}-%{version}.tar.gz
 #		Fix errors in format strings
 #		https://github.com/xrootd/xrootd/pull/2380
 Patch0:		0001-Use-correct-format-for-size_t.patch
 Patch1:		0002-Mark-the-client-library-logging-routines-with-__attr.patch
@@ -89,17 +89,16 @@ latency and increased throughput.
 
 %package server
 Summary:	Xrootd server daemons
 Requires:	%{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
 Requires:	%{name}-client-libs%{?_isa} = %{epoch}:%{version}-%{release}
 Requires:	%{name}-server-libs%{?_isa} = %{epoch}:%{version}-%{release}
 Requires:	expect
 Requires:	logrotate
-Requires(pre):	shadow-utils
 %{?systemd_requires}
 
 %description server
 This package contains the xrootd servers without the SELinux support.
 Unless you are installing on a system without SELinux also install the
 xrootd-selinux package.
 
 %package selinux
@@ -262,16 +261,21 @@ This package contains the API documentation of the xrootd libraries.
 
 %prep
 %setup -q
 %patch -P0 -p1
 %patch -P1 -p1
 %patch -P2 -p1
 %patch -P3 -p1
 
+# Create a sysusers.d config file
+cat >xrootd.sysusers.conf <<EOF
+u xrootd - 'XRootD runtime user' %{_localstatedir}/spool/%{name} -
+EOF
+
 %build
 %cmake \
     -DFORCE_ENABLED:BOOL=ON \
     -DENABLE_TESTS:BOOL=ON \
 %if %{ceph}
     -DENABLE_CEPH:BOOL=ON \
 %endif
 %ifarch %{ix86}
@@ -370,16 +374,18 @@ install -m 644 -p packaging/common/%{name}.pp \
 
 # Documentation
 mkdir -p %{buildroot}%{_pkgdocdir}
 cp -pr doxydoc/html %{buildroot}%{_pkgdocdir}
 
 cp -pr bindings/python/docs/build/html %{buildroot}%{_pkgdocdir}/python
 rm %{buildroot}%{_pkgdocdir}/python/.buildinfo
 
+install -m0644 -D xrootd.sysusers.conf %{buildroot}%{_sysusersdir}/xrootd.conf
+
 %check
 # Reduce socket path lengths used during tests
 # rpm 4.20 uses a longer path to the build directory than earlier versions
 # Tests fail with sockets in the build directory with rpm 4.20
 adminpath=$(mktemp -d -p /var/tmp)
 sed "s!all.adminpath .*!all.adminpath ${adminpath}!" \
     -i %{_vpath_builddir}/tests/cluster/common.cfg \
        tests/XRootD/common.cfg
@@ -404,20 +410,16 @@ XrdEc::|\
 XRootD::cluster::test|\
 XRootD::http::test"
     %ctest -- -E $exclude
 fi
 rm testfile
 
 rm -rf ${adminpath}
 
-%pre server
-getent group %{name} >/dev/null || groupadd -r %{name}
-getent passwd %{name} >/dev/null || useradd -r -g %{name} -s /sbin/nologin \
-  -d %{_localstatedir}/spool/%{name} -c "XRootD runtime user" %{name}
 
 %post server
 %tmpfiles_create %{name}.conf
 
 if [ $1 -eq 1 ] ; then
     systemctl daemon-reload >/dev/null 2>&1 || :
 fi
 
@@ -481,16 +483,17 @@ fi
 %{_unitdir}/*
 %{_tmpfilesdir}/%{name}.conf
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
 %dir %{_sysconfdir}/%{name}/config.d
 %attr(-,xrootd,xrootd) %config(noreplace) %{_sysconfdir}/%{name}/*.cfg
 %attr(-,xrootd,xrootd) %{_localstatedir}/log/%{name}
 %attr(-,xrootd,xrootd) %{_localstatedir}/spool/%{name}
 %ghost %attr(-,xrootd,xrootd) %{_rundir}/%{name}
+%{_sysusersdir}/xrootd.conf
 
 %files selinux
 %dir %{_datadir}/selinux/packages/%{name}
 %{_datadir}/selinux/packages/%{name}/%{name}.pp
 
 %files libs
 %{_libdir}/libXrdAppUtils.so.*
 %{_libdir}/libXrdCrypto.so.*
@@ -652,16 +655,19 @@ fi
 %{python3_sitearch}/xrootd-*.*-info
 %{python3_sitearch}/pyxrootd
 %{python3_sitearch}/XRootD
 
 %files doc
 %doc %{_pkgdocdir}
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1:5.7.2-4
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.7.2-3
 - Fix compilation errors with GCC 15
 
 * Sun Dec 08 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.7.2-2
 - Fix errors in format strings
 
 * Fri Nov 29 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 1:5.7.2-1
 - Update to version 5.7.2
diff --git xtide/xtide.spec xtide/xtide.spec.tmp
index 767881d7cd..bafeeec6e8 100644
--- xtide/xtide.spec
+++ xtide/xtide.spec.tmp
@@ -1,13 +1,13 @@
 %define          mainver   2.15.5
 #%%define          betatag   dev-20160114
 %define          dwfdate   20241229
 
-%define          baserelease 9
+%define          baserelease 10
 
 
 %define          rel        %{?betatag:0.}%{baserelease}%{?betatag:.%(echo %betatag | sed -e 's|-||g')}
 
 
 Summary:         Calculate tide all over the world
 Name:            xtide
 Version:         %{mainver}
@@ -55,17 +55,16 @@ BuildRequires:   flex
 # Explicit for %%PATCH1
 BuildRequires:   %{_bindir}/pkg-config
 
 Requires:        wvs-data
 Requires:        xorg-x11-fonts-misc
 Requires:        xtide-common = %{version}-%{release}
 Requires:        libxtide%{?_isa} = %{version}-%{release}
 
-Requires(pre):      shadow-utils
 Requires(preun):    systemd
 Requires(postun):   systemd
 Requires(post):     systemd
 
 %package -n      libxtide
 Summary:         XTide library
 # Automatically converted from old format: GPLv3+ - review is highly recommended.
 License:         GPL-3.0-or-later
@@ -159,16 +158,21 @@ sed -i.ver \
 sed -i.rpath configure \
 	-e 's|hardcode_libdir_flag_spec=|kill_hardcode_libdir_flag_spec=|' \
 	-e 's|hardcode_libdir_flag_spec_CXX=|kill_hardcode_libdir_flag_spec_CXX=|' \
 	%{nil}
 sed -i.rpath ltmain.sh \
 	-e 's|\$finalize_rpath|\$finalize_no_rpath|' \
 	%{nil}
 
+# Create a sysusers.d config file
+cat >xtide.sysusers.conf <<EOF
+u xttpd - 'XTide web server' %{_sysconfdir}/%{name} -
+EOF
+
 %build
 %configure \
    --enable-systemd \
 %if 0
    --enable-moon-age \
 %endif
    --with-xttpd-user=xttpd \
    --with-xttpd-group=xttpd
@@ -263,37 +267,27 @@ done
 rm -rf harmonics-dwf
 mkdir harmonics-dwf
 cp -a harmonics-dwf-%{dwfdate}/[A-Z]* \
 	harmonics-dwf/
 
 # 3 cleanup
 rm -rf $RPM_BUILD_ROOT%{_libdir}/libxtide.{a,la}
 
+install -m0644 -D xtide.sysusers.conf %{buildroot}%{_sysusersdir}/xtide.conf
+
 %post
 %systemd_post xttpd.socket xttpd.service
 exit 0
 
 %postun
 %systemd_postun xttpd.socket xttpd.service
 exit 0
 
 
-%pre
-getent group xttpd &>/dev/null || \
-   %{_sbindir}/groupadd -r xttpd
-getent passwd xttpd &> /dev/null || \
-   %{_sbindir}/useradd \
-   -c "XTide web server" \
-   -g xttpd \
-   -d %{_sysconfdir}/%{name} \
-   -r \
-   -s /sbin/nologin \
-   xttpd 2>/dev/null
-exit 0
 
 %preun
 %systemd_preun xttpd.socket xttpd.service
 exit 0
 
 %ldconfig_scriptlets -n libxtide
 
 %files common
@@ -334,18 +328,22 @@ exit 0
 # xttpd
 %config(noreplace) %{_sysconfdir}/sysconfig/xttpd.service.conf
 %config(noreplace) %{_sysconfdir}/sysconfig/xttpd.socket
 %{_unitdir}/xttpd.service
 %{_unitdir}/xttpd.socket
 
 %{_sbindir}/xttpd
 %{_datadir}/man/man8/xttpd.8*
+%{_sysusersdir}/xtide.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.15.5-10
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.15.5-9
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Mon Dec 30 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 2.15.5-8
 - Update harmonics data to 20241229
 
 * Thu Jul  25 2024 Miroslav Suchý <msuchy@redhat.com> - 2.15.5-7
 - convert license to SPDX
diff --git yubihsm-connector/yubihsm-connector.spec yubihsm-connector/yubihsm-connector.spec.tmp
index d80fc80ca8..b5941ec8b3 100644
--- yubihsm-connector/yubihsm-connector.spec
+++ yubihsm-connector/yubihsm-connector.spec.tmp
@@ -7,17 +7,17 @@ Version:                3.0.5
 %global tag             %{version}
 
 %gometa
 
 %global common_description %{expand:
 Backend to talk to YubiHSM 2}
 
 Name:           yubihsm-connector
-Release:        7%{?dist}
+Release:        8%{?dist}
 Summary:        YubiHSM Connector
 
 # Upstream license specification: Apache-2.0
 # Automatically converted from old format: ASL 2.0 - review is highly recommended.
 License:        Apache-2.0
 URL:            %{gourl}
 Source0:        %{gosource}
 Source1:        %{gosource}.sig
@@ -27,17 +27,16 @@ Source2:        gpgkey-9588EA0F.gpg
 # created using
 # $ cd yubihsm-connector-x.y.z
 # $ go mod vendor
 # $ tar -cvJf ../yubihsm-connector-vendor-x.y.z.tar.gz vendor/
 Source3:        %{name}-vendor-%{version}.tar.gz
 %endif
 
 %{?systemd_requires}
-Requires(pre):  shadow-utils
 BuildRequires:  compiler(go-compiler)
 BuildRequires:  systemd-rpm-macros
 #BuildRequires:  git
 %if 0%{?fedora}
 BuildRequires:  golang(github.com/google/gousb)
 BuildRequires:  golang(github.com/google/uuid)
 BuildRequires:  golang(github.com/kardianos/service)
 BuildRequires:  golang(github.com/sirupsen/logrus)
@@ -65,16 +64,21 @@ gpgv2 --quiet --keyring %{SOURCE2} %{SOURCE1} %{SOURCE0}
 rm -rf go.mod
 
 mkdir -p "%{_builddir}/src/github.com/Yubico/"
 cp -r %{_builddir}/%{name}-%{version} %{_builddir}/src/github.com/Yubico/%{name}
 mkdir -p %{_builddir}/%{name}-%{version}/_build
 mv %{_builddir}/src %{_builddir}/%{name}-%{version}/_build/src
 %endif
 
+# Create a sysusers.d config file
+cat >yubihsm-connector.sysusers.conf <<EOF
+u yubihsm-connector - 'YubiHSM connector account' None -
+EOF
+
 %build
 export GO111MODULE=off
 %if 0%{?fedora}
 go generate
 %gobuild -o %{gobuilddir}/bin/yubihsm-connector %{goipath}
 %else
 export GOPATH="%{_builddir}/%{name}-%{version}/_build"
 pushd $GOPATH/src/github.com/Yubico/yubihsm-connector/
@@ -88,53 +92,52 @@ popd
 install -Dpm 0755 %{gobuilddir}/bin/yubihsm-connector %{buildroot}%{_bindir}/yubihsm-connector
 %else
 install -Dpm 0755 bin/yubihsm-connector %{buildroot}%{_bindir}/yubihsm-connector
 %endif
 install -Dpm 0644  deb/yubihsm-connector.yaml %{buildroot}%{_sysconfdir}/yubihsm-connector.yaml
 install -Dpm 0644  deb/yubihsm-connector.service %{buildroot}%{_unitdir}/yubihsm-connector.service
 install -Dpm 0644  deb/70-yubihsm-connector.rules %{buildroot}%{_udevrulesdir}/70-yubihsm-connector.rules
 
+install -m0644 -D yubihsm-connector.sysusers.conf %{buildroot}%{_sysusersdir}/yubihsm-connector.conf
+
 %if %{with check}
 %check
 %if 0%{?fedora}
 %gocheck
 %else
 export GO111MODULE=off
 export GOPATH="%{_builddir}/%{name}-%{version}/_build"
 cd "_build/src/github.com/Yubico/%{name}"
 go test -v
 %endif
 %endif
 
-%pre
-getent group yubihsm-connector >/dev/null || groupadd -r yubihsm-connector
-getent passwd yubihsm-connector >/dev/null || \
-    useradd -r -g yubihsm-connector -M -s /sbin/nologin \
-    -c "YubiHSM connector account" yubihsm-connector \
-    --system
-exit 0
 
 %post
 %systemd_post yubihsm-connector.service
 
 %preun
 %systemd_preun yubihsm-connector.service
 
 %postun
 %systemd_postun_with_restart yubihsm-connector.service
 
 %files
 %license LICENSE
 %{_bindir}/yubihsm-connector
 %config(noreplace) %{_sysconfdir}/yubihsm-connector.yaml
 %{_unitdir}/yubihsm-connector.service
 %{_udevrulesdir}/70-yubihsm-connector.rules
+%{_sysusersdir}/yubihsm-connector.conf
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.0.5-8
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.5-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Wed Sep 11 2024 Jakub Jelen <jjelen@redhat.com> - 3.0.5-6
 - New upstream release (#2311423)
 
 * Wed Jul 24 2024 Miroslav Suchý <msuchy@redhat.com> - 3.0.4-6
 - convert license to SPDX
diff --git znc/znc.spec znc/znc.spec.tmp
index f27442daf7..52e3e7cf51 100644
--- znc/znc.spec
+++ znc/znc.spec.tmp
@@ -8,17 +8,17 @@
 
 %if 0%{?fedora} || 0%{?rhel} >= 7
 %global __python %{__python3}
 %global with_modpython 1
 %endif # 0%{?fedora} || 0%{?rhel} >= 7
 
 Name:           znc
 Version:        1.9.1
-Release:        6%{?dist}
+Release:        7%{?dist}
 Summary:        An advanced IRC bouncer
 
 # Automatically converted from old format: ASL 2.0 - review is highly recommended.
 License:        Apache-2.0
 URL:            https://znc.in
 Source0:        %{url}/releases/archive/%{name}-%{version}.tar.gz
 Source1:        %{url}/releases/archive/%{name}-%{version}.tar.gz.sig
 
@@ -47,17 +47,16 @@ BuildRequires:  openssl-devel-engine
 %endif
 
 BuildRequires:  perl(ExtUtils::Embed)
 
 %if 0%{?rhel} && 0%{?rhel} <= 9
 Obsoletes:      znc-extra <= %{version}-%{release}
 %endif # 0%{?rhel} && 0%{?rhel} <= 9
 
-Requires(pre):  shadow-utils
 BuildRequires:  systemd
 %{?systemd_requires}
 
 %description
 ZNC is an IRC bouncer with many advanced features like detaching,
 multiple users, per channel playback buffer, SSL, IPv6, transparent
 DCC bouncing, Perl and C++ module support to name a few.
 
@@ -124,16 +123,21 @@ gpg2 --dearmor --quiet --batch --yes $key >/dev/null
 gpgv2 --homedir "$gpghome" --quiet --keyring $key.gpg %{SOURCE1} %{SOURCE0}
 rm -rf "$gpghome" $key.gpg # Cleanup tmp gpg home dir and dearmored key
 
 %autosetup -p1
 
 # The manual page references /usr/local/; fix that
 sed -ie 's!/usr/local/!/usr/!' man/znc.1
 
+# Create a sysusers.d config file
+cat >znc.sysusers.conf <<EOF
+u znc - 'Account for ZNC to run as' /var/lib/znc -
+EOF
+
 %build
 %if 0%{?rhel} == 7
 sed -e 's/"openssl"/"openssl11"/g' -i configure
 %endif
 
 # NOTE(neil): 2024-09-02 aarch64 responds badly to building on large machines
 %ifarch aarch64
 %global _smp_build_ncpus 1
@@ -154,22 +158,19 @@ sed -e 's/"openssl"/"openssl11"/g' -i configure
 
 %cmake_build
 
 %install
 %cmake_install
 install -d "%{buildroot}%{_sharedstatedir}/znc"
 %py_byte_compile %{__python3} %{buildroot}%{_libdir}/znc/
 
+install -m0644 -D znc.sysusers.conf %{buildroot}%{_sysusersdir}/znc.conf
+
 
-%pre
-getent group znc >/dev/null || groupadd -r znc
-getent passwd znc >/dev/null || \
-    useradd -r -g znc -d /var/lib/znc -s /sbin/nologin \
-    -c "Account for ZNC to run as" znc
 
 
 %post
 %systemd_post znc.service
 
 
 %postun
 %systemd_postun_with_restart znc.service
@@ -196,16 +197,17 @@ getent passwd znc >/dev/null || \
 %exclude %{_libdir}/znc/pyeval.py
 %endif # 0%{?with_modpython}
 %exclude %{_libdir}/znc/modtcl.so
 %{_datadir}/znc/
 # exclude modtcl files
 %exclude %{_datadir}/znc/modtcl/
 %{_unitdir}/znc.service
 %attr(-,znc,znc) %{_sharedstatedir}/znc/
+%{_sysusersdir}/znc.conf
 
 %files devel
 %{_bindir}/znc-buildmod
 %{_libdir}/pkgconfig/%{name}.pc
 %{_includedir}/znc/
 %{_mandir}/man1/znc-buildmod.1*
 
 %files modtcl
@@ -224,16 +226,19 @@ getent passwd znc >/dev/null || \
 %{_libdir}/znc/modpython/
 %{_libdir}/znc/modpython.so
 %{_libdir}/znc/pyeval.py
 %{_libdir}/znc/__pycache__/
 %endif # 0%{?with_modpython}
 
 
 %changelog
+* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.9.1-7
+- Add sysusers.d config file to allow rpm to create users/groups automatically
+
 * Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.1-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
 
 * Sun Dec 08 2024 Pete Walter <pwalter@fedoraproject.org> - 1.9.1-5
 - Rebuild for ICU 76
 
 * Sun Aug 25 2024 Neil Hanlon <neil@shrug.pw> - 1.9.1-4
 - switch to pure cmake (1.9.0 turned configure into a wrapper which dropped options)