- rel 2; lchmod can return ENOTSUP on glibc 2.32 and older kernels (like 4.4)
[packages/rsync.git] / rsync.spec
1 # TODO:
2 #   3.1.3 rsyncd segfaults very early in server rsync:// mode (both inetd and standalone)
3 #   rsync[27223]: segfault at 7468 ip 00007f4281c56e81 sp 00007ffc29186160 error 4 in libc-2.27.so[7f4281bd3000+1b4000]
4 #
5 # Conditional build:
6 %bcond_with     rsh     # set remote shell command to rsh instead of ssh (old behaviour)
7 %bcond_with     fadvise # apply fadvise patch
8 %bcond_with     tests   # perform "make test"
9 #
10 %ifarch alpha
11 %undefine       with_tests
12 %endif
13 Summary:        Program for efficient remote updates of files
14 Summary(es.UTF-8):      Programa para actualizar archivos remotos de forma eficiente
15 Summary(ko.UTF-8):      네트워크를 통한 파일동기화를 위한 프로그램
16 Summary(pl.UTF-8):      Program do wydajnego zdalnego uaktualniania plików
17 Summary(pt_BR.UTF-8):   Programa para atualizar arquivos remotos de forma eficiente
18 Summary(ru.UTF-8):      Программа для эффективного удаленного обновления файлов
19 Summary(uk.UTF-8):      Програма для ефективного віддаленого оновлення файлів
20 Summary(zh_CN.UTF-8):   [通讯]传输工具
21 Summary(zh_TW.UTF-8):   [喙啪]\e$(B6G?i火(c\e(B
22 Name:           rsync
23 Version:        3.2.3
24 Release:        2
25 Epoch:          1
26 License:        GPL v3+
27 Group:          Networking/Utilities
28 Source0:        https://rsync.samba.org/ftp/rsync/%{name}-%{version}.tar.gz
29 # Source0-md5:  209f8326f5137d8817a6276d9577a2f1
30 Source1:        https://rsync.samba.org/ftp/rsync/%{name}-patches-%{version}.tar.gz
31 # Source1-md5:  884c872b55c7431f4c4e8d8bf182fafa
32 Source2:        %{name}.inet
33 Source3:        %{name}.init
34 Source4:        %{name}.sysconfig
35 Source5:        %{name}d.logrotate
36 Patch0:         %{name}-config.patch
37 Patch1:         %{name}-fadvise.patch
38 Patch2:         lchmod.patch
39 URL:            https://rsync.samba.org/
40 BuildRequires:  acl-devel
41 BuildRequires:  autoconf >= 2.69
42 BuildRequires:  automake
43 BuildRequires:  libstdc++-devel
44 BuildRequires:  lz4-devel
45 BuildRequires:  openssl-devel
46 BuildRequires:  popt-devel
47 BuildRequires:  python3 >= 1:3
48 BuildRequires:  python3-commonmark
49 BuildRequires:  rpmbuild(macros) >= 1.318
50 BuildRequires:  xxHash-devel >= 0.8.0
51 BuildRequires:  zstd-devel
52 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
53
54 %define         _duplicate_files_terminate_build        0
55 %define         _sysconfdir     /etc/rsyncd
56
57 %description
58 rsync is a replacement for rcp that has many more features.
59
60 rsync uses the "rsync algorithm" which provides a very fast method for
61 bringing remote files into sync. It does this by sending just the
62 differences in the files across the link, without requiring that both
63 sets of files are present at one of the ends of the link beforehand.
64
65 A technical report describing the rsync algorithm is included with
66 this package.
67
68 %description -l es.UTF-8
69 rsync es un substituto más rápido y flexible para rcp que permite la
70 sincronización de archivos o directorios, vía red, de forma rápida y
71 eficiente, entre diferentes máquinas transfiriendo solamente las
72 diferencias entre estos directorios de forma compactada. No necesita
73 que ninguna de las máquinas tengan una copia de lo que está en la
74 otra. Está disponible en este paquete, una relación técnica
75 describiendo el algoritmo usado por el rsync.
76
77 %description -l ko.UTF-8
78 Rsync는 원격 호스트 파일을 매우 빨리 동기화하는데 신뢰할만한
79 알고리즘을 사용한다. Rsync는 파일의 전체를 보내는 것 대신에 네트웍을
80 통해 파일의 다른 부분만을 전송하기 때문에 빠르다. Rsync는 강력한 미러
81 프로세스 혹은 rcp 커멘드를 통한 더 우수한 대체용으로써 사용된다. rsync
82 알고리즘을 묘사하는 기술적인 내용은 이 꾸러미에 포함되어 있다.
83
84 %description -l pl.UTF-8
85 Rsync jest zamiennikiem programu rcp z bardziej rozbudowaną składnią
86 poleceń. Program ten używa efektywnego algorytmu "rsync" w czasie
87 komunikacji i transportu plików do systemu zdalnego. Dokumentacja
88 techniczna nowego algorytmu została również dołączona do pakietu.
89
90 %description -l pt_BR.UTF-8
91 O rsync é um substituto mais rápido e flexível para o rcp permitindo
92 sincronização de arquivos ou diretórios via rede de forma rápida e
93 eficiente entre diferentes máquinas transferindo somente as diferenças
94 entre estes diretórios de forma compactada. Ele não precisa que
95 nenhuma das máquinas tenha uma cópia do que está na outra.
96
97 Um relatório técnico descrevendo o algoritmo usado pelo rsync está
98 disponível neste pacote.
99
100 %description -l ru.UTF-8
101 rsync - это более быстрая и гибкая альтернатива rcp, позволяющая
102 быструю и эффективную по отношению к ресурсам сети синхронизацию
103 файлов или каталогов на различных машинах путем передачи только
104 различий между ними в компрессированном виде. При этом совершенно не
105 обязательно, чтобы одна машина имела у себя копию того, что есть на
106 другой машине.
107
108 %description -l uk.UTF-8
109 rsync - це швидша та гнучкіша альтернатива rcp, яка забезпечує швидку
110 та ефективну по відношенню до ресурсів мережі синхронізацію файлів чи
111 каталогів на різних машинах шляхом передачі лише відмінностей між ними
112 в компресованому виді. При цьому зовсім не обов'язково, щоб одна
113 машина мала в себе копію того, що є на іншій машині.
114
115 %package -n rsyncd-inetd
116 Summary:        Files necessary to run rsync in daemon mode
117 Summary(pl.UTF-8):      Pliki niezbędne do uruchomienia rsynca w trybie serwera
118 Group:          Networking/Daemons
119 Requires:       %{name} = %{epoch}:%{version}-%{release}
120 Requires:       rc-inetd
121 Provides:       rsyncd
122 Obsoletes:      rsyncd
123 Obsoletes:      rsyncd-standalone
124
125 %description -n rsyncd-inetd
126 rsync is a replacement for rcp that has many more features.
127
128 rsync uses the "rsync algorithm" which provides a very fast method for
129 bringing remote files into sync. It does this by sending just the
130 differences in the files across the link, without requiring that both
131 sets of files are present at one of the ends of the link beforehand.
132
133 A technical report describing the rsync algorithm is included with
134 this package.
135
136 %description -n rsyncd-inetd -l pl.UTF-8
137 Rsync jest zamiennikiem programu rcp z bardziej rozbudowaną składnią
138 poleceń. Program ten używa efektywnego algorytmu "rsync" w czasie
139 komunikacji i transportu plików do systemu zdalnego. Dokumentacja
140 techniczna nowego algorytmu została również dołączona do pakietu.
141
142 %package -n rsyncd-standalone
143 Summary:        Files necessary to run rsync in daemon mode
144 Summary(pl.UTF-8):      Pliki niezbędne do uruchomienia rsynca w trybie serwera
145 Group:          Networking/Daemons
146 Requires(post,preun):   /sbin/chkconfig
147 Requires:       %{name} = %{epoch}:%{version}-%{release}
148 Provides:       rsyncd
149 Obsoletes:      rsyncd
150 Obsoletes:      rsyncd-inetd
151
152 %description -n rsyncd-standalone
153 rsync is a replacement for rcp that has many more features.
154
155 rsync uses the "rsync algorithm" which provides a very fast method for
156 bringing remote files into sync. It does this by sending just the
157 differences in the files across the link, without requiring that both
158 sets of files are present at one of the ends of the link beforehand.
159
160 A technical report describing the rsync algorithm is included with
161 this package.
162
163 %description -n rsyncd-standalone -l pl.UTF-8
164 Rsync jest zamiennikiem programu rcp z bardziej rozbudowaną składnią
165 poleceń. Program ten używa efektywnego algorytmu "rsync" w czasie
166 komunikacji i transportu plików do systemu zdalnego. Dokumentacja
167 techniczna nowego algorytmu została również dołączona do pakietu.
168
169 %prep
170 %setup -q -b1
171 %patch0 -p1
172 %{?with_fadvise:%patch1 -p1}
173 %patch2 -p1
174
175 sed -i -e 's|#!/usr/bin/env bash|#!/bin/bash|' rsync-ssl
176
177 %build
178 cp -f /usr/share/automake/config.sub .
179 %{__autoheader}
180 %{__autoconf}
181 %configure \
182         LIBS="-lcrypto" \
183         --enable-acl-support \
184         --disable-debug \
185         --enable-ipv6 \
186         --enable-xattr-support \
187         %{?with_rsh:--with-rsh=rsh} \
188         --with-rsyncd-conf=%{_sysconfdir}/rsyncd.conf
189 %{__make} proto
190 %{__make}
191
192 %{?with_tests:%{__make} test}
193
194 %install
195 rm -rf $RPM_BUILD_ROOT
196 install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/{sysconfig/rc-inetd,rc.d/init.d,logrotate.d,env.d},/var/log}
197
198 %{__make} install \
199         prefix=$RPM_BUILD_ROOT%{_prefix} \
200         mandir=$RPM_BUILD_ROOT%{_mandir} \
201         bindir=$RPM_BUILD_ROOT%{_bindir}
202
203 :> $RPM_BUILD_ROOT/var/log/rsyncd.log
204 :> $RPM_BUILD_ROOT%{_sysconfdir}/rsyncd.secrets
205
206 cat << EOF > $RPM_BUILD_ROOT%{_sysconfdir}/rsyncd.conf
207 #log file = /var/log/rsyncd.log
208 EOF
209
210 cat << 'EOF' > $RPM_BUILD_ROOT/etc/env.d/CVSIGNORE
211 #CVSIGNORE=
212 EOF
213 cat << 'EOF' > $RPM_BUILD_ROOT/etc/env.d/RSYNC_RSH
214 #RSYNC_RSH=
215 EOF
216 cat << 'EOF' > $RPM_BUILD_ROOT/etc/env.d/RSYNC_PROXY
217 #RSYNC_PROXY=
218 EOF
219 cat << 'EOF' > $RPM_BUILD_ROOT/etc/env.d/RSYNC_PASSWORD
220 #RSYNC_PASSWORD=
221 EOF
222
223 install -p %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/rsyncd
224 cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/rc-inetd/rsyncd
225 cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/rsyncd
226 cp -p %{SOURCE5} $RPM_BUILD_ROOT/etc/logrotate.d/rsyncd
227
228 %clean
229 rm -rf $RPM_BUILD_ROOT
230
231 %post
232 %env_update
233
234 %postun
235 %env_update
236
237 %post -n rsyncd-inetd
238 %service -q rc-inetd reload
239
240 %postun -n rsyncd-inetd
241 if [ "$1" = "0" ]; then
242         %service -q rc-inetd reload
243 fi
244
245 %post -n rsyncd-standalone
246 /sbin/chkconfig --add rsyncd
247 %service rsyncd restart "rsync server"
248
249 %preun -n rsyncd-standalone
250 if [ "$1" = "0" ]; then
251         %service rsyncd stop
252         /sbin/chkconfig --del rsyncd
253 fi
254
255 %files
256 %defattr(644,root,root,755)
257 %doc README.md NEWS.md TODO support
258 %config(noreplace,missingok) %verify(not md5 mtime size) /etc/env.d/CVSIGNORE
259 %config(noreplace,missingok) %verify(not md5 mtime size) /etc/env.d/RSYNC_PASSWORD
260 %config(noreplace,missingok) %verify(not md5 mtime size) /etc/env.d/RSYNC_PROXY
261 %config(noreplace,missingok) %verify(not md5 mtime size) /etc/env.d/RSYNC_RSH
262 %attr(755,root,root) %{_bindir}/rsync
263 %attr(755,root,root) %{_bindir}/rsync-ssl
264 %{_mandir}/man1/rsync.1*
265 %{_mandir}/man1/rsync-ssl.1*
266
267 %files -n rsyncd-inetd
268 %defattr(644,root,root,755)
269 %dir %{_sysconfdir}
270 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rsyncd.conf
271 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rsyncd.secrets
272 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/rsyncd
273 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/rc-inetd/rsyncd
274 %attr(640,root,root) %ghost /var/log/rsyncd.log
275 %{_mandir}/man5/rsyncd.conf.5*
276
277 %files -n rsyncd-standalone
278 %defattr(644,root,root,755)
279 %dir %{_sysconfdir}
280 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rsyncd.conf
281 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rsyncd.secrets
282 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/rsyncd
283 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/rsyncd
284 %attr(640,root,root) %ghost /var/log/rsyncd.log
285 %attr(754,root,root) /etc/rc.d/init.d/rsyncd
286 %{_mandir}/man5/rsyncd.conf.5*
This page took 0.149667 seconds and 3 git commands to generate.