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