Date: Saturday, January 30, 2010 @ 09:00:00
  Author: jgc
Revision: 65502

upgpkg: beagle 0.3.9-2
    Rebuild for libpng/libjpeg
Add patch to build with gmime-sharp 2.4
Add patch to build with recent versions of mono

Added:
  beagle/trunk/beagle-0.3.9-gmime24.patch
  beagle/trunk/beagle-0.3.9-mono-data-sqlite-2.patch
Modified:
  beagle/trunk/PKGBUILD

---------------------------------------+
 PKGBUILD                              |   16 
 beagle-0.3.9-gmime24.patch            |  703 ++++++++++++++++++++++++++++++++
 beagle-0.3.9-mono-data-sqlite-2.patch |   81 +++
 3 files changed, 796 insertions(+), 4 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2010-01-30 13:55:05 UTC (rev 65501)
+++ PKGBUILD    2010-01-30 14:00:00 UTC (rev 65502)
@@ -3,21 +3,25 @@
 # Contributor: Shadowhand <[email protected]>
 pkgname=beagle
 pkgver=0.3.9
-pkgrel=1
+pkgrel=2
 pkgdesc="Search tool that ransacks your personal information space"
 arch=(i686 x86_64)
 url="http://www.gnome.org/projects/beagle/";
 license=('custom')
-depends=('gnome-sharp>=2.24.1' 'gmime>=2.2.21' 'evolution-sharp>=0.20.0' 
'libexif' 'librsvg>=2.26.0' 'sqlite3>=3.6.13' 'libxss' 'wv>=1.2.4' 'chmlib' 
'gsf-sharp>=0.8.1' 'libsm' 'xdg-utils' 'ndesk-dbus-glib' 'mono>=2.4' 
'taglib-sharp')
+depends=('gnome-sharp>=2.24.1' 'gmime>=2.4.10' 'evolution-sharp>=0.20.0' 
'libexif' 'librsvg>=2.26.0' 'sqlite3>=3.6.13' 'libxss' 'wv>=1.2.4' 'chmlib' 
'gsf-sharp>=0.8.1' 'libsm' 'xdg-utils' 'ndesk-dbus-glib' 'mono>=2.4' 
'taglib-sharp')
 makedepends=('intltool' 'zip' 'pkgconfig')
 options=('!libtool')
 backup=('etc/beagle/crawl-applications' 'etc/beagle/crawl-documentation'
         'etc/beagle/crawl-windows')
 install=beagle.install
 
