-Summary: Concurrent Versions System
-Summary(de): Concurrent-Versioning-System
-Summary(fr): Un système pour maintenir à jour des fichiers
-Summary(pl): Concurrent Versioning System
-Summary(tr): Sürüm denetim sistemi
+# TODO:
+# - trigger for upgrade from old cvs - after that package stays without any
+# users and nserver-common is not installed...
+Summary: Concurrent Versions System - nserver
+Summary(de): Concurrent-Versioning-System - nserver
+Summary(fr): Un système pour maintenir à jour des fichiers - nserver
+Summary(pl): Concurrent Versions System - nserver
+Summary(tr): Sürüm denetim sistemi - nserver
Name: cvs-nserver
-Version: 1.10.8.3
-Release: 1
+Version: 1.11.1.52
+Release: 16
License: GPL
Group: Development/Version Control
-Group(pl): Programowanie/Zarz±dzanie wersjami
-Source0: http://alexm.here.ru/cvs-nserver/download/%{name}-%{version}.tar.gz
-Patch0: cvs-nserver-PAM_fix.patch
+Source0: http://dl.sourceforge.net/cvs-nserver/%{name}-%{version}.tar.gz
+# Source0-md5: 357fb5f37cc556977dad79175e9c2d97
+Source1: %{name}.inetd
+Source2: cvs-pserver.inetd
+Patch0: %{name}-cvspasswd.patch
+Patch1: %{name}-info.patch
+Patch2: %{name}-am_ac.patch
+Patch3: %{name}-cvspass.patch
+Patch4: %{name}-home_etc.patch
+Patch5: %{name}-ssl-link.patch
+Patch6: %{name}-fix_doc_CVSUSER.patch
+Patch7: %{name}-segv.patch
+Patch8: %{name}-initgroups-rootonly.patch
+Patch9: %{name}-zlibfix.patch
+Patch10: %{name}-home_etc2.patch
+Patch11: %{name}-posix.patch
+Patch12: %{name}-CAN-2002-0844.patch
+Patch13: %{name}-CAN-2003-0015.patch
+Patch14: %{name}-CAN-2003-0977-and-CAN-2004-0180.patch
+Patch15: %{name}-CAN-2004-0396.patch
+Patch16: %{name}-CAN-2004-0414.patch
+Patch17: %{name}-CAN-2004-0416-0417-0418.patch
+Patch18: %{name}-dblshutdown.patch
+URL: http://cvs-nserver.sourceforge.net/
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: openssl-devel >= 0.9.7d
+BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: texinfo
+BuildRequires: zlib-devel
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+%define _cvsroot /var/lib/cvs
+
%description
CVS is a version control system, which allows you to keep old versions
of files (usually source code), keep a log of who, when, and why
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 zespó³y programistów
+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).
eþzamanlý olarak yapýlmasýný kontrol etmek için gereken iþlevleri
saðlar.
+%package client
+Summary: Concurrent Versions System - client
+Summary(pl): Concurrent Versions System - klient
+Group: Development/Version Control
+Provides: cvs = %{version}
+Obsoletes: cvs
+Obsoletes: cvs-npclient
+
+%description client
+CVS client.
+
+%description client -l pl
+Klient CVS.
+
+%package common
+Summary: Concurrent Versions System - common files
+Summary(pl): Concurrent Versions System - wspólne pliki
+Group: Development/Version Control
+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(pre): cvs-nserver-client
+Requires(pre): fileutils
+Requires: %{name}-client = %{version}-%{release}
+Provides: group(cvs)
+Provides: group(cvsadmin)
+Provides: user(cvs)
+Provides: user(cvsadmin)
+Obsoletes: cvs-nserver
+
+%description common
+CVS - common server files.
+
+%description common -l pl
+Wspólne pliki serwerów CVS.
+
+%package pserver
+Summary: Concurrent Versions System - pserver
+Summary(pl): Concurrent Versions System - pserver
+Group: Development/Version Control
+Requires: %{name}-common = %{version}-%{release}
+Requires: rc-inetd
+Obsoletes: cvs-npserver
+Obsoletes: cvs-pserver
+
+%description pserver
+CVS server - pserver files.
+
+%description pserver -l pl
+Serwer CVS - pliki pservera.
+
+%package nserver
+Summary: Concurrent Versions System - nserver
+Summary(pl): Concurrent Versions System - nserver
+Group: Development/Version Control
+Requires: %{name}-common = %{version}-%{release}
+Requires: rc-inetd
+Obsoletes: cvs-nserver
+
+%description nserver
+CVS server - nserver files.
+
+%description nserver -l pl
+Serwer CVS - pliki nservera.
+
%prep
%setup -q
%patch0 -p1
+%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
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+%patch17 -p1
+%patch18 -p1
%build
+%{__aclocal}
+%{__autoconf}
+%{__automake}
%configure \
- --enable-pam
+ --enable-encryption \
+ --enable-client \
+ --enable-server \
+ --enable-setuid \
+ --with-openssl \
+ --without-gssapi
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
-%{__make} installdirs
-%{__make} PAMDIR=$RPM_BUILD_ROOT/etc/pam.d install
-%{__make} install-setuid
-rm -f $RPM_BUILD_ROOT%{_prefix}/info/cvs*
-%{__make} install-info
+install -d $RPM_BUILD_ROOT{/etc/sysconfig/rc-inetd,%{_cvsroot},/var/lock/cvs}
+
+%{__make} install \
+ DESTDIR=$RPM_BUILD_ROOT
+
+install %{SOURCE1} $RPM_BUILD_ROOT/etc/sysconfig/rc-inetd/cvs-nserver
+install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/rc-inetd/cvs-pserver
-gzip -9nf $RPM_BUILD_ROOT{%{_infodir}/*,%{_mandir}/man?/*} \
- BUGS FAQ HACKING MINOR-BUGS NEWS PROJECTS README TESTS TODO
+cat << EOF >$RPM_BUILD_ROOT%{_bindir}/cvs-pserver-script
+#!/bin/sh
+REPOSITORY="%{_cvsroot}"
+if [ -f /etc/sysconfig/cvs ]; then
+ . /etc/sysconfig/cvs
+fi
+
+CVSPASSWD=%{_bindir}/cvspasswd \
+exec %{_bindir}/cvs-pserver \$REPOSITORY -- \
+%{_bindir}/cvschkpw %{_bindir}/cvs pserver
+EOF
+
+cat << EOF >$RPM_BUILD_ROOT%{_bindir}/cvs-nserver-script
+#!/bin/sh
+REPOSITORY="%{_cvsroot}"
+if [ -f /etc/sysconfig/cvs ]; then
+ . /etc/sysconfig/cvs
+fi
+
+CVSPASSWD=%{_bindir}/cvspasswd \
+exec %{_bindir}/cvs-nserver \$REPOSITORY -- \
+%{_bindir}/cvschkpw %{_bindir}/cvs nserver
+EOF
+
+cat << EOF >$RPM_BUILD_ROOT/etc/sysconfig/cvs
+# In this file you can specify additional repositories (separated with space)
+# or just set different location.
+# Default is "%{_cvsroot}".
+#REPOSITORY="%{_cvsroot}"
+# According to FHS 2.3 you can use some subdirectory in /srv, e.g.:
+#REPOSITORY="/srv/cvs"
+EOF
+
+mv -f $RPM_BUILD_ROOT%{_datadir}/cvs-nserver/contrib/rcs2log \
+ $RPM_BUILD_ROOT%{_bindir}
%clean
rm -rf $RPM_BUILD_ROOT
-%files
+%post client
+[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+
+%postun client
+[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+
+%pre common
+%groupadd -P %{name}-common -g 52 -r cvs
+%groupadd -P %{name}-common -g 53 -r cvsadmin
+%useradd -P %{name}-common -u 52 -r -d %{_cvsroot} -s /bin/false -c "CVS user" -g cvs cvs
+%useradd -P %{name}-common -u 53 -r -d %{_cvsroot} -s /bin/false -c "CVS user" -g cvsadmin -G cvs cvsadmin
+
+if [ "$1" = 1 ]; then
+ echo "Initializing repository..."
+ %{_bindir}/cvs -d :local:%{_cvsroot} init
+ chown -R cvsadmin:cvsadmin %{_cvsroot}/CVSROOT
+fi
+
+%postun common
+if [ "$1" = "0" ]; then
+ %userremove cvs
+ %userremove cvsadmin
+ %groupremove cvs
+ %groupremove cvsadmin
+fi
+
+%post pserver
+%service -q rc-inetd reload
+
+%postun pserver
+%service -q rc-inetd reload
+
+%post nserver
+%service -q rc-inetd reload
+
+%postun nserver
+%service -q rc-inetd reload
+
+%files client
%defattr(644,root,root,755)
-%doc *.gz
+%doc AUTHORS BUGS ChangeLog FAQ FAQ.nserver NEWS NEWS.nserver PROJECTS
+%doc README README.checkpassword TODO
%attr(755,root,root) %{_bindir}/cvs
-%attr(755,root,root) %{_bindir}/cvschkpw
-%attr(755,root,root) %{_bindir}/cvspasswd
-%attr(755,root,root) %{_bindir}/cvs-pserver
-%attr(755,root,root) %{_bindir}/cvs-nserver
-%attr(755,root,root) %{_bindir}/checkpassword
-%attr(755,root,root) %{_bindir}/checkpassword-pam
%attr(755,root,root) %{_bindir}/cvsbug
-%attr(755,root,root) %{_bindir}/rcs2log
-/etc/pam.d/cvspserver
-%{_mandir}/man1/cvs.1*
-%{_mandir}/man5/cvs.5*
+%{_infodir}/cvs*
+%{_mandir}/man[15]/cvs.*
%{_mandir}/man8/cvsbug.8*
-%{_mandir}/man8/cvs-nserver.8*
-%{_mandir}/man8/cvs-pserver.8*
+
+%files common
+%defattr(644,root,root,755)
+%attr(640,root,cvs) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/cvs
+%attr(4754,cvsadmin,cvs) %{_bindir}/cvspasswd
+%attr(755,root,root) %{_bindir}/cvschkpw
+%attr(755,root,root) %{_bindir}/rcs2log
+%dir %{_datadir}/cvs-nserver
+%dir %{_datadir}/cvs-nserver/contrib
+%{_datadir}/cvs-nserver/contrib/*
+%attr(770,cvsadmin,cvs) %dir %{_cvsroot}
%{_mandir}/man8/cvs-server.8*
-%{_infodir}/cvs*
-%{_libdir}/cvs
+%attr(770,cvsadmin,cvs) %dir /var/lock/cvs
+
+%files pserver
+%defattr(644,root,root,755)
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/rc-inetd/cvs-pserver
+%attr(755,root,root) %{_bindir}/cvs-pserver*
+%{_mandir}/man8/cvs-pserver.8*
+
+%files nserver
+%defattr(644,root,root,755)
+%doc NEWS.nserver FAQ.nserver
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/rc-inetd/cvs-nserver
+%attr(755,root,root) %{_bindir}/cvs-nserver*
+%{_mandir}/man8/cvs-nserver.8*