summaryrefslogtreecommitdiff
path: root/cvs.spec
blob: 46200bae5c05025c0e4b158940c42e28bd3e8071 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
#
# Conditional build:
%bcond_without	kerberos5	# disable kerberos V support
#
Summary:	Concurrent Versioning System
Summary(de.UTF-8):	Concurrent-Versioning-System
Summary(es.UTF-8):	Control de versiones en modo concurrente
Summary(fr.UTF-8):	Un système pour maintenir à jour des fichiers
Summary(pl.UTF-8):	Concurrent Versioning System
Summary(pt_BR.UTF-8):	Controle de versões em modo concorrente
Summary(ru.UTF-8):	Система управления версиями
Summary(tr.UTF-8):	Sürüm denetim sistemi
Summary(uk.UTF-8):	Система керування версіями
Summary(zh_CN.UTF-8):	并发的版本管理系统CVS
Name:		cvs
Version:	1.12.13
Release:	16
License:	GPL
Group:		Development/Version Control
Source0:	http://ftp.gnu.org/non-gnu/cvs/source/feature/%{version}/%{name}-%{version}.tar.bz2
# Source0-md5:	956ab476ce276c2d19d583e227dbdbea
Source1:	%{name}.inetd
Patch1:		%{name}-fixed_buffer.patch
Patch2:		%{name}-home_etc.patch
Patch3:		%{name}-no_libnsl.patch
Patch4:		%{name}-info.patch
Patch5:		%{name}-posix.patch
Patch6:		%{name}-CAN_2005_2693.patch
Patch7:		%{name}-cvspass.patch
Patch8:		%{name}-datetime.patch
Patch9:		%{name}-getcwd.patch
Patch10:	%{name}-ac.patch
Patch11:	%{name}-printf-n.patch
Patch12:	%{name}-am.patch
Patch13:	%{name}-format-security.patch

# patches from debian
Patch100:	%{name}-debian-64bit-crash.patch
Patch101:	%{name}-debian-check-method-crash.patch
Patch102:	%{name}-debian-sparc.patch
Patch103:	%{name}-debian-zlib-read-compressed.patch
Patch104:	%{name}-debian-cvsrc.patch
Patch105:	%{name}-debian-date-format.patch
Patch106:	%{name}-debian-dsa-ext-pwd.patch
Patch107:	%{name}-debian-ext-exp.patch
Patch108:	%{name}-debian-extra-tags.patch
Patch109:	%{name}-debian-flag-conflicted-copies.patch
Patch110:	%{name}-debian-homedir.patch
Patch111:	%{name}-debian-import-n-X.patch
Patch112:	%{name}-debian-R-warning.patch
Patch113:	%{name}-debian-keyword-alnum.patch
Patch114:	%{name}-debian-l-opt.patch
Patch115:	%{name}-debian-newlines-commit-template.patch
Patch116:	%{name}-debian-normalize-roots.patch
Patch117:	%{name}-debian-pam.patch
Patch118:	%{name}-debian-parseopts.patch
Patch119:	%{name}-debian-perms.patch
Patch120:	%{name}-debian-server-wrapper.patch
Patch121:	%{name}-debian-repouid.patch
Patch122:	%{name}-debian-rsc2log.patch

URL:		http://www.nongnu.org/cvs/
BuildRequires:	autoconf >= 2.58
BuildRequires:	automake >= 1:1.7.9
%{?with_kerberos5:BuildRequires:	heimdal-devel}
BuildRequires:	pam-devel
BuildRequires:	rpmbuild(macros) >= 1.268
BuildRequires:	texinfo
BuildRequires:	zlib-devel
Provides:	cvs-client = %{version}
Provides:	cvs-gnu-client = %{version}
Obsoletes:	cvs-client
Obsoletes:	cvs-nserver-client
BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)

%define		_cvs_root	/var/lib/cvs

%description
CVS means Concurrent Version System; it is a version control system
which can record the history of your files (usually, but not always,
source code). CVS only stores the differences between versions,
instead of every version of every file you've ever created. CVS also
keeps a log of who and when made some changes and why they occurred,
among other aspects.

CVS is very helpful for managing releases and controlling the
concurrent editing of source files among multiple authors. Instead of
providing version control for a collection of files in a single
directory, CVS provides version control for a hierarchical collection
of directories consisting of revision controlled files. These
directories and files can then be combined together to form a software
release.

%description -l de.UTF-8
CVS ist ein Frontend für das RCS(1)-Revisionskontrollsystem, das den
Begriff der Revisionskontrolle von einer Sammlung von Dateien in einem
einzelnen Verzeichnis auf eine ganze Hierarchie ausweitet, bestehend
aus revisionskontrollierten Dateien. Diese Verzeichnisse und Dateien
lassen sich zu einer Software-Release kombinieren. CVS bietet die
Funktionen, die zur Verwaltung von Software-Releases und zur
Überwachung der gleichzeitigen Bearbeitung von Quelldateien durch
mehrere Software-Entwickler notwendig sind.