source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.3/${pkgname}-${pkgver}.tar.bz2
-       beagle-0.3.9-spew.patch)
+        beagle-0.3.9-spew.patch
+        beagle-0.3.9-gmime24.patch
+        beagle-0.3.9-mono-data-sqlite-2.patch)
 md5sums=('b73c12423d2d67133dbb05933f4c8fe1'
-        '003ada7acc2724e94e0218e4a6705b4a')
+         '003ada7acc2724e94e0218e4a6705b4a'
+         '73b5a5ea03dc3a7ca71ed41772e4dd82'
+         'd99a93730485b7f9a5e2111a8b2bf440')
 
 build() {
   export "MONO_SHARED_DIR=${srcdir}/.wabi"
@@ -26,7 +30,11 @@
   cd "${srcdir}/${pkgname}-${pkgver}"
   sed -i -e 's/CRAWL_USER=beagleindex/CRAWL_USER=beaglidx/' 
tools/beagle-crawl-system.in || return 1
   sed -i -e 's/libchm.so.1/libchm.so.0/' Util/ChmFile.cs || return 1
+  sed -i -e 's/libgnome-desktop-2.so.2/libgnome-desktop-2.so.11/' 
search/Beagle.Search.exe.config || return 1
+
   patch -Np1 -i "${srcdir}/beagle-0.3.9-spew.patch" || return 1
+  patch -Np1 -i "${srcdir}/beagle-0.3.9-gmime24.patch" || return 1
+  patch -Np1 -i "${srcdir}/beagle-0.3.9-mono-data-sqlite-2.patch" || return 1
 
   ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
        --enable-inotify \

Added: beagle-0.3.9-gmime24.patch
===================================================================
--- beagle-0.3.9-gmime24.patch                          (rev 0)
+++ beagle-0.3.9-gmime24.patch  2010-01-30 14:00:00 UTC (rev 65502)
@@ -0,0 +1,703 @@
+diff -upNr 
beagle-0.3.9.orign/beagled/EvolutionMailQueryable/EvolutionMailIndexableGenerator.cs
 beagle-0.3.9/beagled/EvolutionMailQueryable/EvolutionMailIndexableGenerator.cs
+--- 
beagle-0.3.9.orign/beagled/EvolutionMailQueryable/EvolutionMailIndexableGenerator.cs
       2008-04-25 20:17:04.000000000 +0200
++++ 
beagle-0.3.9/beagled/EvolutionMailQueryable/EvolutionMailIndexableGenerator.cs  
   2009-01-28 12:33:17.000000000 +0100
+@@ -333,28 +333,46 @@ namespace Beagle.Daemon.EvolutionMailQue
+                         indexable.AddProperty (Property.NewUnsearched 
("fixme:folder", this.folder_name));
+ 
+                       GMime.InternetAddressList addrs;
+-
+-                      addrs = message.GetRecipients 
(GMime.Message.RecipientType.To);
+-                      foreach (GMime.InternetAddress ia in addrs) {
+-                              if (this.folder_name == "Sent" && 
ia.AddressType != GMime.InternetAddressType.Group)
+-                                      indexable.AddProperty 
(Property.NewUnsearched ("fixme:sentTo", ia.Addr));
++                      
++                      if (this.folder_name == "Sent") {
++                              addrs = message.GetRecipients 
(GMime.RecipientType.To);
++                              foreach (GMime.InternetAddress ia in addrs) {
++                                      if (ia is GMime.InternetAddressMailbox) 
{
++                                              GMime.InternetAddressMailbox 
mailbox = ia as GMime.InternetAddressMailbox;
++                                              
++                                              indexable.AddProperty 
(Property.NewUnsearched ("fixme:sentTo", mailbox.Address));
++                                      }
++                              }
++                              
++                              addrs.Dispose ();
+                       }
+-                      addrs.Dispose ();
+-
+-                      addrs = message.GetRecipients 
(GMime.Message.RecipientType.Cc);
+-                      foreach (GMime.InternetAddress ia in addrs) {
+-                              if (this.folder_name == "Sent"  && 
ia.AddressType != GMime.InternetAddressType.Group)
+-                                      indexable.AddProperty 
(Property.NewUnsearched ("fixme:sentTo", ia.Addr));
++                      
++                      if (this.folder_name == "Sent") {
++                              addrs = message.GetRecipients 
(GMime.RecipientType.Cc);
++                              foreach (GMime.InternetAddress ia in addrs) {
++                                      if (ia is GMime.InternetAddressMailbox) 
{
++                                              GMime.InternetAddressMailbox 
mailbox = ia as GMime.InternetAddressMailbox;
++                                              
++                                              indexable.AddProperty 
(Property.NewUnsearched ("fixme:sentTo", mailbox.Address));
++                                      }
++                              }
++                              
++                              addrs.Dispose ();
+                       }
+-                      addrs.Dispose ();
+-
+-                      addrs = GMime.InternetAddressList.ParseString 
(GMime.Utils.HeaderDecodePhrase (message.Sender));
+-                      foreach (GMime.InternetAddress ia in addrs) {
+-                              if (this.folder_name != "Sent"  && 
ia.AddressType != GMime.InternetAddressType.Group)
+-                                      indexable.AddProperty 
(Property.NewUnsearched ("fixme:gotFrom", ia.Addr));
++                      
++                      if (this.folder_name != "Sent") {
++                              addrs = GMime.InternetAddressList.Parse 
(message.Sender);
++                              foreach (GMime.InternetAddress ia in addrs) {
++                                      if (ia is GMime.InternetAddressMailbox) 
{
++                                              GMime.InternetAddressMailbox 
mailbox = ia as GMime.InternetAddressMailbox;
++                                      
++                                              indexable.AddProperty 
(Property.NewUnsearched ("fixme:gotFrom", mailbox.Address));
++                                      }
++                              }
++                              
++                              addrs.Dispose ();
+                       }
+-                      addrs.Dispose ();
+-
++                      
+                       if (this.folder_name == "Sent")
+                               indexable.AddProperty (Property.NewFlag 
("fixme:isSent"));
+ 
+@@ -750,48 +768,54 @@ namespace Beagle.Daemon.EvolutionMailQue
+                       }
+ 
+                       GMime.InternetAddressList addrs;
+-                      addrs = GMime.InternetAddressList.ParseString 
(messageInfo.to);
++                      addrs = GMime.InternetAddressList.Parse 
(messageInfo.to);
+                       foreach (GMime.InternetAddress ia in addrs) {
++                              GMime.InternetAddressMailbox mailbox = ia as 
GMime.InternetAddressMailbox;
++                              
+                               if (!have_content) {
+                                       indexable.AddProperty 
(Property.NewUnsearched ("fixme:to", ia.ToString (false)));
+-                                      if (ia.AddressType != 
GMime.InternetAddressType.Group)
+-                                              indexable.AddProperty 
(Property.New ("fixme:to_address", ia.Addr));
+-
++                                      if (ia is GMime.InternetAddressMailbox)
++                                              indexable.AddProperty 
(Property.New ("fixme:to_address", mailbox.Address));
++                                      
+                                       indexable.AddProperty (Property.New 
("fixme:to_name", ia.Name));
+                               }
+-
+-                              if (this.folder_name == "Sent" && 
ia.AddressType != GMime.InternetAddressType.Group)
+-                                      indexable.AddProperty 
(Property.NewUnsearched ("fixme:sentTo", ia.Addr));
++                              
++                              if (this.folder_name == "Sent" && ia is 
GMime.InternetAddressMailbox)
++                                      indexable.AddProperty 
(Property.NewUnsearched ("fixme:sentTo", mailbox.Address));
+                       }
+                       addrs.Dispose ();
+ 
+-                      addrs = GMime.InternetAddressList.ParseString 
(messageInfo.cc);
++                      addrs = GMime.InternetAddressList.Parse 
(messageInfo.cc);
+                       foreach (GMime.InternetAddress ia in addrs) {
++                              GMime.InternetAddressMailbox mailbox = ia as 
GMime.InternetAddressMailbox;
++                              
+                               if (!have_content) {
+                                       indexable.AddProperty 
(Property.NewUnsearched ("fixme:cc", ia.ToString (false)));
+-                                      if (ia.AddressType != 
GMime.InternetAddressType.Group)
+-                                              indexable.AddProperty 
(Property.New ("fixme:cc_address", ia.Addr));
+-
++                                      if (ia is GMime.InternetAddressMailbox)
++                                              indexable.AddProperty 
(Property.New ("fixme:cc_address", mailbox.Address));
++                                      
+                                       indexable.AddProperty (Property.New 
("fixme:cc_name", ia.Name));
+                               }
+-
+-                              if (this.folder_name == "Sent" && 
ia.AddressType != GMime.InternetAddressType.Group)
+-                                      indexable.AddProperty 
(Property.NewUnsearched ("fixme:sentTo", ia.Addr));
++                              
++                              if (this.folder_name == "Sent" && ia is 
GMime.InternetAddressMailbox)
++                                      indexable.AddProperty 
(Property.NewUnsearched ("fixme:sentTo", mailbox.Address));
+                       }
+                       addrs.Dispose ();
+ 
+-                      addrs = GMime.InternetAddressList.ParseString 
(messageInfo.from);
++                      addrs = GMime.InternetAddressList.Parse 
(messageInfo.from);
+                       foreach (GMime.InternetAddress ia in addrs) {
++                              GMime.InternetAddressMailbox mailbox = ia as 
GMime.InternetAddressMailbox;
++                              
+                               if (!have_content) {
+                                       indexable.AddProperty 
(Property.NewUnsearched ("fixme:from", ia.ToString (false)));
+-                                      if (ia.AddressType != 
GMime.InternetAddressType.Group)
+-                                              indexable.AddProperty 
(Property.New ("fixme:from_address", ia.Addr));
+-
++                                      if (ia is GMime.InternetAddressMailbox)
++                                              indexable.AddProperty 
(Property.New ("fixme:from_address", mailbox.Address));
++                                      
+                                       indexable.AddProperty (Property.New 
("fixme:from_name", ia.Name));
+                               }
+ 
+-                              if (this.folder_name != "Sent" && 
ia.AddressType != GMime.InternetAddressType.Group)
+-                                      indexable.AddProperty 
(Property.NewUnsearched ("fixme:gotFrom", ia.Addr));
++                              if (this.folder_name != "Sent" && ia is 
GMime.InternetAddressMailbox)
++                                      indexable.AddProperty 
(Property.NewUnsearched ("fixme:gotFrom", mailbox.Address));
+                       }
+                       addrs.Dispose ();
+ 
+diff -upNr beagle-0.3.9.orign/beagled/GoogleBackends/GMailSearchDriver.cs 
beagle-0.3.9/beagled/GoogleBackends/GMailSearchDriver.cs
+--- beagle-0.3.9.orign/beagled/GoogleBackends/GMailSearchDriver.cs     
2008-04-25 21:26:19.000000000 +0200
++++ beagle-0.3.9/beagled/GoogleBackends/GMailSearchDriver.cs   2009-01-28 
12:33:17.000000000 +0100
+@@ -322,38 +322,47 @@ namespace Beagle.Daemon.GoogleBackend {
+                       hit.AddProperty (Property.NewDate ("fixme:date", 
message.Date.ToUniversalTime ()));
+ 
+                       GMime.InternetAddressList addrs;
+-                      addrs = message.GetRecipients 
(GMime.Message.RecipientType.To);
++                      addrs = message.GetRecipients (GMime.RecipientType.To);
+                       foreach (GMime.InternetAddress ia in addrs) {
+                               hit.AddProperty (Property.NewUnsearched 
("fixme:to", ia.ToString (false)));
+-                              if (ia.AddressType != 
GMime.InternetAddressType.Group)
+-                                      hit.AddProperty (Property.New 
("fixme:to_address", ia.Addr));
+-
++                              if (ia is GMime.InternetAddressMailbox) {
++                                      GMime.InternetAddressMailbox mailbox = 
ia as GMime.InternetAddressMailbox;
++                                      
++                                      hit.AddProperty (Property.New 
("fixme:to_address", mailbox.Address));
++                              }
++                              
+                               hit.AddProperty (Property.New ("fixme:to_name", 
ia.Name));
+                       }
+                       addrs.Dispose ();
+ 
+-                      addrs = message.GetRecipients 
(GMime.Message.RecipientType.Cc);
++                      addrs = message.GetRecipients (GMime.RecipientType.Cc);
+                       foreach (GMime.InternetAddress ia in addrs) {
+                               hit.AddProperty (Property.NewUnsearched 
("fixme:cc", ia.ToString (false)));
+-                              if (ia.AddressType != 
GMime.InternetAddressType.Group)
+-                                      hit.AddProperty (Property.New 
("fixme:cc_address", ia.Addr));
+-
++                              if (ia is GMime.InternetAddressMailbox) {
++                                      GMime.InternetAddressMailbox mailbox = 
ia as GMime.InternetAddressMailbox;
++                                      
++                                      hit.AddProperty (Property.New 
("fixme:cc_address", mailbox.Address));
++                              }
++                              
+                               hit.AddProperty (Property.New ("fixme:cc_name", 
ia.Name));
+                       }
+                       addrs.Dispose ();
+ 
+-                      addrs = GMime.InternetAddressList.ParseString 
(GMime.Utils.HeaderDecodePhrase (message.Sender));
++                      addrs = GMime.InternetAddressList.Parse 
(message.Sender);
+                       foreach (GMime.InternetAddress ia in addrs) {
+                               hit.AddProperty (Property.NewUnsearched 
("fixme:from", ia.ToString (false)));
+-                              if (ia.AddressType != 
GMime.InternetAddressType.Group)
+-                                      hit.AddProperty (Property.New 
("fixme:from_address", ia.Addr));
+-
++                              if (ia is GMime.InternetAddressMailbox) {
++                                      GMime.InternetAddressMailbox mailbox = 
ia as GMime.InternetAddressMailbox;
++                                      
++                                      hit.AddProperty (Property.New 
("fixme:from_address", mailbox.Address));
++                              }
++                              
+                               hit.AddProperty (Property.New 
("fixme:from_name", ia.Name));
+                       }
+                       addrs.Dispose ();
+ 
+                       foreach (GMime.References refs in message.References)
+-                              hit.AddProperty (Property.NewUnsearched 
("fixme:reference", refs.Msgid));
++                              hit.AddProperty (Property.NewUnsearched 
("fixme:reference", refs.MessageId));
+ 
+                       string list_id = message.GetHeader ("List-Id");
+                       if (list_id != null)
+diff -upNr beagle-0.3.9.orign/beagled/KMailQueryable/KMailIndexer.cs 
beagle-0.3.9/beagled/KMailQueryable/KMailIndexer.cs
+--- beagle-0.3.9.orign/beagled/KMailQueryable/KMailIndexer.cs  2008-02-10 
21:24:19.000000000 +0100
++++ beagle-0.3.9/beagled/KMailQueryable/KMailIndexer.cs        2009-01-28 
12:33:17.000000000 +0100
+@@ -407,28 +407,46 @@ namespace Beagle.Daemon.KMailQueryable {
+                         indexable.AddProperty (Property.NewUnsearched 
("fixme:folder", folder_name));
+ 
+                       GMime.InternetAddressList addrs;
+-
+-                      addrs = message.GetRecipients 
(GMime.Message.RecipientType.To);
+-                      foreach (GMime.InternetAddress ia in addrs) {
+-                              if (folder_name == Queryable.SentMailFolderName 
&& ia.AddressType != GMime.InternetAddressType.Group)
+-                                      indexable.AddProperty 
(Property.NewKeyword ("fixme:sentTo", ia.Addr));
+-                      }
+-                      addrs.Dispose ();
+-
+-                      addrs = message.GetRecipients 
(GMime.Message.RecipientType.Cc);
+-                      foreach (GMime.InternetAddress ia in addrs) {
+-                              if (folder_name == Queryable.SentMailFolderName 
&& ia.AddressType != GMime.InternetAddressType.Group)
+-                                      indexable.AddProperty 
(Property.NewKeyword ("fixme:sentTo", ia.Addr));
+-                      }
+-                      addrs.Dispose ();
+-
+-                      addrs = GMime.InternetAddressList.ParseString 
(GMime.Utils.HeaderDecodePhrase (message.Sender));
+-                      foreach (GMime.InternetAddress ia in addrs) {
+-                              if (folder_name != Queryable.SentMailFolderName 
&& ia.AddressType != GMime.InternetAddressType.Group)
+-                                      indexable.AddProperty 
(Property.NewKeyword ("fixme:gotFrom", ia.Addr));
++                      
++                      if (folder_name == Queryable.SentMailFolderName) {
++                              addrs = message.GetRecipients 
(GMime.RecipientType.To);
++                              foreach (GMime.InternetAddress ia in addrs) {
++                                      if (ia is GMime.InternetAddressMailbox) 
{
++                                              GMime.InternetAddressMailbox 
mailbox = ia as GMime.InternetAddressMailbox;
++                                              
++                                              indexable.AddProperty 
(Property.NewKeyword ("fixme:sentTo", mailbox.Address));
++                                      }
++                              }
++                              
++                              addrs.Dispose ();
+                       }
+-                      addrs.Dispose ();
+-
++                      
++                      if (folder_name == Queryable.SentMailFolderName) {
++                              addrs = message.GetRecipients 
(GMime.RecipientType.Cc);
++                              foreach (GMime.InternetAddress ia in addrs) {
++                                      if (ia is GMime.InternetAddressMailbox) 
{
++                                              GMime.InternetAddressMailbox 
mailbox = ia as GMime.InternetAddressMailbox;
++                                              
++                                              indexable.AddProperty 
(Property.NewKeyword ("fixme:sentTo", mailbox.Address));
++                                      }
++                              }
++                              
++                              addrs.Dispose ();
++                      }
++                      
++                      if (folder_name != Queryable.SentMailFolderName) {
++                              addrs = GMime.InternetAddressList.Parse 
(message.Sender);
++                              foreach (GMime.InternetAddress ia in addrs) {
++                                      if (ia is GMime.InternetAddressMailbox) 
{
++                                              GMime.InternetAddressMailbox 
mailbox = ia as GMime.InternetAddressMailbox;
++                                              
++                                              indexable.AddProperty 
(Property.NewKeyword ("fixme:gotFrom", mailbox.Address));
++                                      }
++                              }
++                              
++                              addrs.Dispose ();
++                      }
++                      
+                       if (folder_name == Queryable.SentMailFolderName)
+                               indexable.AddProperty (Property.NewFlag 
("fixme:isSent"));
+                       else {
+diff -upNr 
beagle-0.3.9.orign/beagled/ThunderbirdQueryable/ThunderbirdQueryable.cs 
beagle-0.3.9/beagled/ThunderbirdQueryable/ThunderbirdQueryable.cs
+--- beagle-0.3.9.orign/beagled/ThunderbirdQueryable/ThunderbirdQueryable.cs    
2008-07-18 16:27:59.000000000 +0200
++++ beagle-0.3.9/beagled/ThunderbirdQueryable/ThunderbirdQueryable.cs  
2009-01-28 12:33:17.000000000 +0100
+@@ -367,9 +367,14 @@ namespace Beagle.Daemon.ThunderbirdQuery
+                       message.Subject = Mime.HeaderDecodeText (GetText 
(document, "Subject"));
+                       message.Sender = Mime.HeaderDecodePhrase (GetText 
(document, "Author"));
+                       message.MessageId = GetText (document, "MessageId");
+-                      message.SetDate (DateTimeUtil.UnixToDateTimeUtc 
(Convert.ToInt64 (GetText (document, "Date"))), 0);
+-                      message.AddRecipientsFromString ("To", 
Mime.HeaderDecodePhrase (GetText (document, "Recipients")));
+-
++                      message.Date = DateTimeUtil.UnixToDateTimeUtc 
(Convert.ToInt64 (GetText (document, "Date")));
++                      
++                      string str = GetText (document, "Recipients");
++                      GMime.InternetAddressList recipients = 
GMime.InternetAddressList.Parse (str);
++                      foreach (GMime.InternetAddress ia in recipients)
++                              message.To.Add (ia);
++                      recipients.Dispose ();
++                      
+                       return message;
+               }
+               
+@@ -434,7 +439,7 @@ namespace Beagle.Daemon.ThunderbirdQuery
+                       
+                       // We _know_ that the stream comes from a StreamReader, 
which uses UTF8 by
+                       // default. So we use that here when parsing our string.
+-                      return (str != null ? Encoding.UTF8.GetString (str, 0, 
pos) : string.Empty);
++                      return (str != null ? 
System.Text.Encoding.UTF8.GetString (str, 0, pos) : string.Empty);
+               }
+               
+               // This spell "charset="
+@@ -462,7 +467,7 @@ namespace Beagle.Daemon.ThunderbirdQuery
+                       // instead of UTF-8 in some cases and that will really 
mess things up.
+                       byte[] buffer = null;
+                       int c, header_length = 0, newlines = 0, charset_pos = 0;
+-                      Encoding enc = Encoding.UTF8;
++                      System.Text.Encoding enc = System.Text.Encoding.UTF8;
+                       try {
+                               do {
+                                       c = stream.BaseStream.ReadByte ();
+@@ -491,7 +496,7 @@ namespace Beagle.Daemon.ThunderbirdQuery
+                               stream.BaseStream.Read (buffer, 0, 
buffer.Length);
+                               
+                               // We need to use correct encoding
+-                              enc = Encoding.GetEncoding (encoding_str);
++                              enc = System.Text.Encoding.GetEncoding 
(encoding_str);
+                       } catch {
+                       } finally {
+                               stream.Close ();
+diff -upNr beagle-0.3.9.orign/configure beagle-0.3.9/configure
+--- beagle-0.3.9.orign/configure       2008-07-19 13:20:36.000000000 +0200
++++ beagle-0.3.9/configure     2009-01-28 12:35:43.000000000 +0100
+@@ -2791,7 +2791,7 @@ MONODOC_REQUIRED=1.2.4
+ NDESK_DBUS_REQUIRED=0.5.2
+ NDESK_DBUS_GLIB_REQUIRED=0.3.0
+ GTK_SHARP_REQUIRED=2.10.0
+-GMIME_SHARP_REQUIRED=2.2.0
++GMIME_SHARP_REQUIRED=2.4.0
+ EVOLUTION_SHARP_REQUIRED=0.13.3
+ GSF_SHARP_REQUIRED=0.6
+ GTK_REQUIRED=2.10.0
+@@ -25660,7 +25660,7 @@ if test -n "$PKG_CONFIG"; then
+       glade-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+       gnome-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+       gnome-vfs-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+-      gmime-sharp >= \$GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= \$GMIME_SHARP_REQUIRED
+ \"") >&5
+   ($PKG_CONFIG --exists --print-errors "
+       gtk-sharp-2.0 >= $GTK_SHARP_REQUIRED
+@@ -25668,7 +25668,7 @@ if test -n "$PKG_CONFIG"; then
+       glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ ") 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+@@ -25679,7 +25679,7 @@ if test -n "$PKG_CONFIG"; then
+       glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ " 2>/dev/null`
+ else
+   pkg_failed=yes
+@@ -25699,7 +25699,7 @@ if test -n "$PKG_CONFIG"; then
+       glade-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+       gnome-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+       gnome-vfs-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+-      gmime-sharp >= \$GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= \$GMIME_SHARP_REQUIRED
+ \"") >&5
+   ($PKG_CONFIG --exists --print-errors "
+       gtk-sharp-2.0 >= $GTK_SHARP_REQUIRED
+@@ -25707,7 +25707,7 @@ if test -n "$PKG_CONFIG"; then
+       glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ ") 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+@@ -25718,7 +25718,7 @@ if test -n "$PKG_CONFIG"; then
+       glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ " 2>/dev/null`
+ else
+   pkg_failed=yes
+@@ -25744,7 +25744,7 @@ fi
+       glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ "`
+         else
+               BEAGLE_UI_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout 
--print-errors "
+@@ -25753,7 +25753,7 @@ fi
+       glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ "`
+         fi
+       # Put the nasty error message in config.log where it belongs
+@@ -25765,7 +25765,7 @@ fi
+       glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ ) were not met:
+ 
+ $BEAGLE_UI_PKG_ERRORS
+@@ -25783,7 +25783,7 @@ echo "$as_me: error: Package requirement
+       glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+       gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ ) were not met:
+ 
+ $BEAGLE_UI_PKG_ERRORS
+@@ -26167,18 +26167,18 @@ if test -n "$PKG_CONFIG"; then
+     { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors 
\"evolution-sharp >= \$EVOLUTION_SHARP_REQUIRED     \\
+                   gconf-sharp-2.0 >= \$GTK_SHARP_REQUIRED     \\
+                 glib-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+-                  gmime-sharp >= \$GMIME_SHARP_REQUIRED\"") >&5
++                  gmime-sharp-2.4 >= \$GMIME_SHARP_REQUIRED\"") >&5
+   ($PKG_CONFIG --exists --print-errors "evolution-sharp >= 
$EVOLUTION_SHARP_REQUIRED  \
+                   gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED      \
+                 glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-                  gmime-sharp >= $GMIME_SHARP_REQUIRED") 2>&5
++                  gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED") 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then
+   pkg_cv_EVO_CFLAGS=`$PKG_CONFIG --cflags "evolution-sharp >= 
$EVOLUTION_SHARP_REQUIRED       \
+                   gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED      \
+                 glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-                  gmime-sharp >= $GMIME_SHARP_REQUIRED" 2>/dev/null`
++                  gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED" 2>/dev/null`
+ else
+   pkg_failed=yes
+ fi
+@@ -26194,18 +26194,18 @@ if test -n "$PKG_CONFIG"; then
+     { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors 
\"evolution-sharp >= \$EVOLUTION_SHARP_REQUIRED     \\
+                   gconf-sharp-2.0 >= \$GTK_SHARP_REQUIRED     \\
+                 glib-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+-                  gmime-sharp >= \$GMIME_SHARP_REQUIRED\"") >&5
++                  gmime-sharp-2.4 >= \$GMIME_SHARP_REQUIRED\"") >&5
+   ($PKG_CONFIG --exists --print-errors "evolution-sharp >= 
$EVOLUTION_SHARP_REQUIRED  \
+                   gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED      \
+                 glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-                  gmime-sharp >= $GMIME_SHARP_REQUIRED") 2>&5
++                  gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED") 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then
+   pkg_cv_EVO_LIBS=`$PKG_CONFIG --libs "evolution-sharp >= 
$EVOLUTION_SHARP_REQUIRED   \
+                   gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED      \
+                 glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-                  gmime-sharp >= $GMIME_SHARP_REQUIRED" 2>/dev/null`
++                  gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED" 2>/dev/null`
+ else
+   pkg_failed=yes
+ fi
+@@ -26227,12 +26227,12 @@ fi
+               EVO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout 
--print-errors "evolution-sharp >= $EVOLUTION_SHARP_REQUIRED      \
+                   gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED      \
+                 glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-                  gmime-sharp >= $GMIME_SHARP_REQUIRED"`
++                  gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED"`
+         else
+               EVO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors 
"evolution-sharp >= $EVOLUTION_SHARP_REQUIRED     \
+                   gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED      \
+                 glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+-                  gmime-sharp >= $GMIME_SHARP_REQUIRED"`
++                  gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED"`
+         fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$EVO_PKG_ERRORS" >&5
+@@ -26781,12 +26781,12 @@ if test -n "$PKG_CONFIG"; then
+         if test -n "$PKG_CONFIG" && \
+     { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"
+       shared-mime-info
+-      gmime-sharp >= \$GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= \$GMIME_SHARP_REQUIRED
+       glib-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+ \"") >&5
+   ($PKG_CONFIG --exists --print-errors "
+       shared-mime-info
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+       glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ ") 2>&5
+   ac_status=$?
+@@ -26794,7 +26794,7 @@ if test -n "$PKG_CONFIG"; then
+   (exit $ac_status); }; then
+   pkg_cv_BEAGLED_CFLAGS=`$PKG_CONFIG --cflags "
+       shared-mime-info
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+       glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ " 2>/dev/null`
+ else
+@@ -26811,12 +26811,12 @@ if test -n "$PKG_CONFIG"; then
+         if test -n "$PKG_CONFIG" && \
+     { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"
+       shared-mime-info
+-      gmime-sharp >= \$GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= \$GMIME_SHARP_REQUIRED
+       glib-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+ \"") >&5
+   ($PKG_CONFIG --exists --print-errors "
+       shared-mime-info
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+       glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ ") 2>&5
+   ac_status=$?
+@@ -26824,7 +26824,7 @@ if test -n "$PKG_CONFIG"; then
+   (exit $ac_status); }; then
+   pkg_cv_BEAGLED_LIBS=`$PKG_CONFIG --libs "
+       shared-mime-info
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+       glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ " 2>/dev/null`
+ else
+@@ -26847,13 +26847,13 @@ fi
+         if test $_pkg_short_errors_supported = yes; then
+               BEAGLED_PKG_ERRORS=`$PKG_CONFIG --short-errors 
--errors-to-stdout --print-errors "
+       shared-mime-info
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+       glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ "`
+         else
+               BEAGLED_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout 
--print-errors "
+       shared-mime-info
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+       glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ "`
+         fi
+@@ -26862,7 +26862,7 @@ fi
+ 
+       { { echo "$as_me:$LINENO: error: Package requirements (
+       shared-mime-info
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+       glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ ) were not met:
+ 
+@@ -26877,7 +26877,7 @@ See the pkg-config man page for more det
+ " >&5
+ echo "$as_me: error: Package requirements (
+       shared-mime-info
+-      gmime-sharp >= $GMIME_SHARP_REQUIRED
++      gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+       glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ ) were not met:
+ 
+@@ -26924,7 +26924,7 @@ BEAGLED_LIBS="$BEAGLED_LIBS $GSF_SHARP_L
+ 
+ 
+ GSF_SHARP_PREFIX=`$PKG_CONFIG --variable=prefix gsf-sharp`
+-GMIME_SHARP_PREFIX=`$PKG_CONFIG --variable=prefix gmime-sharp`
++GMIME_SHARP_PREFIX=`$PKG_CONFIG --variable=prefix gmime-sharp-2.4`
+ 
+ 
+ # Check whether --enable-epiphany-extension was given.
+diff -upNr beagle-0.3.9.orign/Filters/FilterMail.cs 
beagle-0.3.9/Filters/FilterMail.cs
+--- beagle-0.3.9.orign/Filters/FilterMail.cs   2008-06-12 02:20:07.000000000 
+0200
++++ beagle-0.3.9/Filters/FilterMail.cs 2009-01-28 12:33:17.000000000 +0100
+@@ -126,7 +126,7 @@ namespace Beagle.Filters {
+ 
+                       // Messages that are multipart/alternative shouldn't be 
considered as having
+                       // attachments.  Unless of course they do.
+-                      if (mime_part is GMime.Multipart && 
mime_part.ContentType.Subtype.ToLower () != "alternative")
++                      if (mime_part is GMime.Multipart && 
mime_part.ContentType.MediaSubtype.ToLower () != "alternative")
+                               return true;
+ 
+                       return false;
+@@ -140,34 +140,43 @@ namespace Beagle.Filters {
+                       AddProperty (Property.NewDate ("fixme:date", 
message.Date.ToUniversalTime ()));
+ 
+                       GMime.InternetAddressList addrs;
+-                      addrs = this.message.GetRecipients 
(GMime.Message.RecipientType.To);
++                      addrs = this.message.GetRecipients 
(GMime.RecipientType.To);
+                       foreach (GMime.InternetAddress ia in addrs) {
+                               AddProperty (Property.NewUnsearched 
("fixme:to", ia.ToString (false)));
+-                              if (ia.AddressType != 
GMime.InternetAddressType.Group)
+-                                      AddProperty (Property.New 
("fixme:to_address", ia.Addr));
+-
++                              if (ia is GMime.InternetAddressMailbox) {
++                                      GMime.InternetAddressMailbox mailbox = 
ia as GMime.InternetAddressMailbox;
++                                      
++                                      AddProperty (Property.New 
("fixme:to_address", mailbox.Address));
++                              }
++                              
+                               AddProperty (Property.New ("fixme:to_name", 
ia.Name));
+                               AddEmailLink (ia);
+                       }
+                       addrs.Dispose ();
+ 
+-                      addrs = this.message.GetRecipients 
(GMime.Message.RecipientType.Cc);
++                      addrs = this.message.GetRecipients 
(GMime.RecipientType.Cc);
+                       foreach (GMime.InternetAddress ia in addrs) {
+                               AddProperty (Property.NewUnsearched 
("fixme:cc", ia.ToString (false)));
+-                              if (ia.AddressType != 
GMime.InternetAddressType.Group)
+-                                      AddProperty (Property.New 
("fixme:cc_address", ia.Addr));
+-
++                              if (ia is GMime.InternetAddressMailbox) {
++                                      GMime.InternetAddressMailbox mailbox = 
ia as GMime.InternetAddressMailbox;
++                                      
++                                      AddProperty (Property.New 
("fixme:cc_address", mailbox.Address));
++                              }
++                              
+                               AddProperty (Property.New ("fixme:cc_name", 
ia.Name));
+                               AddEmailLink (ia);
+                       }
+                       addrs.Dispose ();
+ 
+-                      addrs = GMime.InternetAddressList.ParseString 
(GMime.Utils.HeaderDecodePhrase (this.message.Sender));
++                      addrs = GMime.InternetAddressList.Parse 
(this.message.Sender);
+                       foreach (GMime.InternetAddress ia in addrs) {
+                               AddProperty (Property.NewUnsearched 
("fixme:from", ia.ToString (false)));
+-                              if (ia.AddressType != 
GMime.InternetAddressType.Group)
+-                                      AddProperty (Property.New 
("fixme:from_address", ia.Addr));
+-
++                              if (ia is GMime.InternetAddressMailbox) {
++                                      GMime.InternetAddressMailbox mailbox = 
ia as GMime.InternetAddressMailbox;
++                                      
++                                      AddProperty (Property.New 
("fixme:from_address", mailbox.Address));
++                              }
++                              
+                               AddProperty (Property.New ("fixme:from_name", 
ia.Name));
+                               AddEmailLink (ia);
+                       }
+@@ -184,7 +193,7 @@ namespace Beagle.Filters {
+                               AddProperty (Property.NewUnsearched 
("fixme:msgid", GMime.Utils.DecodeMessageId (msgid)));
+ 
+                       foreach (GMime.References refs in 
this.message.References)
+-                              AddProperty (Property.NewUnsearched 
("fixme:reference", refs.Msgid));
++                              AddProperty (Property.NewUnsearched 
("fixme:reference", refs.MessageId));
+ 
+                       string list_id = this.message.GetHeader ("List-Id");
+                       if (list_id != null)
+@@ -345,16 +354,15 @@ namespace Beagle.Filters {
+                                       }
+                               } else if (mime_part is GMime.Multipart) {
+                                       GMime.Multipart multipart = 
(GMime.Multipart) mime_part;
+-
+-                                      int num_parts = multipart.Number;
++                                      int num_parts = multipart.Count;
+ 
+                                       // If the mimetype is 
multipart/alternative, we only want to index
+                                       // one part -- the richest one we can 
filter.
+-                                      if 
(mime_part.ContentType.Subtype.ToLower () == "alternative") {
++                                      if 
(mime_part.ContentType.MediaSubtype.ToLower () == "alternative") {
+                                               // The richest formats are at 
the end, so work from there
+                                               // backward.
+                                               for (int i = num_parts - 1; i 
>= 0; i--) {
+-                                                      GMime.Object subpart = 
multipart.GetPart (i);
++                                                      GMime.Object subpart = 
multipart[i];
+ 
+                                                       if (IsMimeTypeHandled 
(subpart.ContentType.ToString ())) {
+                                                               part = subpart;
+@@ -370,7 +378,7 @@ namespace Beagle.Filters {
+                                       // the parts, treat them like a bunch 
of attachments.
+                                       if (part == null) {
+                                               for (int i = 0; i < num_parts; 
i++) {
+-                                                      using (GMime.Object 
subpart = multipart.GetPart (i))
++                                                      using (GMime.Object 
subpart = multipart[i])
+                                                               this.OnEachPart 
(subpart);
+                                               }
+                                       }
+@@ -400,7 +408,7 @@ namespace Beagle.Filters {
+                                               } else if (mime_type == 
"text/html") {
+                                                       no_child_needed = true;
+                                                       html_part = true;
+-                                                      string enc = 
part.GetContentTypeParameter ("charset"); 
++                                                      string enc = 
part.ContentType.GetParameter ("charset"); 
+                                                       // DataWrapper.Stream 
is a very limited stream
+                                                       // and does not allow 
Seek or Tell
+                                                       // HtmlFilter requires 
Stream.Position=0.
+@@ -473,7 +481,7 @@ namespace Beagle.Filters {
+                                                       if (length != -1)
+                                                               
child.AddProperty (Property.NewUnsearched ("fixme:filesize", length));
+ 
+-                                                      if 
(part.ContentType.Type.ToLower () == "text")
++                                                      if 
(part.ContentType.MediaType.ToLower () == "text")
+                                                               
child.SetTextReader (new StreamReader (stream));
+                                                       else
+                                                               
child.SetBinaryStream (stream);

Added: beagle-0.3.9-mono-data-sqlite-2.patch
===================================================================
--- beagle-0.3.9-mono-data-sqlite-2.patch                               (rev 0)
+++ beagle-0.3.9-mono-data-sqlite-2.patch       2010-01-30 14:00:00 UTC (rev 
65502)
@@ -0,0 +1,81 @@
+--- beagle-0.3.9/Util/FSpotTools.cs.orig       2010-01-30 14:45:38.000000000 
+0100
++++ beagle-0.3.9/Util/FSpotTools.cs    2010-01-30 14:47:00.000000000 +0100
+@@ -85,8 +85,12 @@
+                                                       while (reader == null) {
+                                                               try {
+                                                                       reader 
= command.ExecuteReader ();
+-                                                              } catch 
(SqliteBusyException) {
+-                                                                      
Thread.Sleep (50);
++                                                              } catch 
(SqliteException e) {
++                  if (e.ErrorCode == SQLiteErrorCode.Busy) {
++                                                                        
Thread.Sleep (50);
++                  } else {
++                    throw;
++                  }
+                                                               }
+                                                       }
+                                                       reader.Close ();
+--- beagle-0.3.9/beagled/SqliteUtils.cs.orig   2010-01-30 14:47:14.000000000 
+0100
++++ beagle-0.3.9/beagled/SqliteUtils.cs        2010-01-30 14:53:16.000000000 
+0100
+@@ -55,8 +55,13 @@
+                                       try {
+                                               ret = command.ExecuteNonQuery 
();
+                                               break;
+-                                      } catch (SqliteBusyException ex) {
+-                                              Thread.Sleep (50);
++                                      } catch (SqliteException ex) {
++            if (ex.ErrorCode == SQLiteErrorCode.Busy) {
++              Thread.Sleep (50);
++            } else {
++              Log.Error(ex, "SQL that caused the exception: {0}", 
command_text);
++              throw;
++            }
+                                       } catch (Exception e) {
+                                               Log.Error (e, "SQL that caused 
the exception: {0}", command_text);
+                                               throw;
+@@ -79,8 +84,13 @@
+                               try {
+                                       ret = command.ExecuteNonQuery ();
+                                       break;
+-                              } catch (SqliteBusyException ex) {
+-                                      Thread.Sleep (50);
++                              } catch (SqliteException ex) {
++          if (ex.ErrorCode == SQLiteErrorCode.Busy) {
++            Thread.Sleep (50);
++          } else {
++            Log.Error(ex, "SQL that caused the exception: {0}", 
command.CommandText);
++            throw;
++          }
+                               } catch (Exception e) {
+                                       Log.Error ( e, "SQL that caused the 
exception: {0}", command.CommandText);
+                                       throw;
+@@ -96,8 +106,12 @@
+                       while (reader == null) {
+                               try {
+                                       reader = command.ExecuteReader ();
+-                              } catch (SqliteBusyException ex) {
+-                                      Thread.Sleep (50);
++                              } catch (SqliteException ex) {
++          if (ex.ErrorCode == SQLiteErrorCode.Busy) {
++            Thread.Sleep (50);
++          } else {
++            throw;
++          }
+                               }
+                       }
+                       return reader;
+@@ -108,8 +122,12 @@
+                       while (true) {
+                               try {
+                                       return reader.Read ();
+-                              } catch (SqliteBusyException ex) {
+-                                      Thread.Sleep (50);
++                              } catch (SqliteException ex) {
++          if (ex.ErrorCode == SQLiteErrorCode.Busy) {
++            Thread.Sleep (50);
++          } else {
++            throw;
++          }
+                               }
+                       }
+               }

Reply via email to