From 1930acb377d623fef168808f189ca5c0cac9bf4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Reynolds?= Date: Tue, 4 Dec 2012 10:07:01 -0300 Subject: MAPI support for Evolution --- pcr/evolution-mapi/PKGBUILD | 35 +++++++ pcr/openchange/PKGBUILD | 67 ++++++++++++ pcr/openchange/bugzilla_682449.patch | 191 +++++++++++++++++++++++++++++++++++ pcr/samba4/PKGBUILD | 93 +++++++++++++++++ pcr/samba4/samba4.confd | 5 + pcr/samba4/samba4.rc | 50 +++++++++ 6 files changed, 441 insertions(+) create mode 100644 pcr/evolution-mapi/PKGBUILD create mode 100644 pcr/openchange/PKGBUILD create mode 100644 pcr/openchange/bugzilla_682449.patch create mode 100644 pcr/samba4/PKGBUILD create mode 100644 pcr/samba4/samba4.confd create mode 100644 pcr/samba4/samba4.rc diff --git a/pcr/evolution-mapi/PKGBUILD b/pcr/evolution-mapi/PKGBUILD new file mode 100644 index 000000000..851bb3c4d --- /dev/null +++ b/pcr/evolution-mapi/PKGBUILD @@ -0,0 +1,35 @@ +# Maintainer: Heenry78 +# Contributor: ngoonee +# Contributor: Marco A Rojas +pkgname=evolution-mapi +pkgver=3.6.2 +_gnomever=3.6 +pkgrel=1 +pkgdesc="MAPI plugin for evolution." +arch=('i686' 'x86_64') +url="http://www.gnome.org" +license=('GPL3') +depends=('evolution>=3.6.2' 'openchange>=1.0-5') +makedepends=('intltool') +options=(!makeflags) +source=(http://ftp.gnome.org/pub/gnome/sources/evolution-mapi/$_gnomever/${pkgname}-${pkgver}.tar.xz) +_prefix="/opt/samba4" +md5sums=('4b9eb953e499fca4e1bd7dbd9bf5c0c9') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + + export PKG_CONFIG_PATH=${_prefix}/samba/lib/pkgconfig:${_prefix}/lib/pkgconfig + + export CFLAGS="-DHAVE_MEMCTX_ON_CAST_SPROPVALUE -DHAVE_MEMCTX_ON_CAST_MAPI_SPROPVALUE ${CFLAGS}" + ./configure --prefix=${_prefix} + unset CFLAGS + + make || return 1 +} + +package() { + cd ${srcdir}/${pkgname}-${pkgver} + + make DESTDIR="$pkgdir/" install +} diff --git a/pcr/openchange/PKGBUILD b/pcr/openchange/PKGBUILD new file mode 100644 index 000000000..c3e2c753f --- /dev/null +++ b/pcr/openchange/PKGBUILD @@ -0,0 +1,67 @@ +# Maintainer: Michael Hansen +# Contributor: ngoonee +# Contributor: Adam Russell +pkgname=openchange +_codename=BORG +_dlid=180 +pkgver=1.0 +pkgrel=6 +pkgdesc="Library for MAPI connectivity with Microsoft Exchange. This package was SPECIFICALLY created to support evolution-mapi and may not work for any other purpose." +arch=('i686' 'x86_64') +url="http://www.openchange.org" +license=('GPL3') +depends=('samba4>=4.0.0B1' 'popt' 'libical' 'sqlite3' 'file' 'boost' 'zlib') +makedepends=('ccache' 'python2' 'subversion' 'docbook-xsl' 'libxslt' 'flex' 'bison' 'autoconf' 'automake') +options=(!makeflags) +# Releases are mirrored at http://tracker.openchange.org/projects/openchange/files +source=("http://tracker.openchange.org/attachments/download/${_dlid}/${pkgname}-${pkgver}-${_codename}.tar.gz" + "bugzilla_682449.patch") + +md5sums=('9b57a325e90e5ad3a702ddc6e8762ab6' + '7521f89f8ffaa733ed72532334951b90') +_prefix="/opt/samba4" + +build() { + cd ${srcdir}/${pkgname}-${pkgver}-${_codename} + + patch -i ../bugzilla_682449.patch + + SAVEIFS=${IFS} + IFS=$(echo -en "\n\b") + PYTHON_CALLERS="$(find ${srcdir}/${pkgname}-${pkgver}-${_codename} -name '*.py') +$(find ${srcdir}/${pkgname}-${pkgver}-${_codename}/ -type f) +$(find ${srcdir}/${pkgname}-${pkgver}-${_codename}/ -name 'configure.ac')" + sed -i -e "s|/usr/bin/env python$|/usr/bin/env python2|" \ + -e "s|python-config$|python2-config|" \ + -e "s|bin/python$|bin/python2|" \ + ${PYTHON_CALLERS} + + # Patch for samba4-alpha19+ + SRC_FILES="$(find ${srcdir}/${pkgname}-${pkgver}-${_codename} -name '*.c')" + sed -i -e "s|#include |#include |" ${SRC_FILES} + IFS=${SAVEIFS} + + export PYTHON=/usr/bin/python2 + + export PKG_CONFIG_PATH="${_prefix}/samba/lib/pkgconfig:${_prefix}/lib/pkgconfig" + export BOOST_LIB_SUFFIX="-mt" + ./autogen.sh + + sed -i -e "s|python-config|python2-config|g" configure + ./configure --prefix=${_prefix} --with-samba=${_prefix} + make FLEX=/usr/bin/flex BISON=/usr/bin/bison || return 1 +} + +package() { + _pyver=`python2 -c 'import sys; print(sys.version[:3])'` + + cd ${srcdir}/${pkgname}-${pkgver}-${_codename} + make DESTDIR="$pkgdir/" install + + cd ${pkgdir}/${_prefix}/lib/ + ln -s libmapi.so libmapi.so.0 + ln -s libocpf.so libocpf.so.0 + + find ${pkgdir}/${_prefix}/lib/python${_pyver}/site-packages/ -name '*.py' | \ + xargs sed -i "s|#!/usr/bin/env python$|#!/usr/bin/env python2|" +} diff --git a/pcr/openchange/bugzilla_682449.patch b/pcr/openchange/bugzilla_682449.patch new file mode 100644 index 000000000..e1b3f0983 --- /dev/null +++ b/pcr/openchange/bugzilla_682449.patch @@ -0,0 +1,191 @@ +Index: exchange.idl +=================================================================== +--- exchange.idl (revision 4004) ++++ exchange.idl (working copy) +@@ -1039,7 +1039,7 @@ + [case(ActionType_OP_COPY)] MoveCopy_Action CopyAction; + [case(ActionType_OP_REPLY)] ReplyOOF_Action ReplyAction; + [case(ActionType_OP_OOF_REPLY)] ReplyOOF_Action ReplyOOFAction; +- [case(ActionType_OP_DEFER_ACTION)][flag(NDR_REMAINING)] DATA_BLOB DeferAction; ++ [case(ActionType_OP_DEFER_ACTION)][flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB DeferAction; + [case(ActionType_OP_BOUNCE)] BounceCode BounceCode; + [case(ActionType_OP_TAG)] mapi_SPropValue_wrap PropValue; + [case(ActionType_OP_FORWARD)] ForwardDelegate_Action ForwardAction; +@@ -1057,7 +1057,7 @@ + + typedef [flag(NDR_NOALIGN)] struct { + uint16 ActionLength; +- [subcontext(0),subcontext_size(ActionLength),flag(NDR_REMAINING)] ActionBlockData ActionBlockData; ++ [subcontext(0),subcontext_size(ActionLength),flag(NDR_REMAINING|NDR_NOALIGN)] ActionBlockData ActionBlockData; + } ActionBlock; + + typedef [flag(NDR_NOALIGN)] struct { +@@ -1095,7 +1095,7 @@ + + typedef [public,flag(NDR_NOALIGN)] struct { + uint16 cValues; +- [flag(NDR_REMAINING)]mapi_SPropValue lpProps[cValues]; ++ [flag(NDR_REMAINING|NDR_NOALIGN)]mapi_SPropValue lpProps[cValues]; + } mapi_SPropValue_array; + + typedef [flag(NDR_NOALIGN)] struct { +@@ -1281,7 +1281,7 @@ + // TODO: figure out if "layout" can go + uint8 layout; + // TODO: convert this to a proper structure - see if we already have one. +- [flag(NDR_REMAINING)] DATA_BLOB prop_values; ++ [flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB prop_values; + } RecipientRow; + + typedef [flag(NDR_NOALIGN)] struct { +@@ -1356,7 +1356,7 @@ + + typedef [flag(NDR_NOALIGN)] struct { + uint8 layout; +- [flag(NDR_REMAINING)] DATA_BLOB prop_data; ++ [flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB prop_data; + } GetProps_repl; + + /*************************/ +@@ -1455,7 +1455,7 @@ + typedef [flag(NDR_NOALIGN)]struct { + uint32 idx; + ulRecipClass RecipClass; +- [subcontext(2),flag(NDR_REMAINING)] RecipientRow RecipientRow; ++ [subcontext(2),flag(NDR_REMAINING|NDR_NOALIGN)] RecipientRow RecipientRow; + } ModifyRecipientRow; + + typedef [flag(NDR_NOALIGN)] struct { +@@ -1532,7 +1532,7 @@ + uint8 handle_idx; + MSGFLAG_READ flags; + /* TEMP HACK for editing notes without crashing Outlook: +- [flag(NDR_REMAINING)] DATA_BLOB clientdata; */ ++ [flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB clientdata; */ + } SetMessageReadFlag_req; + + typedef [nodiscriminant, flag(NDR_NOALIGN)] union { +@@ -1782,7 +1782,7 @@ + typedef [nopush,nopull,flag(NDR_NOALIGN)] struct { + uint8 Origin; + uint16 RowCount; +- [flag(NDR_REMAINING)]DATA_BLOB RowData; ++ [flag(NDR_REMAINING|NDR_NOALIGN)]DATA_BLOB RowData; + } QueryRows_repl; + + /**************************/ +@@ -2394,13 +2394,13 @@ + } ReadStream_req; + + typedef [flag(NDR_NOALIGN)] struct { +- [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data; ++ [subcontext(2), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB data; + } ReadStream_repl; + + /*************************/ + /* EcDoRpc Function 0x2d */ + typedef [flag(NDR_NOALIGN)] struct { +- [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data; ++ [subcontext(2), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB data; + } WriteStream_req; + + +@@ -2900,7 +2900,7 @@ + uint16 TotalStepCount; + uint8 Reserved; + uint16 TransferBufferSize; +- [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING)] DATA_BLOB TransferBuffer; ++ [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB TransferBuffer; + } FastTransferSourceGetBuffer_repl; + + /**************************/ +@@ -2982,7 +2982,7 @@ + /* EcDoRpc Function 0x54 */ + typedef [flag(NDR_NOALIGN)] struct { + uint16 TransferBufferSize; +- [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING)] DATA_BLOB TransferBuffer; ++ [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB TransferBuffer; + } FastTransferDestinationPutBuffer_req; + + typedef [flag(NDR_NOALIGN)] struct { +@@ -3075,7 +3075,7 @@ + typedef [flag(NDR_NOALIGN)] struct { + uint32 ExpandedRowCount; + uint16 RowCount; +- [flag(NDR_REMAINING)]DATA_BLOB RowData; ++ [flag(NDR_REMAINING|NDR_NOALIGN)]DATA_BLOB RowData; + } ExpandRow_repl; + + /*************************/ +@@ -3184,7 +3184,7 @@ + typedef [flag(NDR_NOALIGN)] struct { + boolean8 HasFinished; + uint16 DataSize; +- [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING)] DATA_BLOB Data; ++ [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Data; + } ReadPerUserInformation_repl; + + /*************************/ +@@ -3194,7 +3194,7 @@ + boolean8 HasFinished; + uint32 DataOffset; + uint16 DataSize; +- [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING)] DATA_BLOB Data; ++ [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Data; + GUID ReplGuid; /* Note: ReplGuid gets only included under specific circumstances */ + } WritePerUserInformation_req; + +@@ -3364,7 +3364,7 @@ + SendOptions SendOptions; + SynchronizationFlag SynchronizationFlag; + uint16 RestrictionSize; +- [subcontext(0),subcontext_size(RestrictionSize),flag(NDR_REMAINING)] DATA_BLOB RestrictionData; ++ [subcontext(0),subcontext_size(RestrictionSize),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB RestrictionData; + SynchronizationExtraFlags SynchronizationExtraFlags; + mapi_SPropTagArray PropertyTags; + } SyncConfigure_req; +@@ -3542,7 +3542,7 @@ + } MessageReadState; + + typedef [flag(NDR_NOALIGN)] struct { +- [subcontext(2),flag(NDR_REMAINING)] DATA_BLOB MessageReadStates; ++ [subcontext(2),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB MessageReadStates; + } SyncImportReadStateChanges_req; + + typedef [flag(NDR_NOALIGN)] struct { +@@ -3617,7 +3617,7 @@ + /*************************/ + /* EcDoRpc Function 0x90 */ + typedef [flag(NDR_NOALIGN)] struct { +- [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data; ++ [subcontext(2), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB data; + } WriteAndCommitStream_req; + + +@@ -4462,7 +4462,7 @@ + uint32 MajorVersion; + uint32 MinorVersion; + uint32 BuildNumber; +- [subcontext(0), subcontext_size(132), flag(NDR_NOALIGN|NDR_REMAINING)] DATA_BLOB Reserved_1; ++ [subcontext(0), subcontext_size(132), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Reserved_1; + uint16 ServicePackMajor; + uint16 ServicePackMinor; + uint32 Reserved_2; +@@ -4567,7 +4567,7 @@ + [out] uint16 rgwServerVersion[3], + [out] uint16 rgwBestVersion[3], + [in,out] uint32 *pulTimeStamp, +- [in,subcontext(4),flag(NDR_NOALIGN|NDR_REMAINING)] mapi2k7_AuxInfo *rgbAuxIn, ++ [in,subcontext(4),flag(NDR_REMAINING|NDR_NOALIGN)] mapi2k7_AuxInfo *rgbAuxIn, + [in] uint32 cbAuxIn, + [out, length_is(*pcbAuxOut), size_is(*pcbAuxOut)] mapi2k7_AuxInfo *rgbAuxOut, + [in,out][range(0,0x1008)] uint32 *pcbAuxOut +@@ -4588,7 +4588,7 @@ + + typedef [public,nopull] struct { + RPC_HEADER_EXT header; +- [subcontext(0),flag(NDR_NOALIGN|NDR_REMAINING)] mapi_response *mapi_response; ++ [subcontext(0),flag(NDR_REMAINING|NDR_NOALIGN)] mapi_response *mapi_response; + } mapi2k7_response; + + [public,noprint] MAPISTATUS EcDoRpcExt2( diff --git a/pcr/samba4/PKGBUILD b/pcr/samba4/PKGBUILD new file mode 100644 index 000000000..09c55781d --- /dev/null +++ b/pcr/samba4/PKGBUILD @@ -0,0 +1,93 @@ +# Maintainer: Michael Hansen +# Contributor: Marco A Rojas +# Contributor: Netanel Shine +# Contributor: ngoonee +# Contributor: Adam Russell +# Contributor: Dhananjay Sathe +pkgname=samba4 +pkgver=4.0.0rc5 +pkgrel=1 +pkgdesc="Samba 4.0 Release Candidate" +arch=('i686' 'x86_64') +url="http://www.samba.org" +license=('GPL3') +depends=('db>=4.7' 'popt' 'libcups' 'acl' 'libldap' 'libcap>=2.16' 'pam' 'gamin' 'gnutls>=2.4.1' 'talloc' 'tdb') +makedepends=('python2' 'docbook-xsl' 'pkg-config') +options=(!makeflags) +source=(http://us1.samba.org/samba/ftp/rc/samba-${pkgver}.tar.gz + samba4.rc samba4.confd) +md5sums=('24d4b715a46c5f111b08b87975a27b1e' + '01deaef9cd21dff7586a7221d1a6d300' + 'e1b2671dc1d1371a3628235a818debab') +_prefix="/opt/samba4" + +build() { + cd ${srcdir}/samba-${pkgver} + + # change to use python2 + SAVEIFS=${IFS} + IFS=$(echo -en "\n\b") + PYTHON_CALLERS="$(find ${srcdir}/samba-${pkgver} -name '*.py') +$(find ${srcdir}/samba-${pkgver} -name 'wscript*') +$(find ${srcdir}/samba-${pkgver} -name 'configure.ac') +$(find ${srcdir}/samba-${pkgver} -name 'upgrade_from_s3') +$(find ${srcdir}/samba-${pkgver}/buildtools -type f) +$(find ${srcdir}/samba-${pkgver}/source4/scripting -type f)" + sed -i -e "s|/usr/bin/env python$|/usr/bin/env python2|" \ + -e "s|python-config|python2-config|" \ + -e "s|bin/python|bin/python2|" \ + ${PYTHON_CALLERS} + IFS=${SAVEIFS} + + export PYTHON=/usr/bin/python2 + + cd ${srcdir}/samba-${pkgver}/lib/tdb + ./configure --prefix=${_prefix}/samba + make + make DESTDIR="$pkgdir/" install + + cd ${srcdir}/samba-${pkgver}/lib/tevent + ./configure --prefix=${_prefix}/samba + make + make DESTDIR="$pkgdir/" install + + cd ${srcdir}/samba-${pkgver}/lib/ldb + ./configure --prefix=${_prefix}/samba + make + make DESTDIR="$pkgdir/" install + + cd ${srcdir}/samba-${pkgver} + ./configure --prefix=${_prefix} + make +} + +package() { + _pyver=`python2 -c 'import sys; print(sys.version[:3])'` + + cd ${srcdir}/samba-${pkgver} + make DESTDIR="$pkgdir/" install + + install -d ${pkgdir}/etc/ld.so.conf.d + echo "${_prefix}/samba/lib" > ${pkgdir}/etc/ld.so.conf.d/samba4.conf + + cd ${pkgdir}/${_prefix}/lib/ + ln -s samba/libldb-samba4.so.0 libldb.so + ln -s samba/libldb-samba4.so.0 libldb.so.0 + + find ${pkgdir}/${_prefix}/lib/python${_pyver}/site-packages/ -name '*.py' | \ + xargs sed -i "s|#!/usr/bin/env python$|#!/usr/bin/env python2|" + find ${pkgdir}/${_prefix}/bin ${pkgdir}/${_prefix}/sbin -type f -executable | \ + xargs sed -i "s|#!/usr/bin/env python$|#!/usr/bin/env python2|" + + # Make admin scripts look in the right place for the samba python module + for script in sbin/samba_dnsupdate sbin/samba_kcc sbin/samba_spnupdate \ + sbin/samba_upgradeprovision sbin/samba_upgradedns bin/samba-tool + do + sed -i "/^sys\.path\.insert/ a\ +sys.path.insert(0, '${_prefix}/lib/python${_pyver}/site-packages')" \ + ${pkgdir}/${_prefix}/${script} + done + + install -D -m755 ${srcdir}/samba4.rc ${pkgdir}/etc/rc.d/samba4 + install -D -m644 ${srcdir}/samba4.confd ${pkgdir}/etc/conf.d/samba4 +} diff --git a/pcr/samba4/samba4.confd b/pcr/samba4/samba4.confd new file mode 100644 index 000000000..3c29c49cf --- /dev/null +++ b/pcr/samba4/samba4.confd @@ -0,0 +1,5 @@ +# +# Additional parameters to be passed to Samba4 +# + +SAMBA4_ARGS="" diff --git a/pcr/samba4/samba4.rc b/pcr/samba4/samba4.rc new file mode 100644 index 000000000..73d09fe30 --- /dev/null +++ b/pcr/samba4/samba4.rc @@ -0,0 +1,50 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +[ -f /etc/conf.d/samba4 ] && . /etc/conf.d/samba4 + +function call_samba4() { + /opt/samba4/sbin/samba -D $SAMBA4_ARGS +} + +case "$1" in + start) + stat_busy "Starting Samba4 Server" + if [ ! -x /opt/samba4/var ] ; then + install -m755 -d /opt/samba4/var + fi + if [ ! -x /opt/samba4/var/run ] ; then + install -m755 -d /opt/samba4/var/run + fi + PID=`pidof -o %PPID /opt/samba4/sbin/samba` + [ -z "$PID" ] && call_samba4 + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon samba4 + stat_done + fi + ;; + stop) + stat_busy "Stopping Samba4 Server" + PID=`pidof -o %PPID /opt/samba4/sbin/samba` + [ -z "$PID" ] || kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm /opt/samba4/var/run/samba.pid &> /dev/null + rm_daemon samba4 + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 -- cgit v1.2.3