%description -l es.UTF-8
CVS significa "Concurrent Version System" (sistema concurrente de
control de versiones). Puede guardar la historia de sus ficheros
(normalmente, pero no necesariamente, código fuente). CVS sólo guarda
las diferencias entre las versiones, en vez de guardar cada una de las
versiones de cada fichero que haya creado. CVS también mantiene un
registro de quién y cuándo realizó un cambio, el porqué del cambio,
etc.

CVS es muy útil para manejar los releases y controlar la edición
concurrente de los ficheros fuente entre varios autores. En vez de
proveer control de versiones para una colección de ficheros en un solo
directorio, CVS la provee para una colección jerárquica de directorios
que consistan de ficheros de revisiones controladas. Esos directorios
y ficheros pueden luego ser reunidos para formar un release de
software.

%description -l fr.UTF-8
"CVS" signifie "Concurrent Version System". C'est un système de
comparaison de versions de fichiers, qui peut garder une trace des
changements apportés à des fichiers (le plus souvent, les fichiers des
sources d'un programme). CVS conserve seulement les différences, et
non l'intégralité d'un fichier récent et d'un fichier plus ancien. A
chaque modification d'un fichier, CVS garde (entre autres) le nom de
la personne ayant fait la modification, la raison justifiant cette
modification, et la date à laquelle celle-ci a eu lieu.

CVS est très utile pour gérer la mise en commun des modifications
apportées par plusieurs personnes travaillant en parallèle sur les
mêmes fichiers. Au lieu de garder plusieurs versions des fichiers dans
un seul répertoire, CVS crée une série de répertoires, chacun
contenant une nouvelle version des fichiers. Ces répertoires et ces
fichiers peuvent ensuite être regroupés pour former la version la plus
à jour du logiciel. Installez ce package si vous avez besoin
d'utiliser un système de contrôle de version.

%description -l pl.UTF-8
CVS jest nakładką na rcs (Revision Control System, czyli w wolnym
tłumaczeniu system kontroli wersji zasobów), który rozszerza
możliwości rcs'a z narzędzia do kontroli zbioru plików w pojedynczym
katalogu o możliwość kontroli zbioru hierarchicznie ułożonych
katalogów z plikami. Z pomocą CVS w łatwy sposób można zarządzać kodem
źródłowym opracowywanym przez nawet bardzo duże zespoły programistów
umożliwiając śledzenie i kontrolę wszystkich zmian w trakcie pracy nad
projektami i wypuszczaniem pełnych wersji oprogramowania (release).

%description -l pt_BR.UTF-8
CVS é um front end para o rcs(1) - revision control system - que
estende a noção de controle de revisão de uma coletânea de arquivo em
um único diretório para uma coleção hierárquica de diretórios que
contém arquivos controlados por revisão. Esses diretórios e arquivos
podem ser combinados juntos para criar uma release de software. CVS
oferece as funções necessárias para administrar essas release de
software e para controlar a edição concorrente de arquivos fonte por
múltiplos programadores.

%description -l ru.UTF-8
CVS (Concurrent Version System) - это система управления версиями,
которая умеет записать историю ваших файлов (обычно, но не всегда, это
исходные тексты). CVS сохраняет только различия между версиями вместо
каждой версии каждого файла, которая была когда-либо создана. Также
CVS хранит протокол того, кто, когда и зачем что-либо изменил.

CVS очень полезна для организации релизов и управления параллельной
правкой исходных файлов несколькими авторами. Вместо предоставления
управления версиями набора файлов в одном каталоге CVS предоставляет
управление версиями иерархического набора каталогов, состоящих из
файлов, версиями которых надо управллять. Эти файлы и каталоги могут
быть собраны вместе для формирования релиза ПО.

%description -l tr.UTF-8
CVS (Concurrent Versioning System), tek bir dizindeki dosya
topluluğunun sürüm denetimini, denetimi yapılmış dizinlerin hiyerarşik
topluluğuna genişleten rcs(1) sürüm denetim sisteminin ön yüzüdür. Bu
dizin ve dosyalar, bir yazılım yayını oluşturma amacıyla biraraya
getirilebilir. CVS, bu yazılım yayınlarının yönetilmesini ve kaynak
dosyaları bakımının birden çok yazılım geliştiricisi tarafından
eşzamanlı olarak yapılmasını kontrol etmek için gereken işlevleri
sağlar.

%description -l uk.UTF-8
CVS (Concurrent Version System) - це система керування версіями, яка
вміє записати історію ваших файлів (зазвичай, але не завжди, це
вихідні тексти). CVS зберігає тільки різницю між версіями замість
кожної версії кожного файлу, яка була колись створена. Також CVS
зберігає протокол того, хто, коли і навіщо щось змінив.

CVS дуже корисна для організацію релізів та керування паралельною
правкою визідних файлів кількома авторами. Замість надання можливості
керування версіями набору файлів в одному каталозі, CVS надає
можливість керування ієрархічним набором каталогів, що складаються з
файлів, версіями котрих треба керувати. Ці файли та каталоги можуть
бути зібрані разом для формування релізу ПЗ.

%package pserver
Summary:	rc-inetd config files to run CVS pserver
Summary(es.UTF-8):	Ficheros de configuración de rc-inetd para un servidor CVS pserver
Summary(pl.UTF-8):	Pliki konfiguracyjne rc-inetd do postawienia pservera CVS
Group:		Development/Version Control
Requires(post):	fileutils
Requires(postun):	/usr/sbin/groupdel
Requires(postun):	/usr/sbin/userdel
Requires(pre):	/bin/id
Requires(pre):	/usr/bin/getgid
Requires(pre):	/usr/sbin/groupadd
Requires(pre):	/usr/sbin/useradd
Requires:	%{name} = %{version}-%{release}
Requires:	rc-inetd
Provides:	cvs-gnu-pserver = %{version}-%{release}
Provides:	group(cvs)
Provides:	user(cvs)
Obsoletes:	cvs-nserver-common
Obsoletes:	cvs-nserver-nserver
Obsoletes:	cvs-nserver-pserver

%description pserver
Config files for rc-inetd that are necessary to run CVS in pserver
mode.

%description pserver -l es.UTF-8
Los ficheros de configuración rc-inetd necesarios para ejecutar CVS en
el modo de pserver.

%description pserver -l pl.UTF-8
Pliki konfiguracyjne rc-inetd niezbędne do uruchomienia CVSa w trybie
pserver.

%prep
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1

%patch100 -p1
%patch101 -p1
%patch102 -p1
%patch103 -p1
%patch104 -p1
%patch105 -p1
# undefined reference to getpwline
#%patch106 -p1
%patch107 -p2
%patch108 -p1
%patch109 -p1
%patch110 -p1
%patch111 -p1
%patch112 -p1
%patch113 -p1
%patch114 -p1
%patch115 -p1
%patch116 -p1
%patch117 -p1
%patch118 -p1
%patch119 -p1
%patch120 -p1
%patch121 -p1
%patch122 -p1

rm -rf zlib && sed -i -e 's#zlib/Makefile##g' configure.in

# broken implementation, never use
rm lib/getcwd.c

%build
rm aclocal.m4
%{__aclocal} -I m4
%{__autoheader}
%{__autoconf}
%{__automake}
%configure \
	--enable-pam \
	--with-hardcoded-pam-service-name=cvs \
	--with-external-zlib \
	--enable-encryption \
	--enable-server \
	--enable-client \
	--enable-rootcommit \
	--with%{!?with_kerberos5:out}-gssapi \
	--with-tmpdir=/tmp \
	--with-rsh=%{_bindir}/ssh \
	--with-editor=/bin/vi

%{__make}

%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{/etc/sysconfig/rc-inetd,%{_cvs_root}}

%{__make} install \
	DESTDIR=$RPM_BUILD_ROOT

install %{SOURCE1} $RPM_BUILD_ROOT/etc/sysconfig/rc-inetd/cvs

rm -f contrib/{.cvsignore,Makefile*,*.pl,*.sh,*.csh}
mv -f $RPM_BUILD_ROOT%{_datadir}/cvs/contrib/rcs2log $RPM_BUILD_ROOT%{_bindir}

%clean
rm -rf $RPM_BUILD_ROOT

%post	-p	/sbin/postshell
-/usr/sbin/fix-info-dir -c %{_infodir}

%postun	-p	/sbin/postshell
-/usr/sbin/fix-info-dir -c %{_infodir}

%pre pserver
%groupadd -f -g 52 cvs
%useradd -g cvs -d %{_cvs_root} -u 52 -s /bin/false cvs

%post pserver
if [ "$1" = "1" ]; then
	# Initialise repository
	%{_bindir}/cvs -d :local:%{_cvs_root} init
	chown -R cvs:cvs %{_cvs_root}/CVSROOT
fi
%service -q rc-inetd reload

%postun pserver
if [ "$1" = "0" ]; then
	%userremove cvs
	%groupremove cvs
	%service -q rc-inetd reload
fi

%triggerpostun -- cvs-pserver < 1.1.13-1
echo "Warning: default cvsroot moved to %{_cvs_root}."
echo "Check your configration."

%files
%defattr(644,root,root,755)
%doc BUGS FAQ MINOR-BUGS NEWS PROJECTS TODO README
%doc ChangeLog doc/*.pdf contrib
%attr(755,root,root) %{_bindir}/*
%{_mandir}/man[158]/*
%{_infodir}/cvs*

%files pserver
%defattr(644,root,root,755)
%attr(770,root,cvs) %dir %{_cvs_root}
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/rc-inetd/cvs