As I need to get the Activesync functionality back I have attempted to compile Zarafa from scratch so that I can get the required MAPI file(s) I need for my production system.
Because I am using SME v8 I thought I would use that to compile the source as I want to make sure that it will be compatible when I am finished. I built a test server and updated it and then started installing the dependencies required to build Zarafa 7.1.2.
The compilation process can be found here:
http://www.zarafa.com/wiki/index.php/Compiling_source_codeFirst thing is to install all of the dependencies to allow you do the build, to do this you need to include the epel and ATrpms repositories. Adding epel
http://wiki.contribs.org/Epel and ATrpms
http://wiki.contribs.org/ATrpms. The next dependency is libvmime & kytocabinet, I got these from the current packaged version of Zarafa 7.1.2
http://download.zarafa.com/community/final/7.1/7.1.2-39121/.
Now the biggest bugger was Boost. The current version standard version on the repositories is to low and you can get version boost141 however the source would still crash out on a Boost error. So I uninstall all versions of Boost and downloaded and installed the latest 1.5.2 at time of writing, it took an eternity to build. I followed the instructions here
http://www.boost.org/doc/libs/1_52_0/more/getting_started/unix-variants.htmlI was then able to get the configure to finish using this command line:
./configure --enable-release --disable-static --with-userscript-prefix=/etc/zarafa/userscripts --with-quotatemplate-prefix=/etc/zarafa/quotamails --enable-unicode --with-boost=/usr/local/
Funny thing about the command line in the Zarafa doco, it says to add the command --disable-perl however this generates an error.
So the configure runs through and as I have rarely compiled things I have no clue what the screen is doing, anyway it finishes with:
Install prefix : /usr/local
Mapiconfig dir : /etc/mapi
Userscript dir : /etc/zarafa/userscripts
Quota dir : /etc/zarafa/quotamails
Search scripts dir : /etc/zarafa/searchscripts
Build host : i686-pc-linux-gnu
Compile flags : -g -O2 -g -rdynamic -Wall -Wno-write-strings -DHAVE_CONFIG_H -pedantic -Wno-long-long -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wno-variadic-macros -pthread -O2 -fno-strict-aliasing -DNDEBUG -DFORCE_CHARSET_CONVERSION -DUNICODE
Debug flags :
PHP version : 5.3.3
PHP ext dir : /usr/lib/php/modules
PHP config dir : /etc/php.d
PHP flags : -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib
PHP libs :
gSOAP flags : -DWITH_OPENSSL -DWITH_GZIP
gSOAP libs : -lz
OpenSSL libs : -lssl -lcrypto
MySQL flags : -I/usr/include/mysql
MySQL libs : -rdynamic -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto
VMime flags : -I/usr/include
VMime libs : -lvmime
XML2 flags : -I/usr/include/libxml2
XML2 libs : -L/usr/lib -lxml2 -lz -lm
ICal flags : -I/usr/include
ICal libs : -lical -licalss
clucene flags : -I/usr/lib -I/usr/include
clucene libs :
kyotocabinet libs : -lkyotocabinet
ncurses libs : -lncursesw
Clients libs : -luuid -lz -licui18n -licuuc -licudata -lpthread -lm
xmlto :
LDAP support :
LDAP flags :
LDAP libs :
Curl libs :
Pam libs :
Krb5 libs :
TCMalloc lib :
Boost :
Flags : -I/usr/local//include
FS ldflags : -L/usr/local//lib
FS libs : -lboost_filesystem
ICU libs : -licui18n -licuuc -licudata -lpthread -lm
Swig : no
Python module : no
I did the first run of make and what (most of the time) and saw what I thought were error messages, but it happily went until it crashed again. So I run make again and got the below result:
[root@testy zarafa-7.1.2]# make
make all-recursive
make[1]: Entering directory `/tmp/zarafa-7.1.2'
Making all in common
make[2]: Entering directory `/tmp/zarafa-7.1.2/common'
make all-am
make[3]: Entering directory `/tmp/zarafa-7.1.2/common'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/common'
make[2]: Leaving directory `/tmp/zarafa-7.1.2/common'
Making all in libfreebusy
make[2]: Entering directory `/tmp/zarafa-7.1.2/libfreebusy'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/tmp/zarafa-7.1.2/libfreebusy'
Making all in mapi4linux
make[2]: Entering directory `/tmp/zarafa-7.1.2/mapi4linux'
Making all in src
make[3]: Entering directory `/tmp/zarafa-7.1.2/mapi4linux/src'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/mapi4linux/src'
Making all in include
make[3]: Entering directory `/tmp/zarafa-7.1.2/mapi4linux/include'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/mapi4linux/include'
make[3]: Entering directory `/tmp/zarafa-7.1.2/mapi4linux'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/mapi4linux'
make[2]: Leaving directory `/tmp/zarafa-7.1.2/mapi4linux'
Making all in zarafa-libsync
make[2]: Entering directory `/tmp/zarafa-7.1.2/zarafa-libsync'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/tmp/zarafa-7.1.2/zarafa-libsync'
Making all in provider
make[2]: Entering directory `/tmp/zarafa-7.1.2/provider'
Making all in tools
make[3]: Entering directory `/tmp/zarafa-7.1.2/provider/tools'
Making all in soapcpp2
make[4]: Entering directory `/tmp/zarafa-7.1.2/provider/tools/soapcpp2'
make all-am
make[5]: Entering directory `/tmp/zarafa-7.1.2/provider/tools/soapcpp2'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/tmp/zarafa-7.1.2/provider/tools/soapcpp2'
make[4]: Leaving directory `/tmp/zarafa-7.1.2/provider/tools/soapcpp2'
make[4]: Entering directory `/tmp/zarafa-7.1.2/provider/tools'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/tmp/zarafa-7.1.2/provider/tools'
make[3]: Leaving directory `/tmp/zarafa-7.1.2/provider/tools'
Making all in include
make[3]: Entering directory `/tmp/zarafa-7.1.2/provider/include'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/provider/include'
Making all in soap
make[3]: Entering directory `/tmp/zarafa-7.1.2/provider/soap'
make all-am
make[4]: Entering directory `/tmp/zarafa-7.1.2/provider/soap'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/tmp/zarafa-7.1.2/provider/soap'
make[3]: Leaving directory `/tmp/zarafa-7.1.2/provider/soap'
Making all in common
make[3]: Entering directory `/tmp/zarafa-7.1.2/provider/common'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/provider/common'
Making all in libserver
make[3]: Entering directory `/tmp/zarafa-7.1.2/provider/libserver'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/provider/libserver'
Making all in server
make[3]: Entering directory `/tmp/zarafa-7.1.2/provider/server'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/provider/server'
Making all in client
make[3]: Entering directory `/tmp/zarafa-7.1.2/provider/client'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/provider/client'
Making all in plugins
make[3]: Entering directory `/tmp/zarafa-7.1.2/provider/plugins'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/provider/plugins'
Making all in contacts
make[3]: Entering directory `/tmp/zarafa-7.1.2/provider/contacts'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/provider/contacts'
make[3]: Entering directory `/tmp/zarafa-7.1.2/provider'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/provider'
make[2]: Leaving directory `/tmp/zarafa-7.1.2/provider'
Making all in libicalmapi
make[2]: Entering directory `/tmp/zarafa-7.1.2/libicalmapi'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/tmp/zarafa-7.1.2/libicalmapi'
Making all in inetmapi
make[2]: Entering directory `/tmp/zarafa-7.1.2/inetmapi'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/tmp/zarafa-7.1.2/inetmapi'
Making all in php-ext
make[2]: Entering directory `/tmp/zarafa-7.1.2/php-ext'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/tmp/zarafa-7.1.2/php-ext'
Making all in ECtools
make[2]: Entering directory `/tmp/zarafa-7.1.2/ECtools'
Making all in zarafa-archiver
make[3]: Entering directory `/tmp/zarafa-7.1.2/ECtools/zarafa-archiver'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/ECtools/zarafa-archiver'
Making all in zarafa-admin
make[3]: Entering directory `/tmp/zarafa-7.1.2/ECtools/zarafa-admin'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/ECtools/zarafa-admin'
Making all in zarafa-monitor
make[3]: Entering directory `/tmp/zarafa-7.1.2/ECtools/zarafa-monitor'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/ECtools/zarafa-monitor'
Making all in zarafa-passwd
make[3]: Entering directory `/tmp/zarafa-7.1.2/ECtools/zarafa-passwd'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/ECtools/zarafa-passwd'
Making all in zarafa-fsck
make[3]: Entering directory `/tmp/zarafa-7.1.2/ECtools/zarafa-fsck'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/ECtools/zarafa-fsck'
Making all in zarafa-cfgchecker
make[3]: Entering directory `/tmp/zarafa-7.1.2/ECtools/zarafa-cfgchecker'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/ECtools/zarafa-cfgchecker'
Making all in zarafa-stats
make[3]: Entering directory `/tmp/zarafa-7.1.2/ECtools/zarafa-stats'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/ECtools/zarafa-stats'
Making all in zarafa-search
make[3]: Entering directory `/tmp/zarafa-7.1.2/ECtools/zarafa-search'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/ECtools/zarafa-search'
Making all in zarafa-utils
make[3]: Entering directory `/tmp/zarafa-7.1.2/ECtools/zarafa-utils'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/ECtools/zarafa-utils'
make[3]: Entering directory `/tmp/zarafa-7.1.2/ECtools'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/tmp/zarafa-7.1.2/ECtools'
make[2]: Leaving directory `/tmp/zarafa-7.1.2/ECtools'
Making all in spooler
make[2]: Entering directory `/tmp/zarafa-7.1.2/spooler'
make all-recursive
make[3]: Entering directory `/tmp/zarafa-7.1.2/spooler'
Making all in python
make[4]: Entering directory `/tmp/zarafa-7.1.2/spooler/python'
Making all in plugins
make[5]: Entering directory `/tmp/zarafa-7.1.2/spooler/python/plugins'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/tmp/zarafa-7.1.2/spooler/python/plugins'
make[5]: Entering directory `/tmp/zarafa-7.1.2/spooler/python'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/tmp/zarafa-7.1.2/spooler/python'
make[4]: Leaving directory `/tmp/zarafa-7.1.2/spooler/python'
make[4]: Entering directory `/tmp/zarafa-7.1.2/spooler'
CXX DAgent.o
In file included from DAgent.cpp:90:
PyMapiPlugin.h:53:20: error: Python.h: No such file or directory
PythonSWIGRuntime.h:811: error: 'PyObject' was not declared in this scope
PythonSWIGRuntime.h:811: error: 'str' was not declared in this scope
PythonSWIGRuntime.h:812: error: expected ',' or ';' before '{' token
PythonSWIGRuntime.h:835: error: expected initializer before '*' token
PythonSWIGRuntime.h:861: error: expected initializer before '*' token
PythonSWIGRuntime.h:915: error: expected initializer before '*' token
PythonSWIGRuntime.h:935: error: expected initializer before '*' token
/usr/local/include/boost/exception/exception.hpp:137: error: expected declaration before end of line
make[4]: *** [DAgent.o] Error 1
make[4]: Leaving directory `/tmp/zarafa-7.1.2/spooler'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/tmp/zarafa-7.1.2/spooler'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/tmp/zarafa-7.1.2/spooler'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/zarafa-7.1.2'
make: *** [all] Error 2
Now I have no clue where to go from here, I have found that I do have a mapi.so and a mapi.la file in the /usr/lib/php/modules/ directory, however the one I have on my live system is way bigger.
Anyway on a long shot I simply copied the mapi.so from my test build system to my live system ran the Zarafa update script to restart everything and now my phone is syncing.
Yippie
the wife will be happy.
I have to run now anyone who would like a copy of the file or if someone can direct me on how to make this an RPM I would be most grateful.
Thanks