mbox

rsync: Update to 3.1.2.

Message ID 1462959140-30778-1-git-send-email-stefan.schantl@ipfire.org
State Accepted
Commit 7473defb95e13e254d3e4cd481f33ce5b03ee6ad
Headers

Message

Stefan Schantl May 11, 2016, 7:32 p.m. UTC
  This is a minor update to the latest stable version of rsync.

* Drop patch which got upstream.
* Link/Use system libpopt and zlib instead of bundled ones.
* Enable testsuite.
* Drop xinetd support and add service files for systemd.
* Ship a sample configuration file.

Fixes #11118.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
---
 rsync/patches/rsync-3.0.7-buf-overflow.patch | 39 -------------------
 rsync/rsync.nm                               | 58 ++++++++++++++++++++++++++--
 rsync/rsyncd.conf                            | 20 ++++++++++
 rsync/systemd/rsyncd.service                 |  9 +++++
 rsync/systemd/rsyncd.socket                  | 10 +++++
 rsync/systemd/rsyncd@.service                |  7 ++++
 6 files changed, 100 insertions(+), 43 deletions(-)
 delete mode 100644 rsync/patches/rsync-3.0.7-buf-overflow.patch
 create mode 100644 rsync/rsyncd.conf
 create mode 100644 rsync/systemd/rsyncd.service
 create mode 100644 rsync/systemd/rsyncd.socket
 create mode 100644 rsync/systemd/rsyncd@.service
  

Comments

Michael Tremer May 12, 2016, 1:11 a.m. UTC | #1
Hi,

I merged this. However, you create /run/rsyncd which is not re-created in a
systemd tempfile. Could you please send a new commit that adds that and bump the
release?

Best,
-Michael

