File rsync.spec of Package rsync

# spec file for package rsync
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
# 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

%define with_system_zlib 0
%if 0%{?suse_version} < 1120
%define _initddir %{_sysconfdir}/init.d

Name:           rsync
Version:        3.1.0
Release:        0
Summary:        Versatile tool for fast incremental file transfer
License:        GPL-3.0+
Group:          Productivity/Networking/Other

Source2:        logrotate.rsync
Source3:        rsync.xinetd
Source4:        rsyncd.rc
Source5:        rsyncd.conf
Source6:        rsyncd.secrets
Source7:        rsync-server.firewall
Source8:        rsyncd.service
Source12:       %{name}.keyring
Patch3:         system-zlib.diff
Patch4:         0001-use-lp_num_modules-instead-of-the-removed-lp_numserv.patch
Patch5:         rsync-CVE-2014-2855.patch
#PATCH-FIX-SUSE boo#922710 slp
Patch6:         rsync-add_back_use_slp_directive.patch
Patch7:         rsync-equivalent_of_CVE-2014-8242.patch
#PATCH-FIX-UPSTREAM two patches for CVE-2014-9512
Patch8:         0001-Receiver-now-rejects-invalid-filenames-in-filelist.patch
Patch9:         0001-Complain-if-an-inc-recursive-path-is-not-right-for-i.patch
Patch10:        0001-Add-parent-dir-validation-for-no-inc-recurse-too.patch
BuildRequires:  autoconf
BuildRequires:  libacl-devel
BuildRequires:  openslp-devel
BuildRequires:  popt-devel
BuildRequires:  zlib-devel
%if %suse_version >= 1230
BuildRequires:  gpg-offline

PreReq:         %fillup_prereq
PreReq:         %insserv_prereq
PreReq:         grep
PreReq:         sed
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} > 1010
Recommends:     logrotate
%if 0%{?suse_version} > 1140
BuildRequires:  systemd
%define has_systemd 1

Rsync is a fast and extraordinarily versatile file  copying  tool. It can copy
locally, to/from another host over any remote shell, or to/from a remote rsync
daemon. It offers a large number of options that control every aspect of its
behavior and permit very flexible specification of the set of files to be
copied. It is famous for its delta-transfer algorithm, which reduces the amount
of data sent over the network by sending only the differences between the
source files and the existing files in the destination. Rsync is widely used
for backups and mirroring and as an improved copy command for everyday use.

%{?gpg_verify: %gpg_verify %{S:10}}
%{?gpg_verify: %gpg_verify %{S:11}}
%setup -q -b 1 -n %{name}-%{version}
%if %with_system_zlib
rm -f zlib/*.h
%patch4 -p1
%patch5 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
patch -p1 < patches/acls.diff
patch -p1 < patches/xattrs.diff
patch -p1 < patches/slp.diff
%patch6 -p1
# fate#312479
patch -p1 < patches/time-limit.diff

autoreconf -fiv
export CFLAGS="%optflags -fPIC -DPIC -fPIE"
export LDFLAGS="-Wl,-z,relro,-z,now -pie"
%configure \
  --disable-debug \
  --enable-slp \
  --enable-acl-support \
make %{?_smp_mflags}

make install DESTDIR="%buildroot"
rm -f %{buildroot}%{_sbindir}/rsyncd
install -d %{buildroot}%{_sysconfdir}/logrotate.d
install -d %{buildroot}%{_sysconfdir}/init.d
install -d %{buildroot}%{_sysconfdir}/xinetd.d
install -d %{buildroot}%{_prefix}/sbin
ln -sf ../bin/rsync %{buildroot}%{_sbindir}/rsyncd
install -m 755 support/rsyncstats %{buildroot}%{_prefix}/bin
install -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/rsync
install -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/xinetd.d/rsync
install -m 644 %{SOURCE5} %{buildroot}%{_sysconfdir}/rsyncd.conf
install -m 600 %{SOURCE6} %{buildroot}%{_sysconfdir}/rsyncd.secrets
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services
install -m 644 %{SOURCE7} %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/rsync-server
%if 0%{?has_systemd}
install -D -m 0644 %SOURCE8 %{buildroot}%{_unitdir}/rsyncd.service
ln -sf /usr/sbin/service %{buildroot}%{_sbindir}/rcrsyncd
install -m 755 %{SOURCE4} %{buildroot}%{_initddir}/rsyncd
ln -sf ../../etc/init.d/rsyncd %{buildroot}%{_sbindir}/rcrsyncd

%if 0%{?has_systemd}
%service_add_pre rsyncd.service

%if 0%{?has_systemd}
%service_del_preun rsyncd.service
%stop_on_removal rsyncd

if ! grep -q "^pid file" /etc/rsyncd.conf ; then
   sed -i -e "/^log file/{;p;s@\(.*\)@pid file = /var/run/;}" /etc/rsyncd.conf
%if 0%{?has_systemd}
%service_add_post rsyncd.service
%fillup_and_insserv rsyncd

%if 0%{?has_systemd}
%service_del_postun rsyncd.service
%restart_on_update rsyncd

%if 0%{?has_systemd}
%config %{_sysconfdir}/init.d/rsyncd
%config(noreplace) %{_sysconfdir}/rsyncd.conf
%config(noreplace) %{_sysconfdir}/rsyncd.secrets
%config(noreplace) %{_sysconfdir}/logrotate.d/rsync
%config(noreplace) %{_sysconfdir}/xinetd.d/rsync
%config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/*
%doc %{_mandir}/man1/rsync.1.gz
%doc %{_mandir}/man5/rsyncd.conf.5.gz
%doc COPYING NEWS README tech_report.tex

openSUSE Build Service is sponsored by