From 9f299381ab4c418d61ddf1d46599ca67d3badeff Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Fri, 6 Nov 2020 17:30:44 +0100 Subject: [PATCH] - rel 2; lchmod can return ENOTSUP on glibc 2.32 and older kernels (like 4.4) --- lchmod.patch | 21 +++++++++++++++++++++ rsync.spec | 4 +++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 lchmod.patch diff --git a/lchmod.patch b/lchmod.patch new file mode 100644 index 0000000..88bad5a --- /dev/null +++ b/lchmod.patch @@ -0,0 +1,21 @@ +--- rsync-3.2.3/syscall.c~ 2020-07-28 01:36:55.000000000 +0200 ++++ rsync-3.2.3/syscall.c 2020-11-06 17:26:04.220502740 +0100 +@@ -232,7 +232,8 @@ int do_chmod(const char *path, mode_t mo + RETURN_ERROR_IF_RO_OR_LO; + #ifdef HAVE_LCHMOD + code = lchmod(path, mode & CHMOD_BITS); +-#else ++ if (code < 0 && errno == ENOTSUP) { ++#endif + if (S_ISLNK(mode)) { + # if defined HAVE_SETATTRLIST + struct attrlist attrList; +@@ -247,6 +248,8 @@ int do_chmod(const char *path, mode_t mo + # endif + } else + code = chmod(path, mode & CHMOD_BITS); /* DISCOURAGED FUNCTION */ ++#ifdef HAVE_LCHMOD ++ } + #endif /* !HAVE_LCHMOD */ + if (code != 0 && (preserve_perms || preserve_executability)) + return code; diff --git a/rsync.spec b/rsync.spec index ea0b03a..ac0243a 100644 --- a/rsync.spec +++ b/rsync.spec @@ -21,7 +21,7 @@ Summary(zh_CN.UTF-8): [通讯]传输工具 Summary(zh_TW.UTF-8): [喙啪]$(B6G?i火(c(B Name: rsync Version: 3.2.3 -Release: 1 +Release: 2 Epoch: 1 License: GPL v3+ Group: Networking/Utilities @@ -35,6 +35,7 @@ Source4: %{name}.sysconfig Source5: %{name}d.logrotate Patch0: %{name}-config.patch Patch1: %{name}-fadvise.patch +Patch2: lchmod.patch URL: https://rsync.samba.org/ BuildRequires: acl-devel BuildRequires: autoconf >= 2.69 @@ -169,6 +170,7 @@ techniczna nowego algorytmu została również dołączona do pakietu. %setup -q -b1 %patch0 -p1 %{?with_fadvise:%patch1 -p1} +%patch2 -p1 sed -i -e 's|#!/usr/bin/env bash|#!/bin/bash|' rsync-ssl -- 2.43.0