summaryrefslogtreecommitdiff
path: root/pcr/openchange
diff options
context:
space:
mode:
authorNicolás Reynolds <apoyosis@correo.inta.gob.ar>2012-12-04 10:07:01 -0300
committerNicolás Reynolds <apoyosis@correo.inta.gob.ar>2012-12-04 10:07:01 -0300
commit1930acb377d623fef168808f189ca5c0cac9bf4d (patch)
tree7402b6e426c16f585762b2cfbf563350056cad08 /pcr/openchange
parentcd1a2ffd0e3e34edec9379423e5999c156747cc3 (diff)
MAPI support for Evolution
Diffstat (limited to 'pcr/openchange')
-rw-r--r--pcr/openchange/PKGBUILD67
-rw-r--r--pcr/openchange/bugzilla_682449.patch191
2 files changed, 258 insertions, 0 deletions
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 <zrax0111 gmail com>
+# Contributor: ngoonee <ngoonee.talk@gmail.com>
+# Contributor: Adam Russell <adamlr6+arch@gmail.com>
+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 <samba/popt.h>|#include <popt.h>|" ${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(