diff --git a/.gitignore b/.gitignore index 0cd980a..1a0073b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ x86_64 Makefile -rpcbind-1.2.7/ -/rpcbind-1.2.7.tar.bz2 +rpcbind-1.2.8-build/ +/rpcbind-1.2.8.tar.bz2 diff --git a/rpcbind-0.2.4-systemd-rundir.patch b/rpcbind-0.2.4-systemd-rundir.patch index a3dc01f..ffecb53 100644 --- a/rpcbind-0.2.4-systemd-rundir.patch +++ b/rpcbind-0.2.4-systemd-rundir.patch @@ -1,16 +1,16 @@ -diff -up rpcbind-1.2.6/src/rpcbind.c.orig rpcbind-1.2.6/src/rpcbind.c ---- rpcbind-1.2.6/src/rpcbind.c.orig 2022-07-12 16:25:36.422972803 -0400 -+++ rpcbind-1.2.6/src/rpcbind.c 2022-07-12 16:26:00.679085433 -0400 -@@ -143,6 +143,8 @@ static void rbllist_add(rpcprog_t, rpcve - static void terminate(int); - static void parseargs(int, char *[]); +diff -up rpcbind-1.2.8/src/rpcbind.c.orig rpcbind-1.2.8/src/rpcbind.c +--- rpcbind-1.2.8/src/rpcbind.c.orig 2025-07-26 16:57:24.000000000 -0400 ++++ rpcbind-1.2.8/src/rpcbind.c 2025-07-26 17:15:51.933467872 -0400 +@@ -214,6 +214,8 @@ static void version() + fprintf(stderr, "\n"); + } +char *systemdtmp = "/usr/bin/systemd-tmpfiles --create rpcbind.conf"; + int main(int argc, char *argv[]) { -@@ -150,13 +152,21 @@ main(int argc, char *argv[]) +@@ -221,13 +223,21 @@ main(int argc, char *argv[]) void *nc_handle; /* Net config handle */ struct rlimit rl; int maxrec = RPC_MAXDATASIZE; diff --git a/rpcbind-1.2.7-rc2.patch b/rpcbind-1.2.7-rc2.patch deleted file mode 100644 index 4c1749d..0000000 --- a/rpcbind-1.2.7-rc2.patch +++ /dev/null @@ -1,46 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index c0ef896..c2069a2 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -20,6 +20,12 @@ AM_CONDITIONAL(LIBSETDEBUG, test x$lib_setdebug = xyes) - AC_ARG_ENABLE([warmstarts], - AS_HELP_STRING([--enable-warmstarts], [Enables Warm Starts @<:@default=no@:>@])) - AM_CONDITIONAL(WARMSTART, test x$enable_warmstarts = xyes) -+AS_IF([test x$enable_warmstarts = xyes], [ -+ warmstarts_opt=-w -+], [ -+ warmstarts_opt= -+]) -+AC_SUBST([warmstarts_opt], [$warmstarts_opt]) - - AC_ARG_ENABLE([rmtcalls], - AS_HELP_STRING([--enable-rmtcalls], [Enables Remote Calls @<:@default=no@:>@])) -diff --git a/src/rpcbind.c b/src/rpcbind.c -index 25d8a90..ecebe97 100644 ---- a/src/rpcbind.c -+++ b/src/rpcbind.c -@@ -552,8 +552,10 @@ init_transport(struct netconfig *nconf) - syslog(LOG_ERR, "cannot bind %s on %s: %m", - (hosts[nhostsbak] == NULL) ? "*" : - hosts[nhostsbak], nconf->nc_netid); -- if (res != NULL) -+ if (res != NULL) { - freeaddrinfo(res); -+ res = NULL; -+ } - continue; - } else - checkbind++; -diff --git a/systemd/rpcbind.service.in b/systemd/rpcbind.service.in -index 7b1c74b..c892ca8 100644 ---- a/systemd/rpcbind.service.in -+++ b/systemd/rpcbind.service.in -@@ -12,7 +12,7 @@ Wants=rpcbind.target - [Service] - Type=notify - # distro can provide a drop-in adding EnvironmentFile=-/??? if needed. --ExecStart=@_sbindir@/rpcbind $RPCBIND_OPTIONS -w -f -+ExecStart=@_sbindir@/rpcbind $RPCBIND_OPTIONS @warmstarts_opt@ -f - - [Install] - WantedBy=multi-user.target diff --git a/rpcbind-1.2.7-rc3.patch b/rpcbind-1.2.7-rc3.patch deleted file mode 100644 index 3e11c03..0000000 --- a/rpcbind-1.2.7-rc3.patch +++ /dev/null @@ -1,177 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index c0ef896..573e4fd 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -20,6 +20,12 @@ AM_CONDITIONAL(LIBSETDEBUG, test x$lib_setdebug = xyes) - AC_ARG_ENABLE([warmstarts], - AS_HELP_STRING([--enable-warmstarts], [Enables Warm Starts @<:@default=no@:>@])) - AM_CONDITIONAL(WARMSTART, test x$enable_warmstarts = xyes) -+AS_IF([test x$enable_warmstarts = xyes], [ -+ warmstarts_opt=-w -+], [ -+ warmstarts_opt= -+]) -+AC_SUBST([warmstarts_opt], [$warmstarts_opt]) - - AC_ARG_ENABLE([rmtcalls], - AS_HELP_STRING([--enable-rmtcalls], [Enables Remote Calls @<:@default=no@:>@])) -@@ -44,6 +50,17 @@ AC_SUBST([nss_modules], [$with_nss_modules]) - - PKG_CHECK_MODULES([TIRPC], [libtirpc]) - -+CPPFLAGS=$TIRPC_CFLAGS -+AC_MSG_CHECKING([for abstract socket support in libtirpc]) -+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ -+#include -+],[ -+char *path = _PATH_RPCBINDSOCK_ABSTRACT; -+])], [have_abstract=yes], [have_abstract=no]) -+CPPFLAGS= -+AC_MSG_RESULT([$have_abstract]) -+AM_CONDITIONAL(ABSTRACT, [ test "x$have_abstract" = "xyes" ]) -+ - PKG_PROG_PKG_CONFIG - AC_ARG_WITH([systemdsystemunitdir], - AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]), -@@ -70,4 +87,4 @@ AC_CHECK_HEADERS([nss.h]) - AC_SUBST([_sbindir]) - AC_CONFIG_COMMANDS_PRE([eval eval _sbindir=$sbindir]) - --AC_OUTPUT([Makefile systemd/rpcbind.service]) -+AC_OUTPUT([Makefile systemd/rpcbind.service systemd/rpcbind.socket]) -diff --git a/src/rpcbind.c b/src/rpcbind.c -index 25d8a90..ecebe97 100644 ---- a/src/rpcbind.c -+++ b/src/rpcbind.c -@@ -552,8 +552,10 @@ init_transport(struct netconfig *nconf) - syslog(LOG_ERR, "cannot bind %s on %s: %m", - (hosts[nhostsbak] == NULL) ? "*" : - hosts[nhostsbak], nconf->nc_netid); -- if (res != NULL) -+ if (res != NULL) { - freeaddrinfo(res); -+ res = NULL; -+ } - continue; - } else - checkbind++; -diff --git a/src/rpcinfo.c b/src/rpcinfo.c -index 0e14f78..006057a 100644 ---- a/src/rpcinfo.c -+++ b/src/rpcinfo.c -@@ -311,29 +311,17 @@ main (int argc, char **argv) - return (0); - } - -+/* Evaluate to actual length of the `sockaddr_un' structure, whether -+ * abstract or not. -+ */ -+#include -+#define SUN_LEN_A(ptr) (offsetof(struct sockaddr_un, sun_path) \ -+ + 1 + strlen((ptr)->sun_path + 1)) -+ - static CLIENT * - local_rpcb (rpcprog_t prog, rpcvers_t vers) - { --#if 0 -- void *localhandle; -- struct netconfig *nconf; - CLIENT *clnt; -- -- localhandle = setnetconfig(); -- while ((nconf = getnetconfig(localhandle)) != NULL) { -- if (nconf->nc_protofmly != NULL && -- strcmp(nconf->nc_protofmly, NC_LOOPBACK) == 0) -- break; -- } -- if (nconf == NULL) { -- warnx("getnetconfig: %s", nc_sperror()); -- return (NULL); -- } -- -- clnt = clnt_tp_create (/* "localhost"*/ NULL, prog, vers, nconf); -- endnetconfig(localhandle); -- return clnt; --#else - struct netbuf nbuf; - struct sockaddr_un sun; - int sock; -@@ -344,13 +332,26 @@ local_rpcb (rpcprog_t prog, rpcvers_t vers) - return NULL; - - sun.sun_family = AF_LOCAL; -+ -+#ifdef _PATH_RPCBINDSOCK_ABSTRACT -+ memcpy(sun.sun_path, _PATH_RPCBINDSOCK_ABSTRACT, -+ sizeof(_PATH_RPCBINDSOCK_ABSTRACT)); -+ nbuf.len = SUN_LEN_A (&sun); -+ nbuf.maxlen = sizeof (struct sockaddr_un); -+ nbuf.buf = &sun; -+ -+ clnt = clnt_vc_create (sock, &nbuf, prog, vers, 0, 0); -+ if (clnt) -+ return clnt; -+#endif -+ - strcpy (sun.sun_path, _PATH_RPCBINDSOCK); - nbuf.len = SUN_LEN (&sun); - nbuf.maxlen = sizeof (struct sockaddr_un); - nbuf.buf = &sun; - -- return clnt_vc_create (sock, &nbuf, prog, vers, 0, 0); --#endif -+ clnt = clnt_vc_create (sock, &nbuf, prog, vers, 0, 0); -+ return clnt; - } - - #ifdef PORTMAP -diff --git a/systemd/rpcbind.service.in b/systemd/rpcbind.service.in -index 7b1c74b..c892ca8 100644 ---- a/systemd/rpcbind.service.in -+++ b/systemd/rpcbind.service.in -@@ -12,7 +12,7 @@ Wants=rpcbind.target - [Service] - Type=notify - # distro can provide a drop-in adding EnvironmentFile=-/??? if needed. --ExecStart=@_sbindir@/rpcbind $RPCBIND_OPTIONS -w -f -+ExecStart=@_sbindir@/rpcbind $RPCBIND_OPTIONS @warmstarts_opt@ -f - - [Install] - WantedBy=multi-user.target -diff --git a/systemd/rpcbind.socket b/systemd/rpcbind.socket -index 3b1a936..685341c 100644 ---- a/systemd/rpcbind.socket -+++ b/systemd/rpcbind.socket -@@ -6,6 +6,7 @@ Before=rpcbind.target - - [Socket] - ListenStream=/run/rpcbind.sock -+#ListenStream=@/run/rpcbind.sock - - # RPC netconfig can't handle ipv6/ipv4 dual sockets - BindIPv6Only=ipv6-only -diff --git a/systemd/rpcbind.socket.in b/systemd/rpcbind.socket.in -new file mode 100644 -index 0000000..5dd09a1 ---- /dev/null -+++ b/systemd/rpcbind.socket.in -@@ -0,0 +1,19 @@ -+[Unit] -+Description=RPCbind Server Activation Socket -+DefaultDependencies=no -+Wants=rpcbind.target -+Before=rpcbind.target -+ -+[Socket] -+ListenStream=/run/rpcbind.sock -+@ABSTRACT_TRUE@ListenStream=@/run/rpcbind.sock -+ -+# RPC netconfig can't handle ipv6/ipv4 dual sockets -+BindIPv6Only=ipv6-only -+ListenStream=0.0.0.0:111 -+ListenDatagram=0.0.0.0:111 -+ListenStream=[::]:111 -+ListenDatagram=[::]:111 -+ -+[Install] -+WantedBy=sockets.target diff --git a/rpcbind-1.2.8-rc1.patch b/rpcbind-1.2.8-rc1.patch deleted file mode 100644 index c22b471..0000000 --- a/rpcbind-1.2.8-rc1.patch +++ /dev/null @@ -1,63 +0,0 @@ -diff --git a/man/rpcbind.8 b/man/rpcbind.8 -index fbf0ace..cdcdcfd 100644 ---- a/man/rpcbind.8 -+++ b/man/rpcbind.8 -@@ -150,6 +150,14 @@ starts up. The state file is created when - .Nm - terminates. - .El -+.Sh FILES -+The -+.Nm -+utility tries to load configuration file in following order: -+.Bd -literal -+.Pa /etc/rpcbind.conf -+.Pa /etc/default/rpcbind -+.Pa /etc/sysconfig/rpcbind - .Sh NOTES - All RPC servers must be restarted if - .Nm -diff --git a/src/rpcbind.c b/src/rpcbind.c -index ecebe97..9887b82 100644 ---- a/src/rpcbind.c -+++ b/src/rpcbind.c -@@ -105,7 +105,7 @@ char *nss_modules = "files"; - /* who to suid to if -s is given */ - #define RUN_AS "daemon" - --#define RPCBINDDLOCK "/var/run/rpcbind.lock" -+#define RPCBINDDLOCK "/run/rpcbind.lock" - - int runasdaemon = 0; - int insecure = 0; -diff --git a/systemd/rpcbind.service.in b/systemd/rpcbind.service.in -index c892ca8..771b944 100644 ---- a/systemd/rpcbind.service.in -+++ b/systemd/rpcbind.service.in -@@ -7,11 +7,25 @@ RequiresMountsFor=@statedir@ - # Make sure we use the IP addresses listed for - # rpcbind.socket, no matter how this unit is started. - Requires=rpcbind.socket --Wants=rpcbind.target -+Wants=rpcbind.target systemd-tmpfiles-setup.service -+After=systemd-tmpfiles-setup.service - - [Service] -+ProtectSystem=full -+ProtectHome=true -+PrivateDevices=true -+ProtectHostname=true -+ProtectClock=true -+ProtectKernelTunables=true -+ProtectKernelModules=true -+ProtectKernelLogs=true -+ProtectControlGroups=true -+RestrictRealtime=true - Type=notify - # distro can provide a drop-in adding EnvironmentFile=-/??? if needed. -+EnvironmentFile=-/etc/rpcbind.conf -+EnvironmentFile=-/etc/default/rpcbind -+EnvironmentFile=-/etc/sysconfig/rpcbind - ExecStart=@_sbindir@/rpcbind $RPCBIND_OPTIONS @warmstarts_opt@ -f - - [Install] diff --git a/rpcbind.spec b/rpcbind.spec index b5b2c6e..0676bb2 100644 --- a/rpcbind.spec +++ b/rpcbind.spec @@ -3,8 +3,8 @@ %global rpcbind_state_dir %{_rundir}/rpcbind Name: rpcbind -Version: 1.2.7 -Release: 1.rc1%{?dist}.3 +Version: 1.2.8 +Release: 0%{?dist} Summary: Universal Addresses to RPC Program Number Mapper License: BSD-3-Clause URL: http://nfsv4.bullopensource.org @@ -18,14 +18,10 @@ Conflicts: man-pages < 2.43-12 BuildRequires: make BuildRequires: automake, autoconf, libtool, systemd, systemd-devel BuildRequires: libtirpc-devel, quota-devel -Requires(pre): coreutils shadow-utils +Requires(pre): coreutils Requires(post): systemd Requires(preun): systemd Requires(postun): systemd coreutils -Provides: user(rpc) -Provides: group(rpc) - -Patch001: rpcbind-1.2.8-rc1.patch Patch100: rpcbind-0.2.3-systemd-tmpfiles.patch Patch101: rpcbind-0.2.4-systemd-rundir.patch @@ -49,6 +45,11 @@ RPC calls on a server on that machine. %prep %autosetup -p1 +# Create a sysusers.d config file +cat >rpcbind.sysusers.conf </dev/null || groupadd -f -g 32 -r rpc -if ! getent passwd rpc >/dev/null ; then - if ! getent passwd 32 >/dev/null ; then - useradd -l -c "Rpcbind Daemon" -d /var/lib/rpcbind \ - -g rpc -M -s /sbin/nologin -o -u 32 rpc > /dev/null 2>&1 - else - useradd -l -c "Rpcbind Daemon" -d /var/lib/rpcbind \ - -g rpc -M -s /sbin/nologin rpc > /dev/null 2>&1 - fi -fi +install -m0644 -D rpcbind.sysusers.conf %{buildroot}%{_sysusersdir}/rpcbind.conf %post %systemd_post rpcbind.service rpcbind.socket @@ -100,15 +89,16 @@ fi %preun %systemd_preun rpcbind.service rpcbind.socket +# NOTE: We only restart rpcbind.socket in the %postun scriptlet in order to +# avoid the race described in: +# +# https://github.com/systemd/systemd/issues/13271 +# https://github.com/systemd/systemd/issues/8102 +# +# Restarting rpcbind.socket causes rpcbind.service to be restarted automatically +# due to "Requires=rpcbind.socket" in the rpcbind.service unit file. %postun -%systemd_postun_with_restart rpcbind.service rpcbind.socket - -%triggerin -- rpcbind > 0.2.2-2.0 -if systemctl -q is-enabled rpcbind.socket -then - /bin/systemctl reenable rpcbind.socket >/dev/null 2>&1 || : - /bin/systemctl restart rpcbind.socket >/dev/null 2>&1 || : -fi +%systemd_postun_with_restart rpcbind.socket %files %license COPYING @@ -125,8 +115,21 @@ fi %{_unitdir}/%{name}.socket %{_tmpfilesdir}/%{name}.conf %attr(0700, %{rpcbind_user_group}, %{rpcbind_user_group}) %dir %{rpcbind_state_dir} +%{_sysusersdir}/rpcbind.conf %changelog +* Sat Jul 26 2025 Steve Dickson 1.2.8-0 +- Updated to latest upstream release: rpcbind-1_2_8 (bz 2300081) + +* Fri Jul 25 2025 Fedora Release Engineering - 1.2.7-2.rc1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed May 7 2025 Scott Mayhew - 1.2.7-2.rc1 +- Fix rpm scriptlets to remove excessive restarts during upgrade + +* Wed Jan 29 2025 Zbigniew Jędrzejewski-Szmek - 1.2.7-1.rc1.4 +- Add sysusers.d config file to allow rpm to create users/groups automatically + * Sat Jan 18 2025 Fedora Release Engineering - 1.2.7-1.rc1.3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild diff --git a/sources b/sources index 81a9c45..26c4f09 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rpcbind-1.2.7.tar.bz2) = ca1517bdab86221d13c645042cc31b25b4d2b574d63ebaa20da4f5392b611cf58811f267214293e953f504d364e5daaa5875eab7aa68a04b89e68fd5508e3926 +SHA512 (rpcbind-1.2.8.tar.bz2) = 66f3955a67c4d0142ec635614ceafbc9bdbea985f2edaeec903f17efaf3c2e98f6483e8e6b7f1358cf8d2c1c877b281d153a3bf1b6748b6d259ae7ad1465ee71