diff --git a/zarafa-7.0.4-fd_setsize.patch b/zarafa-7.0.4-fd_setsize.patch new file mode 100644 index 0000000..14764cb --- /dev/null +++ b/zarafa-7.0.4-fd_setsize.patch @@ -0,0 +1,36 @@ +Patch by Robert Scheck for Zarafa >= 7.0.4, which works around +the issue that Zarafa is using up to 8192 open file descriptors, while the system glibc is +allowing at maximum 1024. Of course glibc supports more open file descriptors, however the +usage seems to be non-POSIX conform and non-portable. Finally a check was implemented into +glibc by upstream developers to catch such strange usage cases. That check causes Zarafa +to fail with a segmentation fault when built with -D_FORTIFY_SOURCE=2 and glibc-2.14.90-8 +or newer (actually Fedora 16 with updates and newer). + +This patch is a workaround until gSOAP parts are updated/changed/rewritten to use poll(2) +instead of select(2). Lowering FD_SETSIZE was suggested by Milo Oostergo from Zarafa B.V. + +--- zarafa-7.0.4/provider/soap/soapdefs.h 2011-12-22 01:02:31.000000000 +0100 ++++ zarafa-7.0.4/provider/soap/soapdefs.h.fd_setsize 2012-01-12 22:36:40.000000000 +0100 +@@ -8,6 +8,6 @@ + + #include + #undef __FD_SETSIZE +-#define __FD_SETSIZE 8192 ++#define __FD_SETSIZE 1024 + + #endif // ndef SOAPDEFS_H_ +--- zarafa-7.0.4/common/platform.h 2011-12-22 01:02:34.000000000 +0100 ++++ zarafa-7.0.4/common/platform.h.fd_setsize 2012-01-12 22:37:03.000000000 +0100 +@@ -52,10 +52,10 @@ + + + // We have to include this now in case select.h is included too soon. +- // Increase our maximum amount of file descriptors to 8192 ++ // Increase our maximum amount of file descriptors to 1024 + #include + #undef __FD_SETSIZE +- #define __FD_SETSIZE 8192 ++ #define __FD_SETSIZE 1024 + + // Log the pthreads locks + #define DEBUG_PTHREADS 0 diff --git a/zarafa-7.0.4-php54.patch b/zarafa-7.0.4-php54.patch new file mode 100644 index 0000000..9684ac3 --- /dev/null +++ b/zarafa-7.0.4-php54.patch @@ -0,0 +1,130 @@ +Patch by Robert Scheck for Zarafa >= 7.0.4, which fixes building of the PHP +extension of Zarafa with PHP >= 5.4.0. It is heavily based on the work of Remi Collet. Fedora 17+ will +ship PHP >= 5.4.0, so the changes are here mandatory. According to /usr/include/php/main/php3_compat.h +the "typedef zval pval;" definition exists for ages and I wasn't able to figure out any build issue in +Red Hat Enterprise Linux 5 (as oldest supported version of Zarafa 7.0.x) during my tests. References: + + - https://github.com/remicollet/remirepo/blob/1e741d6002a34add940c15711cf061c35d4c9e91/zarafa/zarafa-7.0.3-php54.patch + - http://forums.zarafa.com/viewtopic.php?f=22&t=7826 + +--- zarafa-7.0.4/php-ext/ECImportContentsChangesProxy.cpp 2011-12-22 01:02:33.000000000 +0100 ++++ zarafa-7.0.4/php-ext/ECImportContentsChangesProxy.cpp.php54 2012-01-08 23:58:33.000000000 +0100 +@@ -150,9 +150,9 @@ + HRESULT ECImportContentsChangesProxy::Config(LPSTREAM lpStream, ULONG ulFlags) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[2]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[2]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); +@@ -192,9 +192,9 @@ + HRESULT ECImportContentsChangesProxy::UpdateState(LPSTREAM lpStream) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[1]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[1]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); +@@ -228,9 +228,9 @@ + } + + HRESULT ECImportContentsChangesProxy::ImportMessageChange(ULONG cValues, LPSPropValue lpPropArray, ULONG ulFlags, LPMESSAGE * lppMessage) { +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[3]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[3]; + IMessage *lpMessage = NULL; + HRESULT hr = hrSuccess; + +@@ -287,9 +287,9 @@ + HRESULT ECImportContentsChangesProxy::ImportMessageDeletion(ULONG ulFlags, LPENTRYLIST lpSourceEntryList) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[2]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[2]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); +@@ -323,9 +323,9 @@ + HRESULT ECImportContentsChangesProxy::ImportPerUserReadStateChange(ULONG cElements, LPREADSTATE lpReadState) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[1]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[1]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); +--- zarafa-7.0.4/php-ext/ECImportHierarchyChangesProxy.cpp 2011-12-22 01:02:33.000000000 +0100 ++++ zarafa-7.0.4/php-ext/ECImportHierarchyChangesProxy.cpp.php54 2012-01-08 23:58:33.000000000 +0100 +@@ -147,9 +147,9 @@ + HRESULT ECImportHierarchyChangesProxy::Config(LPSTREAM lpStream, ULONG ulFlags) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[2]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[2]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); +@@ -189,9 +189,9 @@ + HRESULT ECImportHierarchyChangesProxy::UpdateState(LPSTREAM lpStream) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[1]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[1]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); +@@ -225,9 +225,9 @@ + } + + HRESULT ECImportHierarchyChangesProxy::ImportFolderChange(ULONG cValues, LPSPropValue lpPropArray) { +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[1]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[1]; + HRESULT hr = hrSuccess; + + MAKE_STD_ZVAL(pvalFuncName); +@@ -265,9 +265,9 @@ + HRESULT ECImportHierarchyChangesProxy::ImportFolderDeletion(ULONG ulFlags, LPENTRYLIST lpSourceEntryList) { + HRESULT hr = hrSuccess; + +- pval *pvalFuncName; +- pval *pvalReturn; +- pval *pvalArgs[2]; ++ zval *pvalFuncName; ++ zval *pvalReturn; ++ zval *pvalArgs[2]; + + MAKE_STD_ZVAL(pvalFuncName); + MAKE_STD_ZVAL(pvalReturn); diff --git a/zarafa.spec b/zarafa.spec index d3de4c0..e9cd0e3 100644 --- a/zarafa.spec +++ b/zarafa.spec @@ -1,6 +1,6 @@ %global beta_or_rc 0 -%global actual_release 2 -%global svnrevision 30515 +%global actual_release 1 +%global svnrevision 31235 %global with_clucene 1 %global with_ldap 1 %global with_xmlto 1 @@ -12,13 +12,14 @@ %if 0%{?rhel}%{?fedora} > 4 %{?filter_setup: %filter_provides_in %{_libdir}/%{name}/.*\.so$ +%filter_provides_in %{_libdir}/php/modules/.*\.so$ %filter_setup } %endif Summary: Open Source Edition of the Zarafa Collaboration Platform Name: zarafa -Version: 7.0.3 +Version: 7.0.4 %if %{beta_or_rc} Release: 0.%{actual_release}.svn%{svnrevision}%{?dist} %else @@ -43,6 +44,8 @@ Source3: %{name}-webaccess.conf Patch0: zarafa-6.40.5-rpath.patch Patch1: zarafa-7.0.3-boost149.patch +Patch2: zarafa-7.0.4-php54.patch +Patch3: zarafa-7.0.4-fd_setsize.patch BuildRequires: bison BuildRequires: gcc-c++ @@ -369,6 +372,8 @@ to interact with Zarafa. touch -c -r aclocal.m4.rpath aclocal.m4 %patch1 -p1 -b .boost149 touch -c -r configure.ac.boost149 configure.ac +%patch2 -p1 -b .php54 +%patch3 -p1 -b .fd_setsize %build %if 0%{?rhel}%{?fedora} < 6 @@ -377,7 +382,7 @@ export LDFLAGS="$LDFLAGS -L%{_libdir}/boost141" %endif %if 0%{?fedora} > 15 -export LDFLAGS="$LDFLAGS -L%{_libdir}/clucene09" +export LDFLAGS="$RPM_LD_FLAGS -L%{_libdir}/clucene09" %endif %configure \ @@ -421,7 +426,7 @@ make \ install-ajax-webaccess # Nuke all overlefts from licensed, managed or other proprietary items -rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{license,licensed.cfg,report-ca} +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/{%{name}/{license,licensed.cfg,report-ca},cron.daily/%{name}-client-update} rm -f $RPM_BUILD_ROOT%{_mandir}/man?/{zarafa-{backup,restore,report,msr,ldapms.cfg,licensed{,.cfg}},za-aclsync}.* # Move all the initscripts to their appropriate place and @@ -675,6 +680,7 @@ fi %files client -f %{name}.lang %defattr(-,root,root,-) %{_libdir}/libzarafaclient.so +%{_libdir}/libzarafasync.so.* %files common %defattr(-,root,root,-) @@ -709,7 +715,7 @@ fi %{_libdir}/libcommon_ssl.a %{_libdir}/libcommon_util.a %{_libdir}/libfreebusy.a -%{_libdir}/libzarafasync.a +%{_libdir}/libzarafasync.so %{_includedir}/icalmapi/ %{_includedir}/inetmapi/ %{_includedir}/mapi4linux/ @@ -874,6 +880,11 @@ fi %endif %changelog +* Fri Jan 13 2012 Robert Scheck 7.0.4-1 +- Upgrade to 7.0.4 +- Added patch for rebuilding with PHP 5.4 (thanks to Remi Collet) +- Work around crashs by reducing open file descriptors (#760888) + * Sat Dec 17 2011 Robert Scheck 7.0.3-2 - Enabled non-optional build of epoll socket handling (#760888)