+#
+# Conditional build:
+%bcond_without kerberos # build without krb5 support
+#
# TODO:
-# - check server mode
-# - verify when cvslockd is needed (in main or in pserver package)
+# - commit -r BRANCH is rejected (contrary to manual)
+# you can commit new file to branch with this technique:
+# cvs add foo.patch
+# cvs ci -r BRANCH -m '- new' foo.patch
+# cvs up -r BRANCH foo.patch
+# cvs ci -m '- new' foo.patch
+# or just install cvs client from cvsnt package.
+# - stay with STABLE 2.5.04 line as soon as it becomes stable
+# - check server mode and default config
+# - 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
+Version: 2.5.04.3125
+Release: 2
License: GPL v2+/LGPL v2+
Group: Development/Version Control
-Source0: http://unifacecm.de/archive/%{name}-%{version}.tar.gz
-# Source0-md5: 4f7d2e54c5529829a43b089f9b37c86e
+# http://www.cvsnt.org/wiki/Download
+Source0: http://www.cvsnt.org/archive/%{name}-%{version}.tar.gz
+# Source0-md5: b8aae9e50c3ef682a126a5d19c797558
Source1: %{name}.inetd
Source2: %{name}-cvslockd.init
+Source3: %{name}.pam
+Patch0: %{name}-system-ltdl.patch
+Patch1: %{name}-system-pcre.patch
+Patch2: %{name}-system-zlib.patch
+Patch3: %{name}-system-ntlm.patch
+Patch4: %{name}-crypt.patch
+Patch5: %{name}-build.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
-BuildRequires: krb5-devel
+BuildRequires: howl-devel
+%{?with_kerberos:BuildRequires: krb5-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
Config files for rc-inetd that are necessary to run CVS in pserver
mode.
+%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 -p0
+%patch5 -p1
+
+rm -rf pcre libltdl zlib 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 $RPM_BUILD_ROOT%{_sysconfdir}/cvsnt/PServer
-mv $RPM_BUILD_ROOT%{_sysconfdir}/cvsnt/Plugins.example $RPM_BUILD_ROOT%{_sysconfdir}/cvsnt/Plugins
+mv $RPM_BUILD_ROOT%{_sysconfdir}/cvsnt/PServer{.example,}
+mv $RPM_BUILD_ROOT%{_sysconfdir}/cvsnt/Plugins{.example,}
%clean
rm -rf $RPM_BUILD_ROOT
-%post -p /sbin/ldconfig
+%post
+/sbin/ldconfig
+/sbin/chkconfig --add cvslockd
+%service cvslockd restart
+
+%preun
+if [ "$1" = "0" ]; then
+ %service cvslockd stop
+ /sbin/chkconfig --del cvslockd
+fi
+
%postun -p /sbin/ldconfig
%pre pserver
%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 doc/html_cvsclient
%doc AUTHORS FAQ 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(755,root,root) %{_bindir}/*
+%attr(754,root,root) /etc/rc.d/init.d/cvslockd
+%attr(755,root,root) %{_bindir}/cvs
+%attr(755,root,root) %{_bindir}/cvslockd
+%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
-%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