On Wed, 2016-05-11 at 11:32 +0200, Stefan Schantl wrote:
> This is a minor update to the latest stable version of rsync.
> 
> * Drop patch which got upstream.
> * Link/Use system libpopt and zlib instead of bundled ones.
> * Enable testsuite.
> * Drop xinetd support and add service files for systemd.
> * Ship a sample configuration file.
> 
> Fixes #11118.
> 
> Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
> ---
>  rsync/patches/rsync-3.0.7-buf-overflow.patch | 39 -------------------
>  rsync/rsync.nm                               | 58 ++++++++++++++++++++++++++-
> -
>  rsync/rsyncd.conf                            | 20 ++++++++++
>  rsync/systemd/rsyncd.service                 |  9 +++++
>  rsync/systemd/rsyncd.socket                  | 10 +++++
>  rsync/systemd/rsyncd@.service                |  7 ++++
>  6 files changed, 100 insertions(+), 43 deletions(-)
>  delete mode 100644 rsync/patches/rsync-3.0.7-buf-overflow.patch
>  create mode 100644 rsync/rsyncd.conf
>  create mode 100644 rsync/systemd/rsyncd.service
>  create mode 100644 rsync/systemd/rsyncd.socket
>  create mode 100644 rsync/systemd/rsyncd@.service
> 
> diff --git a/rsync/patches/rsync-3.0.7-buf-overflow.patch
> b/rsync/patches/rsync-3.0.7-buf-overflow.patch
> deleted file mode 100644
> index 2c6b195..0000000
> --- a/rsync/patches/rsync-3.0.7-buf-overflow.patch
> +++ /dev/null
> @@ -1,39 +0,0 @@
> -index 7139b10..fef15aa 100644
> ---- a/flist.c
> -+++ b/flist.c
> -@@ -1640,21 +1640,29 @@ static void send_directory(int f, struct file_list
> *flist, char *fbuf, int len,
> - 	}
> - 
> - 	p = fbuf + len;
> --	if (len != 1 || *fbuf != '/')
> -+	if (len == 1 && *fbuf == '/')
> -+		remainder = MAXPATHLEN - 1;
> -+	else if (len < MAXPATHLEN-1) {
> - 		*p++ = '/';
> --	*p = '\0';
> --	remainder = MAXPATHLEN - (p - fbuf);
> -+		*p = '\0';
> -+		remainder = MAXPATHLEN - (len + 1);
> -+	} else
> -+		remainder = 0;
> - 
> - 	for (errno = 0, di = readdir(d); di; errno = 0, di = readdir(d)) {
> - 		char *dname = d_name(di);
> - 		if (dname[0] == '.' && (dname[1] == '\0'
> - 		    || (dname[1] == '.' && dname[2] == '\0')))
> - 			continue;
> --		if (strlcpy(p, dname, remainder) >= remainder) {
> -+		unsigned name_len = strlcpy(p, dname, remainder);
> -+		if (name_len >= remainder) {
> -+			char save = fbuf[len];
> -+			fbuf[len] = '\0';
> - 			io_error |= IOERR_GENERAL;
> - 			rprintf(FERROR_XFER,
> --				"cannot send long-named file %s\n",
> --				full_fname(fbuf));
> -+				"filename overflows max-path len by %u:
> %s/%s\n",
> -+				name_len - remainder + 1, fbuf, dname);
> -+			fbuf[len] = save;
> - 			continue;
> - 		}
> - 		if (dname[0] == '\0') {
> diff --git a/rsync/rsync.nm b/rsync/rsync.nm
> index 3af7d69..36e04b2 100644
> --- a/rsync/rsync.nm
> +++ b/rsync/rsync.nm
> @@ -4,7 +4,7 @@
>  #############################################################################
> ##
>  
>  name       = rsync
> -version    = 3.0.7
> +version    = 3.1.2
>  release    = 1
>  
>  groups     = Applications/Internet
> @@ -31,8 +31,17 @@ build
>  		libacl-devel
>  		libattr-devel
>  		popt-devel
> +		zlib-devel
> +
> +		# Testsuite.
> +		%{bindir}/setfacl
>  	end
>  
> +	configure_options += \
> +		--without-included-popt \
> +		--without-included-zlib
> +
> +
>  	prepare_cmds
>  		# Fix permission issure.
>  		cd %{DIR_APP} && chmod -x support/*
> @@ -52,19 +61,60 @@ build
>  
>  	make_build_targets = proto all
>  
> +	test
> +		# Fix permissions of testsuite helper script.
> +		#
> +		# Otherwise some tests of the testsuite will fail,
> +		# because the script is not allowed to be executed.
> +		chmod +x ./support/lsh.sh
> +
> +		make check
> +	end
> +
>  	make_install_targets += \
>  		INSTALLCMD="install -p" \
>  		INSTALLMAN="install -p"
>  
>  	install_cmds
> -		mkdir -pv %{BUILDROOT}/etc/xinetd.d
> -		install -p -m 644 %{DIR_SOURCE}/rsync.xinetd \
> -			%{BUILDROOT}/etc/xinetd.d/rsync
> +
> +		# Install config file.
> +		mkdir -pv %{BUILDROOT}%{sysconfdir}
> +
> +		install -m 0644 %{DIR_SOURCE}/rsyncd.conf \
> +			%{BUILDROOT}%{sysconfdir}/
> +
> +		# Create directory for pidfile.
> +		mkdir -pv %{BUILDROOT}/run/rsyncd
>  	end
> +
>  end
>  
>  packages
>  	package %{name}
> +		configfiles
> +			%{sysconfdir}/rsyncd.conf
> +		end
> +
> +		script postin
> +			systemctl daemon-reload >/dev/null 2>&1 || :
> +		end
> +
> +		script preun
> +			systemctl --no-reload disable rsyncd.service
> >/dev/null 2>&1 || :
> +			systemctl --no-reload disable rsyncd.socket
> >/dev/null 2>&1 || :
> +			systemctl stop rsyncd.service >/dev/null 2>&1 || :
> +			systemctl stop rsyncd.socket >/dev/null 2>&1 || :
> +			systemctl stop rsyncd@.service >/dev/null 2>&1 || :
> +		end
> +
> +		script postun
> +			systemctl daemon-reload >/dev/null 2>&1 || :
> +		end
> +
> +		script postup
> +			systemctl daemon-reload >/dev/null 2>&1 || :
> +			systemctl try-restart rsyncd.service >/dev/null 2>&1
> || :
> +		end
>  	end
>  
>  	package %{name}-debuginfo
> diff --git a/rsync/rsyncd.conf b/rsync/rsyncd.conf
> new file mode 100644
> index 0000000..09e768f
> --- /dev/null
> +++ b/rsync/rsyncd.conf
> @@ -0,0 +1,20 @@
> +# /etc/rsyncd: configuration file for rsync daemon mode
> +
> +# See rsyncd.conf man page for more options.
> +
> +# configuration example:
> +
> +# uid = nobody
> +# gid = nobody
> +# use chroot = yes
> +# max connections = 4
> +# pid file = /run/rsyncd/rsyncd.pid
> +# exclude = lost+found/
> +# transfer logging = yes
> +# timeout = 900
> +# ignore nonreadable = yes
> +# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
> +
> +# [ftp]
> +#        path = /home/ftp
> +#        comment = ftp export area
> diff --git a/rsync/systemd/rsyncd.service b/rsync/systemd/rsyncd.service
> new file mode 100644
> index 0000000..30c3ca0
> --- /dev/null
> +++ b/rsync/systemd/rsyncd.service
> @@ -0,0 +1,9 @@
> +[Unit]
> +Description=Fast remote file copy program daemon
> +ConditionPathExists=/etc/rsyncd.conf
> +
> +[Service]
> +ExecStart=/usr/bin/rsync --daemon --no-detach
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/rsync/systemd/rsyncd.socket b/rsync/systemd/rsyncd.socket
> new file mode 100644
> index 0000000..7306ad0
> --- /dev/null
> +++ b/rsync/systemd/rsyncd.socket
> @@ -0,0 +1,10 @@
> +[Unit]
> +Description=Rsync Server Socket
> +Conflicts=rsyncd.service
> +
> +[Socket]
> +ListenStream=873
> +Accept=yes
> +
> +[Install]
> +WantedBy=sockets.target 
> diff --git a/rsync/systemd/rsyncd@.service b/rsync/systemd/rsyncd@.service
> new file mode 100644
> index 0000000..beef5c9
> --- /dev/null
> +++ b/rsync/systemd/rsyncd@.service
> @@ -0,0 +1,7 @@
> +[Unit]
> +Description=Fast remote file copy program daemon
> +ConditionPathExists=/etc/rsyncd.conf
> +
> +[Service]
> +ExecStart=/usr/bin/rsync --daemon --no-detach
> +StandardInput=socket