+# TODO
+# - nagios plugin (see it's files section for details)
#
# Conditional build:
%bcond_without apidocs # do not build and package API docs
-#
+%bcond_with mapiproxy # mapiproxy suite (disabled with Samba 4.4+)
+%bcond_with mapitest # mapitest utility (disabled with Samba 4.4+)
+%bcond_with python # build python package (requires disabled mapiproxy)
+
+%define cname VULCAN
Summary: OpenChange - portable implementation of MS Exchange Server and Exchange protocols
Summary(pl.UTF-8): OpenChange - przenośna implementacja serwera oraz protokołów MS Exchange
Name: openchange
Version: 2.3
-Release: 1
+Release: 41
License: GPL v3+
Group: Libraries
-%define cname VULCAN
Source0: https://github.com/openchange/openchange/archive/%{name}-%{version}-%{cname}.tar.gz
# Source0-md5: 96c13c78c2bcbd7040f7848746284b9f
-Patch0: %{name}-samba-private.patch
+Patch0: disable-mapiproxy.patch
Patch1: %{name}-link.patch
-URL: http://www.openchange.org/
+Patch2: flex2.6.patch
+Patch3: samba-4.2.patch
+Patch4: fix-connection-args.patch
+Patch5: samba-4.4.patch
+Patch6: %{name}-covscan.patch
+Patch7: %{name}-samba-4.10-macros.patch
+Patch8: %{name}-libical.patch
+URL: https://github.com/openchange
BuildRequires: QtCore-devel >= 4.3.0
BuildRequires: QtGui-devel >= 4.3.0
BuildRequires: autoconf >= 2.57
BuildRequires: perl-base
BuildRequires: pkgconfig >= 1:0.20
BuildRequires: popt-devel
+%if %{with python}
BuildRequires: python-devel >= 1:2.7
BuildRequires: python-samba >= 4.2.2
+%endif
BuildRequires: rpmbuild(macros) >= 1.219
# with DCERCP multiplex and pending call support (upstream 4.1.18+ or 4.2.2+)
-BuildRequires: samba-devel >= 4.2.2
-BuildRequires: samba-pidl >= 4.2.2
+# samba-4.10-macros patch requires samba-pidl 4.10+
+BuildRequires: samba-devel >= 4.10
+BuildRequires: samba-pidl >= 4.10
BuildRequires: sed >= 4.0
BuildRequires: subunit-devel
BuildRequires: talloc-devel
BuildRequires: tdb-devel
BuildRequires: zlib-devel
Requires: %{name}-libs = %{version}-%{release}
-Requires: python-openchange = %{version}-%{release}
+%{?with_python:Requires: python-openchange = %{version}-%{release}}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
Summary: API documentation for OpenChange libraries
Summary(pl.UTF-8): Dokumentacja API bibliotek OpenChange
Group: Documentation
+%if "%{_rpmversion}" >= "5"
+BuildArch: noarch
+%endif
%description apidocs
API documentation for OpenChange libraries.
%setup -q -n %{name}-%{name}-%{version}-%{cname}
%patch0 -p1
%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
# no switch for verbose mode, enable manually :/
%{__sed} -i -e 's/^ @\(\$(\(PIDL\|CC\|CXX\|MOC\)\)/ \1/' Makefile
%configure \
--datadir=%{_datadir}/openchange \
--enable-openchange-qt4 \
- --enable-pyopenchange \
+ %{?with_python:--enable-pyopenchange} \
--with-modulesdir=%{_libdir}/openchange/modules
%{__make}
cp -a libqtmapi.so.*.* libqtmapi.so $RPM_BUILD_ROOT%{_libdir}
# tests
-%{__rm} $RPM_BUILD_ROOT%{_bindir}/{check_fasttransfer,openchange-testsuite,test_asyncnotif}
+%{__rm} $RPM_BUILD_ROOT%{_bindir}/test_asyncnotif
+%if %{without mapitest}
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mapitest.1
+%endif
/sbin/ldconfig -n $RPM_BUILD_ROOT%{_libdir}
%attr(755,root,root) %{_bindir}/exchange2mbox
%attr(755,root,root) %{_bindir}/mapiprofile
%attr(755,root,root) %{_bindir}/mapipropsdump
-%attr(755,root,root) %{_bindir}/mapitest
-%attr(755,root,root) %{_bindir}/ocnotify
%attr(755,root,root) %{_bindir}/openchangeclient
%attr(755,root,root) %{_bindir}/openchangemapidump
%attr(755,root,root) %{_bindir}/openchangepfadmin
%attr(755,root,root) %{_bindir}/rpcextract
%attr(755,root,root) %{_bindir}/schemaIDGUID
+%dir %{_datadir}/openchange
+%dir %{_datadir}/openchange/setup
+%{_datadir}/openchange/setup/profiles
+%{_mandir}/man1/exchange2ical.1*
+%{_mandir}/man1/exchange2mbox.1*
+%{_mandir}/man1/mapiprofile.1*
+%{_mandir}/man1/openchangeclient.1*
+%{_mandir}/man1/openchangepfadmin.1*
+%if %{with mapiproxy}
+%attr(755,root,root) %{_bindir}/ocnotify
%attr(755,root,root) %{_sbindir}/openchange_group
%attr(755,root,root) %{_sbindir}/openchange_migrate
%attr(755,root,root) %{_sbindir}/openchange_neworganization
%attr(755,root,root) %{_libdir}/openchange/modules/dcerpc_mapiproxy_server/exchange_ds_rfr.so
%attr(755,root,root) %{_libdir}/openchange/modules/dcerpc_mapiproxy_server/exchange_emsmdb.so
%attr(755,root,root) %{_libdir}/openchange/modules/dcerpc_mapiproxy_server/exchange_nsp.so
-%dir %{_datadir}/openchange
-%{_datadir}/openchange/mapitest
-%dir %{_datadir}/openchange/setup
%{_datadir}/openchange/setup/mapistore
%{_datadir}/openchange/setup/openchangedb
-%{_datadir}/openchange/setup/profiles
%dir %{_datadir}/samba/setup/AD
%{_datadir}/samba/setup/AD/oc_provision_*.ldif
%{_datadir}/samba/setup/AD/provision_schema_basedn_modify.ldif
%{_datadir}/samba/setup/AD/update_now.ldif
%{_datadir}/samba/setup/AD/prefixMap.txt
-%{_mandir}/man1/exchange2ical.1*
-%{_mandir}/man1/exchange2mbox.1*
-%{_mandir}/man1/mapiprofile.1*
+%endif
+%if %{with mapitest}
+%attr(755,root,root) %{_bindir}/mapitest
+%{_datadir}/openchange/mapitest
%{_mandir}/man1/mapitest.1*
-%{_mandir}/man1/openchangeclient.1*
-%{_mandir}/man1/openchangepfadmin.1*
+%endif
%files libs
%defattr(644,root,root,755)
%attr(755,root,root) %ghost %{_libdir}/libmapi.so.0
%attr(755,root,root) %{_libdir}/libmapiadmin.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libmapiadmin.so.0
+%attr(755,root,root) %{_libdir}/libocpf.so.*.*
+%attr(755,root,root) %ghost %{_libdir}/libocpf.so.0
+%if %{with mapiproxy}
%attr(755,root,root) %{_libdir}/libmapiproxy.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libmapiproxy.so.0
%attr(755,root,root) %{_libdir}/libmapiserver.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libmapiserver.so.0
%attr(755,root,root) %{_libdir}/libmapistore.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libmapistore.so.0
-%attr(755,root,root) %{_libdir}/libocpf.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/libocpf.so.0
+%endif
%files devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libmapi.so
%attr(755,root,root) %{_libdir}/libmapiadmin.so
-%attr(755,root,root) %{_libdir}/libmapiproxy.so
-%attr(755,root,root) %{_libdir}/libmapiserver.so
-%attr(755,root,root) %{_libdir}/libmapistore.so
%attr(755,root,root) %{_libdir}/libocpf.so
%{_includedir}/gen_ndr
%{_includedir}/libmapi
%{_includedir}/libmapiadmin
%{_includedir}/libocpf
+%{_pkgconfigdir}/libmapi.pc
+%{_pkgconfigdir}/libmapiadmin.pc
+%{_pkgconfigdir}/libocpf.pc
+%if %{with mapiproxy}
+%attr(755,root,root) %{_libdir}/libmapiproxy.so
+%attr(755,root,root) %{_libdir}/libmapiserver.so
+%attr(755,root,root) %{_libdir}/libmapistore.so
%{_includedir}/mapistore
%{_includedir}/libmapiproxy.h
%{_includedir}/libmapiserver.h
-%{_pkgconfigdir}/libmapi.pc
-%{_pkgconfigdir}/libmapiadmin.pc
%{_pkgconfigdir}/libmapiproxy.pc
%{_pkgconfigdir}/libmapiserver.pc
%{_pkgconfigdir}/libmapistore.pc
-%{_pkgconfigdir}/libocpf.pc
+%endif
%files c++
%defattr(644,root,root,755)
%doc apidocs/html/*
%endif
+%if %{with python}
%files -n python-openchange
%defattr(644,root,root,755)
%dir %{py_sitedir}/openchange
%attr(755,root,root) %{py_sitedir}/openchange/mapi.so
%attr(755,root,root) %{py_sitedir}/openchange/mapistore.so
+%if %{with mapiproxy}
%{py_sitedir}/openchange/*.py[co]
%{py_sitedir}/openchange/migration
%{py_sitedir}/openchange/tests
%{py_sitedir}/openchange/utils
%{py_sitedir}/openchange/web
+%endif
+%endif
%files -n nagios-plugin-openchange
%defattr(644,root,root,755)
# R: perl, openchangeclient
+# FIXME: use /usr/lib/nagios/plugins dir and make package noarch
%attr(755,root,root) %{_libdir}/nagios/check_exchange
# default profile database - should be /etc/...
#%config(noreplace) %verify(not md5 mtime size) %{_libdir}/nagios/plugins/check_exchange.ldb