[kdepim-runtime] pull in some upstream fixes, particularly: imap folder acls (kollab#1816)

Rex Dieter rdieter at fedoraproject.org
Fri May 10 16:59:38 UTC 2013


commit e07ddeb585be6ce8a60b465eece08b3d968a73dc
Author: Rex Dieter <rdieter at math.unl.edu>
Date:   Fri May 10 11:59:30 2013 -0500

    pull in some upstream fixes, particularly: imap folder acls (kollab#1816)

 ...-CPU-if-we-have-nepomuk-disabled-in-syste.patch |   27 ++
 ...ildir-isValid-behavior-change-in-commit-f.patch |  263 ++++++++++++++++++++
 ...-crash-in-ResourceTask-separatorCharacter.patch |   29 +++
 ...l-s-to-None-if-there-is-no-value-instead-.patch |   90 +++++++
 kdepim-runtime.spec                                |   16 +-
 5 files changed, 423 insertions(+), 2 deletions(-)
---
diff --git a/0001-Don-t-waste-CPU-if-we-have-nepomuk-disabled-in-syste.patch b/0001-Don-t-waste-CPU-if-we-have-nepomuk-disabled-in-syste.patch
new file mode 100644
index 0000000..9f38ae3
--- /dev/null
+++ b/0001-Don-t-waste-CPU-if-we-have-nepomuk-disabled-in-syste.patch
@@ -0,0 +1,27 @@
+From 5344590ad5702ae847adbe271cffdb2d1ca34e32 Mon Sep 17 00:00:00 2001
+From: Sergio Martins <iamsergio at gmail.com>
+Date: Fri, 3 May 2013 22:22:52 +0100
+Subject: [PATCH 01/12] Don't waste CPU if we have nepomuk disabled in
+ systemsettings.
+
+---
+ agents/nepomukfeeder/nepomukfeederagent.cpp | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/agents/nepomukfeeder/nepomukfeederagent.cpp b/agents/nepomukfeeder/nepomukfeederagent.cpp
+index b390fd9..aca9017 100644
+--- a/agents/nepomukfeeder/nepomukfeederagent.cpp
++++ b/agents/nepomukfeeder/nepomukfeederagent.cpp
+@@ -278,6 +278,9 @@ void NepomukFeederAgent::itemChanged(const Akonadi::Item& item, const QSet< QByt
+ 
+ void NepomukFeederAgent::itemRemoved(const Akonadi::Item& item)
+ {
++  if ( !mShouldRecordNotifications )
++    return;
++
+   //kDebug() << item.url();
+   Nepomuk2::removeResources( QList <QUrl>() << item.url(), Nepomuk2::RemoveSubResoures );
+   processNextNotification();
+-- 
+1.8.1.4
+
diff --git a/0007-Adapt-to-Maildir-isValid-behavior-change-in-commit-f.patch b/0007-Adapt-to-Maildir-isValid-behavior-change-in-commit-f.patch
new file mode 100644
index 0000000..4662e31
--- /dev/null
+++ b/0007-Adapt-to-Maildir-isValid-behavior-change-in-commit-f.patch
@@ -0,0 +1,263 @@
+From cca29f24f6551054800dbe66dbd2ee9469f58c51 Mon Sep 17 00:00:00 2001
+From: Volker Krause <vkrause at kde.org>
+Date: Sun, 5 May 2013 19:49:47 +0200
+Subject: [PATCH 07/12] Adapt to Maildir::isValid behavior change in commit
+ f7ac54f377.
+
+A mutating isValid() method looks weird, and the amount of changes
+necessary to make the tests pass again also feels wrong, please review.
+
+CCMAIL: amantia at kde.org
+CCMAIL: kevin.krammer at gmx.at
+---
+ resources/mixedmaildir/mixedmaildirstore.cpp       |  4 +--
+ .../mixedmaildir/tests/collectiondeletetest.cpp    | 20 +++++------
+ .../mixedmaildir/tests/collectionmodifytest.cpp    | 40 +++++++++++-----------
+ 3 files changed, 32 insertions(+), 32 deletions(-)
+
+diff --git a/resources/mixedmaildir/mixedmaildirstore.cpp b/resources/mixedmaildir/mixedmaildirstore.cpp
+index 5521b39..1fd0b50 100644
+--- a/resources/mixedmaildir/mixedmaildirstore.cpp
++++ b/resources/mixedmaildir/mixedmaildirstore.cpp
+@@ -539,7 +539,7 @@ MixedMaildirStore::Private::FolderType MixedMaildirStore::Private::folderForColl
+     case MaildirFolder: {
+       const Maildir parentMd( path, type == TopLevelFolder );
+       const Maildir subFolder = parentMd.subFolder( col.remoteId() );
+-      if ( subFolder.isValid() ) {
++      if ( subFolder.isValid( false ) ) {
+         path = subFolder.path();
+         return MaildirFolder;
+       }
+@@ -566,7 +566,7 @@ MixedMaildirStore::Private::FolderType MixedMaildirStore::Private::folderForColl
+       }
+ 
+       const Maildir subFolder( fileInfo.absoluteFilePath(), false );
+-      if ( subFolder.isValid() ) {
++      if ( subFolder.isValid( false ) ) {
+         path = subFolder.path();
+         return MaildirFolder;
+       }
+diff --git a/resources/mixedmaildir/tests/collectiondeletetest.cpp b/resources/mixedmaildir/tests/collectiondeletetest.cpp
+index 80e7208..0de2428 100644
+--- a/resources/mixedmaildir/tests/collectiondeletetest.cpp
++++ b/resources/mixedmaildir/tests/collectiondeletetest.cpp
+@@ -72,7 +72,7 @@ void CollectionDeleteTest::cleanup()
+ void CollectionDeleteTest::testNonExisting()
+ {
+   KPIM::Maildir topLevelMd( mDir->name(), true );
+-  QVERIFY( topLevelMd.isValid() );
++  QVERIFY( topLevelMd.isValid( false ) );
+ 
+   KPIM::Maildir md1( topLevelMd.addSubFolder( "collection1" ), false );
+   KPIM::Maildir md1_2( md1.addSubFolder( "collection1_2" ), false );
+@@ -208,7 +208,7 @@ void CollectionDeleteTest::testNonExisting()
+ void CollectionDeleteTest::testLeaves()
+ {
+   KPIM::Maildir topLevelMd( mDir->name(), true );
+-  QVERIFY( topLevelMd.isValid() );
++  QVERIFY( topLevelMd.isValid( false ) );
+ 
+   QDir topDir( mDir->name() );
+ 
+@@ -286,7 +286,7 @@ void CollectionDeleteTest::testLeaves()
+   QVERIFY( job->exec() );
+   QCOMPARE( job->error(), 0 );
+ 
+-  QVERIFY( !md1_2.isValid() );
++  QVERIFY( !md1_2.isValid( false ) );
+   QCOMPARE( md1.subFolderList(), QStringList() );
+ 
+   // test second level leaves in mbox parent
+@@ -305,7 +305,7 @@ void CollectionDeleteTest::testLeaves()
+   QVERIFY( job->exec() );
+   QCOMPARE( job->error(), 0 );
+ 
+-  QVERIFY( !md4_1.isValid() );
++  QVERIFY( !md4_1.isValid( false ) );
+   QCOMPARE( md4.subFolderList(), QStringList() );
+ 
+   Collection collection4_2;
+@@ -333,7 +333,7 @@ void CollectionDeleteTest::testLeaves()
+   QVERIFY( job->exec() );
+   QCOMPARE( job->error(), 0 );
+ 
+-  QVERIFY( !md2.isValid() );
++  QVERIFY( !md2.isValid( false ) );
+   QCOMPARE( topLevelMd.subFolderList(), QStringList() << QLatin1String( "collection1" ) );
+ 
+   Collection collection3;
+@@ -360,7 +360,7 @@ void CollectionDeleteTest::testLeaves()
+   QVERIFY( job->exec() );
+   QCOMPARE( job->error(), 0 );
+ 
+-  QVERIFY( !md1.isValid() );
++  QVERIFY( !md1.isValid( false ) );
+   subDirInfo1.refresh();
+   QVERIFY( !subDirInfo1.exists() );
+   QCOMPARE( topLevelMd.subFolderList(), QStringList() );
+@@ -380,7 +380,7 @@ void CollectionDeleteTest::testLeaves()
+ void CollectionDeleteTest::testSubTrees()
+ {
+   KPIM::Maildir topLevelMd( mDir->name(), true );
+-  QVERIFY( topLevelMd.isValid() );
++  QVERIFY( topLevelMd.isValid( false ) );
+ 
+   QDir topDir( mDir->name() );
+ 
+@@ -434,8 +434,8 @@ void CollectionDeleteTest::testSubTrees()
+   QVERIFY( job->exec() );
+   QCOMPARE( job->error(), 0 );
+ 
+-  QVERIFY( !md1.isValid() );
+-  QVERIFY( !md1_2.isValid() );
++  QVERIFY( !md1.isValid( false ) );
++  QVERIFY( !md1_2.isValid( false ) );
+   fileInfo1_1.refresh();
+   QVERIFY( !fileInfo1_1.exists() );
+ 
+@@ -452,7 +452,7 @@ void CollectionDeleteTest::testSubTrees()
+ 
+   fileInfo2.refresh();
+   QVERIFY( !fileInfo2.exists() );
+-  QVERIFY( !md2_1.isValid() );
++  QVERIFY( !md2_1.isValid( false ) );
+   fileInfo2_2.refresh();
+   QVERIFY( !fileInfo2_2.exists() );
+   QVERIFY( !subDirInfo2.exists() );
+diff --git a/resources/mixedmaildir/tests/collectionmodifytest.cpp b/resources/mixedmaildir/tests/collectionmodifytest.cpp
+index 31c0c3f..e2f1eef 100644
+--- a/resources/mixedmaildir/tests/collectionmodifytest.cpp
++++ b/resources/mixedmaildir/tests/collectionmodifytest.cpp
+@@ -80,7 +80,7 @@ void CollectionModifyTest::testRename()
+   QVERIFY( topDir.cd( QLatin1String( "topLevel" ) ) );
+ 
+   KPIM::Maildir topLevelMd( topDir.path(), true );
+-  QVERIFY( topLevelMd.isValid() );
++  QVERIFY( topLevelMd.isValid( false ) );
+ 
+   KPIM::Maildir md1( topLevelMd.addSubFolder( "collection1" ), false );
+   KPIM::Maildir md1_2( md1.addSubFolder( "collection1_2" ), false );
+@@ -157,10 +157,10 @@ void CollectionModifyTest::testRename()
+ 
+   // adjust local handles
+   topLevelMd = KPIM::Maildir( topDir.path(), true );
+-  QVERIFY( topLevelMd.isValid() );
++  QVERIFY( topLevelMd.isValid( false ) );
+ 
+   md1 = topLevelMd.subFolder( "collection1" );
+-  QVERIFY( md1.isValid() );
++  QVERIFY( md1.isValid( false ) );
+   md1_2 = md1.subFolder( "collection1_2" );
+ 
+   fileInfo1_1 = QFileInfo( KPIM::Maildir::subDirPathForFolderPath( md1.path() ),
+@@ -179,7 +179,7 @@ void CollectionModifyTest::testRename()
+   QVERIFY( subDirInfo4.exists() );
+ 
+   md4 = KPIM::Maildir( subDirInfo4.absoluteFilePath(), true );
+-  QVERIFY( md4.isValid() );
++  QVERIFY( md4.isValid( false ) );
+   md4_1 = md4.subFolder( "collection4_1" );
+ 
+   fileInfo4_2 = QFileInfo( subDirInfo4.absoluteFilePath(),
+@@ -202,16 +202,16 @@ void CollectionModifyTest::testRename()
+   QCOMPARE( collection.remoteId(), collection.name() );
+   QCOMPARE( collection, collection2 );
+   QCOMPARE( topLevelMd.subFolderList(), QStringList() << QLatin1String( "collection1" ) << QLatin1String( "collection2_renamed" ) );
+-  QVERIFY( !md2.isValid() );
++  QVERIFY( !md2.isValid( false ) );
+   md2 = topLevelMd.subFolder( collection.remoteId() );
+-  QVERIFY( md2.isValid() );
++  QVERIFY( md2.isValid( false ) );
+ 
+   // test failure of renaming again
+   job = mStore->modifyCollection( collection2 );
+   QVERIFY( !job->exec() );
+   QCOMPARE( job->error(), (int) FileStore::Job::InvalidJobContext );
+   QCOMPARE( topLevelMd.subFolderList(), QStringList() << QLatin1String( "collection1" ) << QLatin1String( "collection2_renamed" ) );
+-  QVERIFY( md2.isValid() );
++  QVERIFY( md2.isValid( false ) );
+ 
+   // test renaming of first level mbox leaf
+   Collection collection3;
+@@ -258,16 +258,16 @@ void CollectionModifyTest::testRename()
+   QCOMPARE( collection.remoteId(), collection.name() );
+   QCOMPARE( collection, collection4_1 );
+   QCOMPARE( md4.subFolderList(), QStringList() << QLatin1String( "collection4_1_renamed" ) );
+-  QVERIFY( !md4_1.isValid() );
++  QVERIFY( !md4_1.isValid( false ) );
+   md4_1 = md4.subFolder( collection.remoteId() );
+-  QVERIFY( md4_1.isValid() );
++  QVERIFY( md4_1.isValid( false ) );
+ 
+   // test failure of renaming again
+   job = mStore->modifyCollection( collection4_1 );
+   QVERIFY( !job->exec() );
+   QCOMPARE( job->error(), (int) FileStore::Job::InvalidJobContext );
+   QCOMPARE( md4.subFolderList(), QStringList() << QLatin1String( "collection4_1_renamed" ) );
+-  QVERIFY( md4_1.isValid() );
++  QVERIFY( md4_1.isValid( false ) );
+ 
+   // test renaming of second level mbox in mbox parent
+   Collection collection4_2;
+@@ -309,26 +309,26 @@ void CollectionModifyTest::testRename()
+   QCOMPARE( collection.remoteId(), collection.name() );
+   QCOMPARE( collection, collection1 );
+   QCOMPARE( topLevelMd.subFolderList(), QStringList() << QLatin1String( "collection1_renamed" ) << QLatin1String( "collection2_renamed" ) );
+-  QVERIFY( !md1.isValid() );
++  QVERIFY( !md1.isValid( false ) );
+   md1 = topLevelMd.subFolder( collection.remoteId() );
+-  QVERIFY( md1.isValid() );
++  QVERIFY( md1.isValid( false ) );
+   fileInfo1_1.refresh();
+   QVERIFY( !fileInfo1_1.exists() );
+-  QVERIFY( !md1_2.isValid() );
++  QVERIFY( !md1_2.isValid( false ) );
+   fileInfo1_1 = QFileInfo( KPIM::Maildir::subDirPathForFolderPath( md1.path() ),
+                            QLatin1String( "collection1_1" ) );
+   QVERIFY( fileInfo1_1.exists() );
+   md1_2 = md1.subFolder( QLatin1String( "collection1_2" ) );
+-  QVERIFY( md1_2.isValid() );
++  QVERIFY( md1_2.isValid( false ) );
+ 
+   // test failure of renaming again
+   job = mStore->modifyCollection( collection1 );
+   QVERIFY( !job->exec() );
+   QCOMPARE( job->error(), (int) FileStore::Job::InvalidJobContext );
+   QCOMPARE( topLevelMd.subFolderList(), QStringList() << QLatin1String( "collection1_renamed" ) << QLatin1String( "collection2_renamed" ) );
+-  QVERIFY( md2.isValid() );
++  QVERIFY( md2.isValid( false ) );
+   QVERIFY( fileInfo1_1.exists() );
+-  QVERIFY( md1_2.isValid() );
++  QVERIFY( md1_2.isValid( false ) );
+ 
+   // test renaming of mbox with subtree
+   collection4.setName( QLatin1String( "collection4_renamed" ) );
+@@ -344,13 +344,13 @@ void CollectionModifyTest::testRename()
+   fileInfo4 = QFileInfo( topDir.path(), collection.remoteId() );
+   QVERIFY( fileInfo4.exists() );
+   md4 = KPIM::Maildir( KPIM::Maildir::subDirPathForFolderPath( fileInfo4.absoluteFilePath() ), true );
+-  QVERIFY( md4.isValid() );
++  QVERIFY( md4.isValid( false ) );
+ 
+-  QVERIFY( !md4_1.isValid() );
++  QVERIFY( !md4_1.isValid( false ) );
+   fileInfo4_2.refresh();
+   QVERIFY( !fileInfo4_2.exists() );
+   md4_1 = md4.subFolder( QLatin1String( "collection4_1_renamed" ) );
+-  QVERIFY( md4_1.isValid() );
++  QVERIFY( md4_1.isValid( false ) );
+   fileInfo4_2 = QFileInfo( md4.path(), QLatin1String( "collection4_2_renamed" ) );
+   QVERIFY( fileInfo4_2.exists() );
+ 
+@@ -460,7 +460,7 @@ void CollectionModifyTest::testIndexPreservation()
+ void CollectionModifyTest::testIndexCacheUpdate()
+ {
+   KPIM::Maildir topLevelMd( mDir->name(), true );
+-  QVERIFY( topLevelMd.isValid() );
++  QVERIFY( topLevelMd.isValid( false ) );
+ 
+   KPIM::Maildir md1( topLevelMd.addSubFolder( "collection1" ), false );
+ 
+-- 
+1.8.1.4
+
diff --git a/0008-Don-t-crash-in-ResourceTask-separatorCharacter.patch b/0008-Don-t-crash-in-ResourceTask-separatorCharacter.patch
new file mode 100644
index 0000000..619d0e6
--- /dev/null
+++ b/0008-Don-t-crash-in-ResourceTask-separatorCharacter.patch
@@ -0,0 +1,29 @@
+From 277f4c279eec709fed9e33ad470e1920ea51139f Mon Sep 17 00:00:00 2001
+From: Christian Mollekopf <chrigi_1 at fastmail.fm>
+Date: Sun, 5 May 2013 19:54:31 +0200
+Subject: [PATCH 08/12] Don't crash in ResourceTask::separatorCharacter()
+
+Fixes imap-testchangecollectiontask.
+
+REVIEW: 110279
+---
+ resources/imap/resourcetask.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/resources/imap/resourcetask.cpp b/resources/imap/resourcetask.cpp
+index 5b516e2..90733da 100644
+--- a/resources/imap/resourcetask.cpp
++++ b/resources/imap/resourcetask.cpp
+@@ -379,7 +379,8 @@ const QChar ResourceTask::separatorCharacter() const
+   //If we create a toplevel folder, assume the separator to be '/'. This is not perfect, but detecting the right
+   //IMAP separator is not straightforward for toplevel folders, and fixes bug 292418 and maybe other, where
+   //subfolders end up with remote id's starting with "i" (the first letter of imap:// ...)
+-  const QChar separator = ( parentCollection().remoteId() != rootRemoteId() ) ? parentCollection().remoteId().at( 0 ) : '/';
++  const QString parentRemoteId = parentCollection().remoteId();
++  const QChar separator = ( ( parentRemoteId != rootRemoteId() ) && !parentRemoteId.isEmpty() ) ? parentRemoteId.at( 0 ) : '/';
+   return separator;
+ }
+ 
+-- 
+1.8.1.4
+
diff --git a/0011-Set-IMAP-Acl-s-to-None-if-there-is-no-value-instead-.patch b/0011-Set-IMAP-Acl-s-to-None-if-there-is-no-value-instead-.patch
new file mode 100644
index 0000000..5c01a3f
--- /dev/null
+++ b/0011-Set-IMAP-Acl-s-to-None-if-there-is-no-value-instead-.patch
@@ -0,0 +1,90 @@
+From 8251ee851cae7b2acba9e43411ede0c26dac49bb Mon Sep 17 00:00:00 2001
+From: Christian Mollekopf <chrigi_1 at fastmail.fm>
+Date: Mon, 6 May 2013 15:59:03 +0200
+Subject: [PATCH 11/12] Set IMAP Acl's to None if there is no value (instead of
+ something random), and test the deserialize result.
+
+To reduce the code duplication I also refactored the code slightly.
+
+REVIEW: 110274
+---
+ resources/shared/imapaclattribute.cpp           | 42 ++++++++++++-------------
+ resources/shared/tests/imapaclattributetest.cpp |  4 +++
+ 2 files changed, 24 insertions(+), 22 deletions(-)
+
+diff --git a/resources/shared/imapaclattribute.cpp b/resources/shared/imapaclattribute.cpp
+index ebd8f47..ad4fe2c 100644
+--- a/resources/shared/imapaclattribute.cpp
++++ b/resources/shared/imapaclattribute.cpp
+@@ -92,6 +92,24 @@ QByteArray ImapAclAttribute::serialized() const
+   return result;
+ }
+ 
++static void fillRightsMap( const QList<QByteArray> &rights, QMap <QByteArray, KIMAP::Acl::Rights> &map )
++{
++  foreach ( const QByteArray &right, rights ) {
++    const QByteArray trimmed = right.trimmed();
++    const int wsIndex = trimmed.indexOf( ' ' );
++    const QByteArray id = trimmed.mid( 0, wsIndex ).trimmed();
++    if ( !id.isEmpty() ) {
++      const bool noValue = ( wsIndex == -1 );
++      if ( noValue ) {
++        map[id] = KIMAP::Acl::None;
++      } else {
++        const QByteArray value = trimmed.mid( wsIndex + 1, right.length() - wsIndex ).trimmed();
++        map[id] = KIMAP::Acl::rightsFromString( value );
++      }
++    }
++  }
++}
++
+ void ImapAclAttribute::deserialize( const QByteArray &data )
+ {
+   mRights.clear();
+@@ -102,26 +120,6 @@ void ImapAclAttribute::deserialize( const QByteArray &data )
+ 
+   const QByteArray leftPart = data.left( pos );
+   const QByteArray rightPart = data.mid( pos + 4 );
+-  QList<QByteArray> rights = leftPart.split( '%' );
+-  QList<QByteArray> oldRights = rightPart.split( '%' );
+-
+-  foreach ( const QByteArray &right, rights ) {
+-    const QByteArray trimmed = right.trimmed();
+-    const int wsIndex = trimmed.indexOf( ' ' );
+-    const QByteArray id = trimmed.mid( 0, wsIndex ).trimmed();
+-    if ( !id.isEmpty() ) {
+-      const QByteArray value = trimmed.mid( wsIndex + 1, right.length() - wsIndex ).trimmed();
+-      mRights[id] = KIMAP::Acl::rightsFromString( value );
+-    }
+-  }
+-
+-  foreach ( const QByteArray &right, oldRights ) {
+-    const QByteArray trimmed = right.trimmed();
+-    const int wsIndex = trimmed.indexOf( ' ' );
+-    const QByteArray id = trimmed.mid( 0, wsIndex ).trimmed();
+-    if ( !id.isEmpty() ) {
+-      const QByteArray value = trimmed.mid( wsIndex + 1, right.length() - wsIndex ).trimmed();
+-      mOldRights[id] = KIMAP::Acl::rightsFromString( value );
+-    }
+-  }
++  fillRightsMap( leftPart.split( '%' ), mRights );
++  fillRightsMap( rightPart.split( '%' ), mOldRights );
+ }
+diff --git a/resources/shared/tests/imapaclattributetest.cpp b/resources/shared/tests/imapaclattributetest.cpp
+index 4f490d0..0ed3222 100644
+--- a/resources/shared/tests/imapaclattributetest.cpp
++++ b/resources/shared/tests/imapaclattributetest.cpp
+@@ -73,6 +73,10 @@ class ImapAclAttributeTest : public QObject
+       QCOMPARE( attr->serialized(), oldSerialized );
+ 
+       delete attr;
++
++      ImapAclAttribute deserializeAttr;
++      deserializeAttr.deserialize( serialized );
++      QCOMPARE( deserializeAttr.rights(), rights );
+     }
+ 
+     void testOldRights()
+-- 
+1.8.1.4
+
diff --git a/kdepim-runtime.spec b/kdepim-runtime.spec
index 4ba8525..16f2b04 100644
--- a/kdepim-runtime.spec
+++ b/kdepim-runtime.spec
@@ -5,7 +5,7 @@ Name:    kdepim-runtime
 Summary: KDE PIM Runtime Environment
 Epoch:   1
 Version: 4.10.3
-Release: 1%{?dist}
+Release: 2%{?dist}
 
 License: GPLv2
 URL: http://www.kde.org/
@@ -23,6 +23,10 @@ Patch0: kdepim-runtime-4.4.93-show_akonadi_kcm.patch
 ## upstreamable patches
 
 ## upstream patches
+Patch101: 0001-Don-t-waste-CPU-if-we-have-nepomuk-disabled-in-syste.patch
+Patch107: 0007-Adapt-to-Maildir-isValid-behavior-change-in-commit-f.patch
+Patch108: 0008-Don-t-crash-in-ResourceTask-separatorCharacter.patch
+Patch111: 0011-Set-IMAP-Acl-s-to-None-if-there-is-no-value-instead-.patch
 
 # nuke ill-advised -devel pkg
 Obsoletes: kdepim-runtime-devel < 1:4.7.90-3
@@ -75,6 +79,11 @@ Requires: akonadi%{?_isa} >= %{akonadi_version}
 
 %patch0 -p1 -b .show_akonadi_kcm
 
+%patch101 -p1 -b .0001
+%patch107 -p1 -b .0007
+%patch108 -p1 -b .0008
+%patch111 -p1 -b .0011
+
 
 %build
 mkdir -p %{_target_platform}
@@ -159,7 +168,10 @@ fi
 
 
 %changelog
-* Mon May 06 2013 Than Ngo <than at redhat.com> - 4.10.3-1
+* Fri May 10 2013 Rex Dieter <rdieter at fedoraproject.org> 1:4.10.3-2
+- pull in some upstream fixes, particularly: imap folder acls (kollab#1816)
+
+* Mon May 06 2013 Than Ngo <than at redhat.com> - 1:4.10.3-1
 - 4.10.3
 
 * Mon Apr 01 2013 Rex Dieter <rdieter at fedoraproject.org> - 1:4.10.2-1


More information about the scm-commits mailing list