%bcond_without kerberos # build without krb5 support
#
# TODO:
+# - commit -r BRANCH is rejected (contrary to manual)
+# you can commit new file to branch with this technique:
+# cvs add file.patch
+# cvs up -r BRANCH file.patch
+# cvs ci -m '- bleh' file.patch
+# or just install cvs client from cvsnt package.
+# - the newline auto translation on text files should be disabled on .patch files (better for any!)
# - check server mode and default config
-# - create cvsnt-database-xyz and cvsnt-protocol-xyz subpackages
+# - unpackaged:
+# /usr/lib/libcvsapi.la
+# /usr/lib/libcvsapi.so
+# /usr/lib/libcvstools.la
+# /usr/lib/libcvstools.so
+# /usr/lib/libmdnsclient.la
+# /usr/lib/libmdnsclient.so
Summary: Concurrent Versioning System
Summary(pl.UTF-8): Concurrent Versioning System
Name: cvsnt
-Version: 2.5.03.2382
-Release: 0.1
+# http://www.cvsnt.org/archive/2.5_stable tell which version is stable
+Version: 2.5.05.3744
+Release: 6
License: GPL v2+/LGPL v2+
Group: Development/Version Control
-Source0: http://unifacecm.de/archive/%{name}-%{version}.tar.gz
-# Source0-md5: 4f7d2e54c5529829a43b089f9b37c86e
+Source0: http://www.cvsnt.org/archive/%{name}-%{version}.tar.gz
+# Source0-md5: 64aa0fc627893cc66182023b936260da
Source1: %{name}.inetd
Source2: %{name}-cvslockd.init
+Source3: %{name}.pam
+Patch0: %{name}-system-pcre.patch
+Patch1: %{name}-system-ntlm.patch
+Patch2: %{name}-build.patch
+Patch3: %{name}-nospam.patch
+Patch4: %{name}-fixes.patch
+Patch5: %{name}-gcc4.patch
URL: http://www.cvsnt.org/
BuildRequires: autoconf >= 2.58
BuildRequires: automake >= 1:1.7.9
-BuildRequires: avahi-compat-libdns_sd-devel
BuildRequires: docbook-style-xsl
-BuildRequires: expat-devel
-%{?with_kerberos:BuildRequires: krb5-devel}
+BuildRequires: howl-devel
+%{?with_kerberos:BuildRequires: heimdal-devel}
+BuildRequires: libltdl-devel
+BuildRequires: libntlm-devel >= 0.3.6
BuildRequires: libstdc++-devel
+BuildRequires: libtool
+BuildRequires: libxml2-devel
BuildRequires: mysql-devel
BuildRequires: openssl-devel
BuildRequires: pam-devel
BuildRequires: postgresql-devel
BuildRequires: rpmbuild(macros) >= 1.268
BuildRequires: sqlite3-devel
-BuildRequires: texinfo
BuildRequires: unixODBC-devel
BuildRequires: xmlto
BuildRequires: zlib-devel
+Requires(post): /sbin/ldconfig
Provides: cvs-client = %{version}
Obsoletes: cvs-client
Obsoletes: cvs-nserver-client
Requires(pre): /usr/sbin/groupadd
Requires(pre): /usr/sbin/useradd
Requires: %{name} = %{version}-%{release}
+Requires: %{name}-cvslockd = %{version}-%{release}
Requires: rc-inetd
Provides: group(cvs)
Provides: user(cvs)
Config files for rc-inetd that are necessary to run CVS in pserver
mode.
+%package cvslockd
+Summary: locking daemon
+Group: Development/Version Control
+
+%description cvslockd
+CVS locking daemon.
+
+%package database-mysql
+Summary: MySQL Database support for CVSNT
+Group: Development/Version Control
+Requires: %{name} = %{version}-%{release}
+
+%description database-mysql
+MySQL Database support for CVSNT.
+
+%package database-odbc
+Summary: ODBC support for CVSNT
+Group: Development/Version Control
+Requires: %{name} = %{version}-%{release}
+
+%description database-odbc
+ODBC support for CVSNT.
+
+%package database-postgres
+Summary: PostgreSQL Database support for CVSNT
+Group: Development/Version Control
+Requires: %{name} = %{version}-%{release}
+
+%description database-postgres
+PostgreSQL Database support for CVSNT.
+
+%package database-sqlite
+Summary: SQLite Database support for CVSNT
+Group: Development/Version Control
+Requires: %{name} = %{version}-%{release}
+
+%description database-sqlite
+SQLite Database support for CVSNT.
+
+%package protocol-gserver
+Summary: gserver (Kerberos GSS) protocol support for CVSNT
+Group: Development/Version Control
+Requires: %{name} = %{version}-%{release}
+
+%description protocol-gserver
+gserver (Kerberos GSS) support for CVSNT.
+
+%package protocol-sserver
+Summary: sserver (SSL) procotol support for for CVSNT
+Group: Development/Version Control
+Requires: %{name} = %{version}-%{release}
+
+%description protocol-sserver
+sserver (SSL) protocol support for CVSNT.
+
+%package protocol-sspi
+Summary: SSPI procotol support for for CVSNT
+Group: Development/Version Control
+Requires: %{name} = %{version}-%{release}
+
+%description protocol-sspi
+SSPI protocol support for CVSNT.
+
+%package protocol-sync
+Summary: sync procotol support for for CVSNT
+Group: Development/Version Control
+Requires: %{name} = %{version}-%{release}
+
+%description protocol-sync
+sync protocol support for CVSNT.
+
+%package rcs
+Summary: CVSNT version of RCS tools
+Group: Development/Version Control
+Requires: %{name} = %{version}-%{release}
+Provides: rcs
+
+%description rcs
+CVSNT version of RCS tools.
+
%prep
%setup -q
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+
+rm -r protocols/ntlm
%build
+%{__libtoolize}
+%{__aclocal}
+%{__autoconf}
+%{__automake}
%configure \
--enable-mdns \
--enable-sqlite \
--enable-pserver \
--enable-ext \
--enable-rsh \
- --enable-gserver \
+ --%{?with_kerberos:en}%{!?with_kerberos:dis}able-gserver \
--enable-sserver \
--enable-sspi \
--enable-enum \
- --disable-rcs
+ --enable-rcs
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{/etc/{rc.d/init.d,sysconfig/rc-inetd},%{_cvs_root}}
+install -d $RPM_BUILD_ROOT{/etc/{pam.d,rc.d/init.d,sysconfig/rc-inetd},%{_cvs_root}}
-%{__make} install \
+%{__make} install -j1 \
DESTDIR=$RPM_BUILD_ROOT
install %{SOURCE1} $RPM_BUILD_ROOT/etc/sysconfig/rc-inetd/%{name}
install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/cvslockd
+install %{SOURCE3} $RPM_BUILD_ROOT/etc/pam.d/cvsnt
mv $RPM_BUILD_ROOT%{_sysconfdir}/cvsnt/PServer{.example,}
mv $RPM_BUILD_ROOT%{_sysconfdir}/cvsnt/Plugins{.example,}
%clean
rm -rf $RPM_BUILD_ROOT
-%post
-/sbin/ldconfig
+%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
+
+%post cvslockd
/sbin/chkconfig --add cvslockd
%service cvslockd restart
-%preun
+%preun cvslockd
if [ "$1" = "0" ]; then
- %service cvslockd stop
- /sbin/chkconfig --del cvslockd
+ %service cvslockd stop
+ /sbin/chkconfig --del cvslockd
fi
-%postun -p /sbin/ldconfig
-
%pre pserver
%groupadd -f -g 52 cvs
%useradd -g cvs -d %{_cvs_root} -u 52 -s /bin/false cvs
%files
%defattr(644,root,root,755)
%doc doc/html_cvsclient
-%doc AUTHORS FAQ README
+%doc AUTHORS README
+%doc triggers/examples/*.txt
%dir %{_sysconfdir}/cvsnt
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/cvsnt
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/cvsnt/*
-%attr(754,root,root) /etc/rc.d/init.d/cvslockd
-%attr(755,root,root) %{_bindir}/*
+%attr(755,root,root) %{_bindir}/cvs
+%attr(755,root,root) %{_bindir}/cvsnt
+%attr(755,root,root) %{_bindir}/cvsscript
%dir %{_libdir}/cvsnt
-%dir %{_libdir}/cvsnt/*
-%attr(755,root,root) %{_libdir}/cvsnt/*/*.so
-%{_libdir}/cvsnt/*/*.la
+%dir %{_libdir}/cvsnt/database
+%dir %{_libdir}/cvsnt/mdns
+%attr(755,root,root) %{_libdir}/cvsnt/mdns/*.so
+%{_libdir}/cvsnt/mdns/*.la
+%dir %{_libdir}/cvsnt/protocols
+%attr(755,root,root) %{_libdir}/cvsnt/protocols/enum.so
+%attr(755,root,root) %{_libdir}/cvsnt/protocols/ext.so
+%attr(755,root,root) %{_libdir}/cvsnt/protocols/pserver.so
+%attr(755,root,root) %{_libdir}/cvsnt/protocols/server.so
+%{_libdir}/cvsnt/protocols/enum.la
+%{_libdir}/cvsnt/protocols/ext.la
+%{_libdir}/cvsnt/protocols/pserver.la
+%{_libdir}/cvsnt/protocols/server.la
+%dir %{_libdir}/cvsnt/triggers
+%attr(755,root,root) %{_libdir}/cvsnt/triggers/*.so
+%{_libdir}/cvsnt/triggers/*.la
+%dir %{_libdir}/cvsnt/xdiff
+%attr(755,root,root) %{_libdir}/cvsnt/xdiff/*.so
+%{_libdir}/cvsnt/xdiff/*.la
%attr(755,root,root) %{_libdir}/lib*-*.so*
%{_mandir}/man[15]/*
%doc doc/html_cvs
%attr(770,root,cvs) %dir %{_cvs_root}
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/rc-inetd/cvsnt
+
+%files cvslockd
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/cvslockd
+%attr(754,root,root) /etc/rc.d/init.d/cvslockd
+
+%files database-mysql
+%defattr(644,root,root,755)
+%doc triggers/sql/*_mysql.sql
+%attr(755,root,root) %{_libdir}/cvsnt/database/mysql.so
+%{_libdir}/cvsnt/database/mysql.la
+
+%files database-odbc
+%defattr(644,root,root,755)
+%doc triggers/sql/*_oracle.sql
+%doc triggers/sql/*_mssql.sql
+%attr(755,root,root) %{_libdir}/cvsnt/database/odbc.so
+%{_libdir}/cvsnt/database/odbc.la
+
+%files database-postgres
+%defattr(644,root,root,755)
+%doc triggers/sql/*_postgres.sql
+%attr(755,root,root) %{_libdir}/cvsnt/database/postgres.so
+%{_libdir}/cvsnt/database/postgres.la
+
+%files database-sqlite
+%defattr(644,root,root,755)
+%doc triggers/sql/*_sqlite.sql
+%attr(755,root,root) %{_libdir}/cvsnt/database/sqlite.so
+%{_libdir}/cvsnt/database/sqlite.la
+
+%if %{with kerberos}
+%files protocol-gserver
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/cvsnt/protocols/gserver.so
+%{_libdir}/cvsnt/protocols/gserver.la
+%endif
+
+%files protocol-sserver
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/cvsnt/protocols/sserver.so
+%{_libdir}/cvsnt/protocols/sserver.la
+
+%files protocol-sspi
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/cvsnt/protocols/sspi.so
+%{_libdir}/cvsnt/protocols/sspi.la
+
+#%files protocol-sync
+#%defattr(644,root,root,755)
+#%attr(755,root,root) %{_libdir}/cvsnt/protocols/sync.so
+#%{_libdir}/cvsnt/protocols/sync.la
+
+%files rcs
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/co
+%attr(755,root,root) %{_bindir}/rcsdiff
+%attr(755,root,root) %{_bindir}/rlog