File rpcbind.spec of Package rpcbind

#
# spec file for package rpcbind
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


#Compat macro for new _fillupdir macro introduced in Nov 2017
%if ! %{defined _fillupdir}
  %define _fillupdir %{_localstatedir}/adm/fillup-templates
%endif
Name:           rpcbind
Version:        1.2.7
Release:        0
Summary:        Transport independent RPC portmapper
# Git-Web:      http://git.linux-nfs.org/?p=steved/rpcbind.git;a=summary
License:        BSD-4-Clause
Group:          Productivity/Networking/System
URL:            http://rpcbind.sourceforge.net
Source:         https://downloads.sourceforge.net/sourceforge/%{name}/%{name}-%{version}.tar.bz2
Source2:        sysconfig.rpcbind
Source5:        rpc-user.conf
Patch1:         0001-systemd-rpcbind.service-Fix-ordering-add-etc-sysconf.patch
Patch2:         0001-change-lockingdir-to-run.patch
Patch3:         0001-systemd-rpcbind.service-Add-hardening-bsc-1181400.patch
BuildRequires:  libtirpc-devel >= 1.0.1
BuildRequires:  libtool
BuildRequires:  pkgconfig
BuildRequires:  sysuser-shadow
BuildRequires:  sysuser-tools
BuildRequires:  tcpd-devel
BuildRequires:  pkgconfig(libsystemd)
Requires(post): %fillup_prereq
Provides:       portmap
%{?systemd_ordering}
%sysusers_requires

%description
Rpcbind is a replacement for portmap. Whereas portmap supports only UDP
and TCP transports over INET (IPv4), rpcbind can be configured to work
on various transports supported by the TI-RPC. This includes TCP and
UDP over IPv6. Moreover, rpcbind provides additional functions in
regards to portmap.

%prep
%autosetup -p1

%build
autoreconf -fiv
export  CFLAGS="%{optflags} -fpie"
export LDFLAGS="-pie -Wl,-z,relro,-z,now"
%configure \
	    --enable-libwrap \
	    --enable-warmstarts \
	    --enable-debug \
	    --with-statedir=%{_rundir}/%{name} \
	    --with-rpcuser=rpc \
	    --with-systemdsystemunitdir=%{_unitdir} \
	    --with-nss-modules="files usrfiles"

make %{?_smp_mflags}
%sysusers_generate_pre %{SOURCE5} rpc rpc-user.conf

%install
%make_install
# fillup template
mkdir -p %{buildroot}%{_fillupdir}
install -m 644 %{SOURCE2} %{buildroot}%{_fillupdir}/
# sysusers.d config
mkdir -p %{buildroot}%{_sysusersdir}
install -m 644 %{SOURCE5} %{buildroot}%{_sysusersdir}/
# create symlink for rcrpcbind
mkdir -p %{buildroot}/%{_sbindir}
ln -s service %{buildroot}%{_sbindir}/rc%{name}
ln -s %{_bindir}/rpcinfo %{buildroot}%{_sbindir}/rpcinfo
%if 0%{?suse_version} < 1550
mkdir %{buildroot}/sbin
mkdir %{buildroot}/bin
ln -s %{_bindir}/rpcinfo %{buildroot}/sbin/rpcinfo
ln -s %{_bindir}/rpcinfo %{buildroot}/bin/rpcinfo
ln -s %{_sbindir}/%{name} %{buildroot}/sbin/%{name}
%endif

%pre -f rpc.pre
%service_add_pre %{name}.service %{name}.socket

%preun
%service_del_preun %{name}.service %{name}.socket

%post
%{fillup_only -n rpcbind}
%service_add_post %{name}.socket %{name}.service

%postun
%service_del_postun %{name}.socket %{name}.service

%files
%license COPYING
%doc AUTHORS README
%if 0%{?suse_version} < 1550
/sbin/%{name}
/bin/rpcinfo
/sbin/rpcinfo
%endif
%{_sbindir}/%{name}
%{_bindir}/rpcinfo
%{_sbindir}/rpcinfo
%{_sbindir}/rc%{name}
%{_mandir}/*/*
%{_fillupdir}/sysconfig.%{name}
%{_sysusersdir}/rpc-user.conf
%{_unitdir}/%{name}.service
%{_unitdir}/%{name}.socket

%changelog
openSUSE Build Service is sponsored by