summaryrefslogtreecommitdiff
path: root/community/libsieve
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-09-04 02:15:19 -0700
committerroot <root@rshg054.dnsready.net>2013-09-04 02:15:19 -0700
commitc270fd5b2cd42b593708a919254fbbb609bbf641 (patch)
tree2cc8a32b6fe3260814e158bb8b18abec1a09e18d /community/libsieve
parent3aa73e2018f321c9ccff8eca801b1c2fa9f18fa8 (diff)
Wed Sep 4 02:13:41 PDT 2013
Diffstat (limited to 'community/libsieve')
-rw-r--r--community/libsieve/PKGBUILD33
-rw-r--r--community/libsieve/crash-fix.patch78
2 files changed, 105 insertions, 6 deletions
diff --git a/community/libsieve/PKGBUILD b/community/libsieve/PKGBUILD
index 47887d420..245294222 100644
--- a/community/libsieve/PKGBUILD
+++ b/community/libsieve/PKGBUILD
@@ -1,23 +1,28 @@
-# $Id: PKGBUILD 96634 2013-09-02 16:06:17Z spupykin $
+# $Id: PKGBUILD 96725 2013-09-03 13:55:48Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
pkgname=libsieve
pkgver=2.3.1
-pkgrel=2
+pkgrel=3
pkgdesc="sieve interpretator lib"
arch=(i686 x86_64)
url="http://libsieve.sourceforge.net/"
license=('GPL')
options=('!libtool')
source=("https://github.com/downloads/sodabrew/libsieve/libsieve-$pkgver.tar.gz"
- "glibc-regex.patch")
+ "glibc-regex.patch"
+ "crash-fix.patch")
md5sums=('bb48eecf877cc7fdb2b0dfe757b48d7a'
- '0d98d9e8f0583857616b2ba98f1833fa')
+ '0d98d9e8f0583857616b2ba98f1833fa'
+ '05ce47217ced05fd32a3ae41dc37f07e')
prepare() {
cd "$srcdir/$pkgname-$pkgver"
rm -rf src/sv_regex
+ rm -f src/sv_parser/{addr,header,sieve}.{c,h}
+ rm -f src/sv_parser/{addr,header,sieve}-lex.{c,h}
patch -p1 <$srcdir/glibc-regex.patch
+ patch -p1 <$srcdir/crash-fix.patch
}
build() {
@@ -25,16 +30,32 @@ build() {
aclocal
automake
autoconf
+# export CFLAGS="-g -O2"
+# export LDFLAGS="-g -O2"
./configure --prefix=/usr
+ (cd src/sv_parser && for i in `ls -1 *.l | sed 's|\.l||'`; do flex --header-file=$i.h -o $i.c $i.l; done)
make
}
check() {
cd "$srcdir/$pkgname-$pkgver/src/sv_test"
+ export LD_LIBRARY_PATH=$srcdir/libsieve-$pkgver/src/.libs:$LD_LIBRARY_PATH
ls -1 script* | while read script; do
ls -1 message* | while read msg; do
- msg "checking $script $msg"
- ./example $script $msg || true # upstream bugs?
+ if [ "$script" == "script22.sv" ]; then
+ # script22.sv: syntax errors check
+ msg "checking !$script $msg"
+ ./example $script $msg && false || true
+ else
+ if [ "$script" == "script23.sv" ]; then
+ # script23.sv: enotify looks unsupported or I don't know how to use it - skip it
+ msg "skipping $script $msg"
+ true
+ else
+ msg "checking $script $msg"
+ ./example $script $msg
+ fi
+ fi
done
done
}
diff --git a/community/libsieve/crash-fix.patch b/community/libsieve/crash-fix.patch
new file mode 100644
index 000000000..7dfde87cc
--- /dev/null
+++ b/community/libsieve/crash-fix.patch
@@ -0,0 +1,78 @@
+diff -wbBur libsieve-2.3.1/src/sv_parser/header.y libsieve-2.3.1.q/src/sv_parser/header.y
+--- libsieve-2.3.1/src/sv_parser/header.y 2012-05-31 13:16:50.000000000 +0400
++++ libsieve-2.3.1.q/src/sv_parser/header.y 2013-09-02 20:21:26.000000000 +0400
+@@ -70,7 +70,7 @@
+ }
+ | body WRAP {
+ TRACE_DEBUG( "body: body WRAP: %s %s", $1, $2 );
+- $$ = libsieve_strbuf(context->strbuf, libsieve_strconcat( $1, $2, NULL ), strlen($1)+strlen($2), FREEME);
++ $$ = libsieve_strbuf(context->strbuf, libsieve_strconcat( $1 ? $1 : "", $2, NULL ), strlen($1 ? $1 : "")+strlen($2), FREEME);
+ };
+
+ %%
+diff -wbBur libsieve-2.3.1/src/sv_parser/addr.y libsieve-2.3.1.q/src/sv_parser/addr.y
+--- libsieve-2.3.1/src/sv_parser/addr.y 2012-05-31 13:16:50.000000000 +0400
++++ libsieve-2.3.1.q/src/sv_parser/addr.y 2013-09-02 21:42:15.267979609 +0400
+@@ -38,6 +38,7 @@
+
+ /* sv_util */
+ #include "src/sv_util/util.h"
++#include "src/sv_interface/context2.h"
+
+ /* sv_parser */
+ #include "addr.h"
+@@ -74,10 +74,10 @@
+ context->addr_addr->name = $1;
+ };
+
+-address: mailbox_list { TRACE_DEBUG( "address: mailbox: %s", $1 ); }
+- | group { TRACE_DEBUG( "address: group: %s", $1 ); };
++address: mailbox_list { $$ = $1; TRACE_DEBUG( "address: mailbox: %s", $1 ); }
++ | group { $$ = $1; TRACE_DEBUG( "address: group: %s", $1 ); };
+
+-group: phrase ':' ';' { TRACE_DEBUG( "group: phrase: %s", $1 ); }
++group: phrase ':' ';' { $$ = $1; TRACE_DEBUG( "group: phrase: %s", $1 ); }
+ | phrase ':' mailbox_list ';' { TRACE_DEBUG( "group: phrase mailbox_list: %s %s", $1, $3 ); };
+
+ mailbox_list: mailbox {
+@@ -94,8 +94,8 @@
+ };
+
+ mailbox:
+- angle_addr { TRACE_DEBUG( "mailbox: angle_addr: %s", $1 ); }
+- | addr_spec { TRACE_DEBUG( "mailbox: addr_spec: %s", $1 ); }
++ angle_addr { $$ = $1; TRACE_DEBUG( "mailbox: angle_addr: %s", $1 ); }
++ | addr_spec { $$ = $1; TRACE_DEBUG( "mailbox: addr_spec: %s", $1 ); }
+ | phrase angle_addr {
+ TRACE_DEBUG( "mailbox: phrase angle_addr: %s %s", $1, $2 );
+ // This is a "top terminal" state...
+@@ -103,7 +103,7 @@
+ context->addr_addr->name = libsieve_strdup( $1 );
+ };
+
+-angle_addr: '<' addr_spec '>' { TRACE_DEBUG( "angle_addr: addr_spec: %s", $2 ); }
++angle_addr: '<' addr_spec '>' { $$ = $2; TRACE_DEBUG( "angle_addr: addr_spec: %s", $2 ); }
+ | '<' route ':' addr_spec '>' {
+ TRACE_DEBUG( "angle_addr: route addr_spec: %s:%s", $2, $4 );
+ // This is a "top terminal" state...
+@@ -133,13 +133,13 @@
+ $$ = libsieve_strbuf(context->strbuf, libsieve_strconcat( "@", $2, ",", $4, NULL ), strlen($2)+strlen($4)+2, FREEME);
+ };
+
+-local_part: DOTATOM { TRACE_DEBUG( "local_part: DOTATOM: %s", $1 ); }
+- | ATOM { TRACE_DEBUG( "local_part: ATOM : %s", $1); }
+- | qstring { TRACE_DEBUG( "local_part: qstring: %s", $1); }
+-
+-domain: DOTATOM { TRACE_DEBUG( "domain: DOTATOM: %s", $1 ); }
+- | ATOM { TRACE_DEBUG("domain: ATOM: %s", $1); }
+- | domainlit { TRACE_DEBUG( "domain: domainlit: %s", $1); };
++local_part: DOTATOM { $$ = $1; TRACE_DEBUG( "local_part: DOTATOM: %s", $1 ); }
++ | ATOM { $$ = $1; TRACE_DEBUG( "local_part: ATOM : %s", $1); }
++ | qstring { $$ = $1; TRACE_DEBUG( "local_part: qstring: %s", $1); }
++
++domain: DOTATOM { $$ = $1; TRACE_DEBUG( "domain: DOTATOM: %s", $1 ); }
++ | ATOM { $$ = $1; TRACE_DEBUG("domain: ATOM: %s", $1); }
++ | domainlit { $$ = $1; TRACE_DEBUG( "domain: domainlit: %s", $1); };
+
+ domainlit: '[' DTEXT ']' {
+ TRACE_DEBUG( "domainlit: DTEXT: %s", $2 );