* [gentoo-commits] proj/kde:master commit in: kde-apps/kdepimlibs/, kde-apps/kdepimlibs/files/
@ 2015-09-13 20:22 Michael Palimaka
0 siblings, 0 replies; 2+ messages in thread
From: Michael Palimaka @ 2015-09-13 20:22 UTC (permalink / raw
To: gentoo-commits
commit: bb093e3f89752911fd56abe94a75b125c5fa897f
Author: Andreas Sturmlechner <andreas.sturmlechner <AT> gmail <DOT> com>
AuthorDate: Sun Sep 13 14:50:26 2015 +0000
Commit: Michael Palimaka <kensington <AT> gentoo <DOT> org>
CommitDate: Sun Sep 13 20:21:54 2015 +0000
URL: https://gitweb.gentoo.org/proj/kde.git/commit/?id=bb093e3f
kde-apps/kdepimlibs: Backport GID merge fix for IMAP
Upstream fix is in >=15.08.2
See also: https://bugs.kde.org/show_bug.cgi?id=338658#c39
Package-Manager: portage-2.2.20.1
.../files/kdepimlibs-15.08.0-GID-merge.patch | 210 +++++++++++++++++++++
.../files/kdepimlibs-15.08.0-RID-fallback.patch | 31 +++
...15.08.0.ebuild => kdepimlibs-15.08.0-r1.ebuild} | 4 +
kde-apps/kdepimlibs/kdepimlibs-15.08.1.ebuild | 4 +
4 files changed, 249 insertions(+)
diff --git a/kde-apps/kdepimlibs/files/kdepimlibs-15.08.0-GID-merge.patch b/kde-apps/kdepimlibs/files/kdepimlibs-15.08.0-GID-merge.patch
new file mode 100644
index 0000000..c29aa9b
--- /dev/null
+++ b/kde-apps/kdepimlibs/files/kdepimlibs-15.08.0-GID-merge.patch
@@ -0,0 +1,210 @@
+From: Dan Vrátil <dvratil@redhat.com>
+Date: Mon, 07 Sep 2015 13:50:50 +0000
+Subject: ItemSync: use RID merge by default, allow optional switch to GID merge
+X-Git-Url: http://quickgit.kde.org/?p=kdepimlibs.git&a=commitdiff&h=43d5659a88a6ebb3423c6228986f0bd1e1f496f7
+---
+ItemSync: use RID merge by default, allow optional switch to GID merge
+
+GID is not guaranteed to be actually unique and is not in our control, which means
+that we can easilly run to the multiple merge candidates problem, which breaks
+ItemSync. This patch switching ItemSync to use RID, which (although not enforced) is
+basically guaranteed to be unique per Collection, thus the multiple merge candidates
+error should not happen anymore.
+
+Some resources however mandate GID-based merging (when RID is not stable), so we have
+a new API that allows resources to switch the merging mode of ItemSync optionally.
+
+(cherry picked from commit 442961918d8f3d9ff94fd4593c9b09d1e89d6bc0)
+---
+
+
+--- a/akonadi/autotests/itemsynctest.cpp
++++ b/akonadi/autotests/itemsynctest.cpp
+@@ -451,14 +451,18 @@
+ AKVERIFYEXEC(syncer);
+
+ Item::List resultItems = fetchItems(col);
+- QCOMPARE(resultItems.count(), 2);
+-
+- ItemFetchJob *fetchJob = new ItemFetchJob(modifiedItem);
++ QCOMPARE(resultItems.count(), 3);
++
++ Item item;
++ item.setGid(QStringLiteral("gid2"));
++ ItemFetchJob *fetchJob = new ItemFetchJob(item);
+ fetchJob->fetchScope().fetchFullPayload();
+ AKVERIFYEXEC(fetchJob);
+- QCOMPARE(fetchJob->items().size(), 1);
++ QCOMPARE(fetchJob->items().size(), 2);
+ QCOMPARE(fetchJob->items().first().payload<QByteArray>(), QByteArray("payload2"));
+ QCOMPARE(fetchJob->items().first().remoteId(), QString::fromLatin1("rid3"));
++ QCOMPARE(fetchJob->items().at(1).payload<QByteArray>(), QByteArray("payload1"));
++ QCOMPARE(fetchJob->items().at(1).remoteId(), QStringLiteral("rid2"));
+ }
+
+ /*
+
+--- a/akonadi/src/agentbase/resourcebase.cpp
++++ b/akonadi/src/agentbase/resourcebase.cpp
+@@ -76,6 +76,7 @@
+ , mItemSyncer(0)
+ , mItemSyncFetchScope(0)
+ , mItemTransactionMode(ItemSync::SingleTransaction)
++ , mItemMergeMode(ItemSync::RIDMerge)
+ , mCollectionSyncer(0)
+ , mTagSyncer(0)
+ , mRelationSyncer(0)
+@@ -189,6 +190,7 @@
+ mItemSyncer = new ItemSync(q->currentCollection());
+ mItemSyncer->setTransactionMode(mItemTransactionMode);
+ mItemSyncer->setBatchSize(mItemSyncBatchSize);
++ mItemSyncer->setMergeMode(mItemMergeMode);
+ if (mItemSyncFetchScope) {
+ mItemSyncer->setFetchScope(*mItemSyncFetchScope);
+ }
+@@ -456,6 +458,7 @@
+ ItemSync *mItemSyncer;
+ ItemFetchScope *mItemSyncFetchScope;
+ ItemSync::TransactionMode mItemTransactionMode;
++ ItemSync::MergeMode mItemMergeMode;
+ CollectionSync *mCollectionSyncer;
+ TagSync *mTagSyncer;
+ RelationSync *mRelationSyncer;
+@@ -1379,6 +1382,12 @@
+ *(d->mItemSyncFetchScope) = fetchScope;
+ }
+
++void ResourceBase::setItemMergingMode(ItemSync::MergeMode mode)
++{
++ Q_D(ResourceBase);
++ d->mItemMergeMode = mode;
++}
++
+ void ResourceBase::setAutomaticProgressReporting(bool enabled)
+ {
+ Q_D(ResourceBase);
+
+--- a/akonadi/src/agentbase/resourcebase.h
++++ b/akonadi/src/agentbase/resourcebase.h
+@@ -545,6 +545,20 @@
+ * @since 4.6
+ */
+ void setItemTransactionMode(ItemSync::TransactionMode mode);
++
++ /**
++ * Set merge mode for item sync'ing.
++ *
++ * Default merge mode is RIDMerge.
++ *
++ * @note This method must be called before first call to itemRetrieved(),
++ * itemsRetrieved() or itemsRetrievedIncremental().
++ *
++ * @param mode Item merging mode (see ItemCreateJob for details on item merging)
++ * @see Akonadi::ItemSync::MergeMode
++ * @ince 4.14.11
++ */
++ void setItemMergingMode(ItemSync::MergeMode mode);
+
+ /**
+ * Set the fetch scope applied for item synchronization.
+
+--- a/akonadi/src/core/itemsync.cpp
++++ b/akonadi/src/core/itemsync.cpp
+@@ -61,6 +61,7 @@
+ , mProcessingBatch(false)
+ , mDisableAutomaticDeliveryDone(false)
+ , mBatchSize(10)
++ , mMergeMode(Akonadi::ItemSync::RIDMerge)
+ {
+ // we want to fetch all data by default
+ mFetchScope.fetchFullPayload();
+@@ -116,6 +117,7 @@
+ bool mDisableAutomaticDeliveryDone;
+
+ int mBatchSize;
++ Akonadi::ItemSync::MergeMode mMergeMode;
+ };
+
+ void ItemSyncPrivate::createOrMerge(const Item &item)
+@@ -127,11 +129,13 @@
+ }
+ mPendingJobs++;
+ ItemCreateJob *create = new ItemCreateJob(item, mSyncCollection, subjobParent());
+- if (!item.gid().isEmpty()) {
+- create->setMerge(ItemCreateJob::GID | ItemCreateJob::Silent);
+- } else {
+- create->setMerge(ItemCreateJob::RID | ItemCreateJob::Silent);
+- }
++ ItemCreateJob::MergeOptions merge = ItemCreateJob::Silent;
++ if (mMergeMode == ItemSync::RIDMerge) {
++ merge |= ItemCreateJob::RID;
++ } else if (mMergeMode == ItemSync::GIDMerge && !item.gid().isEmpty()) {
++ merge |= ItemCreateJob::GID;
++ }
++ create->setMerge(merge);
+ q->connect(create, SIGNAL(result(KJob*)), q, SLOT(slotLocalChangeDone(KJob*)));
+ }
+
+@@ -535,5 +539,17 @@
+ d->mBatchSize = size;
+ }
+
++ItemSync::MergeMode ItemSync::mergeMode() const
++{
++ Q_D(const ItemSync);
++ return d->mMergeMode;
++}
++
++void ItemSync::setMergeMode(MergeMode mergeMode)
++{
++ Q_D(ItemSync);
++ d->mMergeMode = mergeMode;
++}
++
+ #include "moc_itemsync.cpp"
+
+
+--- a/akonadi/src/core/itemsync.h
++++ b/akonadi/src/core/itemsync.h
+@@ -56,6 +56,12 @@
+ Q_OBJECT
+
+ public:
++ enum MergeMode
++ {
++ RIDMerge,
++ GIDMerge
++ };
++
+ /**
+ * Creates a new item synchronizer.
+ *
+@@ -208,6 +214,27 @@
+ * @since 4.14
+ */
+ void setDisableAutomaticDeliveryDone(bool disable);
++
++ /**
++ * Returns current merge mode
++ *
++ * @see setMergeMode()
++ * @since 5.1
++ */
++ MergeMode mergeMode() const;
++
++ /**
++ * Set what merge method should be used for next ItemSync run
++ *
++ * By default ItemSync uses RIDMerge method.
++ *
++ * See ItemCreateJob for details on Item merging.
++ *
++ * @note You must call this method before starting the sync, changes afterwards lead to undefined results.
++ * @see mergeMode
++ * @since 4.14.11
++ */
++ void setMergeMode(MergeMode mergeMode);
+
+ Q_SIGNALS:
+ /**
+
diff --git a/kde-apps/kdepimlibs/files/kdepimlibs-15.08.0-RID-fallback.patch b/kde-apps/kdepimlibs/files/kdepimlibs-15.08.0-RID-fallback.patch
new file mode 100644
index 0000000..6d4e807
--- /dev/null
+++ b/kde-apps/kdepimlibs/files/kdepimlibs-15.08.0-RID-fallback.patch
@@ -0,0 +1,31 @@
+From: Dan Vrátil <dvratil@redhat.com>
+Date: Sun, 13 Sep 2015 13:05:08 +0000
+Subject: Fix ItemSync merge type fallback
+X-Git-Url: http://quickgit.kde.org/?p=kdepimlibs.git&a=commitdiff&h=ffa20e75f388bfa87530e113641f0830a5a58ec4
+---
+Fix ItemSync merge type fallback
+
+Always fallback to RID merge, even when GID merge is requsted, but no GID
+is present.
+
+(cherry picked from commit d8b5da7bb16bfd3652e83200d851af3a21816469)
+---
+
+
+--- a/akonadi/src/core/itemsync.cpp
++++ b/akonadi/src/core/itemsync.cpp
+@@ -130,10 +130,10 @@
+ mPendingJobs++;
+ ItemCreateJob *create = new ItemCreateJob(item, mSyncCollection, subjobParent());
+ ItemCreateJob::MergeOptions merge = ItemCreateJob::Silent;
+- if (mMergeMode == ItemSync::RIDMerge) {
++ if (mMergeMode == ItemSync::GIDMerge && !item.gid().isEmpty()) {
++ merge |= ItemCreateJob::GID;
++ } else {
+ merge |= ItemCreateJob::RID;
+- } else if (mMergeMode == ItemSync::GIDMerge && !item.gid().isEmpty()) {
+- merge |= ItemCreateJob::GID;
+ }
+ create->setMerge(merge);
+ q->connect(create, SIGNAL(result(KJob*)), q, SLOT(slotLocalChangeDone(KJob*)));
+
diff --git a/kde-apps/kdepimlibs/kdepimlibs-15.08.0.ebuild b/kde-apps/kdepimlibs/kdepimlibs-15.08.0-r1.ebuild
similarity index 95%
rename from kde-apps/kdepimlibs/kdepimlibs-15.08.0.ebuild
rename to kde-apps/kdepimlibs/kdepimlibs-15.08.0-r1.ebuild
index 65e42ce..b2f7d46 100644
--- a/kde-apps/kdepimlibs/kdepimlibs-15.08.0.ebuild
+++ b/kde-apps/kdepimlibs/kdepimlibs-15.08.0-r1.ebuild
@@ -65,6 +65,10 @@ RDEPEND="${COMMON_DEPEND}
"
src_prepare() {
+
+ epatch "${FILESDIR}/${PN}-15.08.0-GID-merge.patch" \
+ "${FILESDIR}/${PN}-15.08.0-RID-fallback.patch"
+
use handbook || \
sed -e '/^find_package.*KF5DocTools/ s/^/#/' \
-e '/^add_subdirectory(docs)/ s/^/#/' \
diff --git a/kde-apps/kdepimlibs/kdepimlibs-15.08.1.ebuild b/kde-apps/kdepimlibs/kdepimlibs-15.08.1.ebuild
index 65e42ce..b2f7d46 100644
--- a/kde-apps/kdepimlibs/kdepimlibs-15.08.1.ebuild
+++ b/kde-apps/kdepimlibs/kdepimlibs-15.08.1.ebuild
@@ -65,6 +65,10 @@ RDEPEND="${COMMON_DEPEND}
"
src_prepare() {
+
+ epatch "${FILESDIR}/${PN}-15.08.0-GID-merge.patch" \
+ "${FILESDIR}/${PN}-15.08.0-RID-fallback.patch"
+
use handbook || \
sed -e '/^find_package.*KF5DocTools/ s/^/#/' \
-e '/^add_subdirectory(docs)/ s/^/#/' \
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [gentoo-commits] proj/kde:master commit in: kde-apps/kdepimlibs/, kde-apps/kdepimlibs/files/
@ 2016-04-04 17:41 Johannes Huber
0 siblings, 0 replies; 2+ messages in thread
From: Johannes Huber @ 2016-04-04 17:41 UTC (permalink / raw
To: gentoo-commits
commit: b4a5bcfc37c8cb2c12ac327f0cec1e168566cc93
Author: Matthew Brewer <tomboy64 <AT> sina <DOT> cn>
AuthorDate: Mon Apr 4 10:53:17 2016 +0000
Commit: Johannes Huber <johu <AT> gentoo <DOT> org>
CommitDate: Mon Apr 4 17:40:52 2016 +0000
URL: https://gitweb.gentoo.org/proj/kde.git/commit/?id=b4a5bcfc
kde-apps/kdepimlibs: Fix patch for EAPI 6
Package-Manager: portage-2.2.28
RepoMan-Options: --ignore-arches
...9.1-boostincludes.patch => kdepimlibs-4.14.11-boostincludes.patch} | 4 ++--
kde-apps/kdepimlibs/kdepimlibs-4.14.11_pre20160211.ebuild | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/kde-apps/kdepimlibs/files/kdepimlibs-4.9.1-boostincludes.patch b/kde-apps/kdepimlibs/files/kdepimlibs-4.14.11-boostincludes.patch
similarity index 85%
rename from kde-apps/kdepimlibs/files/kdepimlibs-4.9.1-boostincludes.patch
rename to kde-apps/kdepimlibs/files/kdepimlibs-4.14.11-boostincludes.patch
index 2df44a7..1b5cdcb 100644
--- a/kde-apps/kdepimlibs/files/kdepimlibs-4.9.1-boostincludes.patch
+++ b/kde-apps/kdepimlibs/files/kdepimlibs-4.14.11-boostincludes.patch
@@ -2,8 +2,8 @@ Make sure that the Boost headers are actually found, since they are
referenced in the kdepimlibs headers.
Patch by Alex Turbov, see https://bugs.kde.org/show_bug.cgi?id=306323
---- KdepimLibsConfig.cmake.in.org 2012-08-13 12:46:24.000000000 +0400
-+++ KdepimLibsConfig.cmake.in 2012-09-06 08:53:53.000000000 +0400
+--- a/KdepimLibsConfig.cmake.in.org 2012-08-13 12:46:24.000000000 +0400
++++ b/KdepimLibsConfig.cmake.in 2012-09-06 08:53:53.000000000 +0400
@@ -15,7 +15,7 @@
set(KDEPIMLIBS_DBUS_INTERFACES_DIR "@KDEPIMLIBS_DBUS_INTERFACES_DIR@")
set(KDEPIMLIBS_DBUS_SERVICES_DIR "@KDEPIMLIBS_DBUS_SERVICES_DIR@")
diff --git a/kde-apps/kdepimlibs/kdepimlibs-4.14.11_pre20160211.ebuild b/kde-apps/kdepimlibs/kdepimlibs-4.14.11_pre20160211.ebuild
index 923628e..2ee9fac 100644
--- a/kde-apps/kdepimlibs/kdepimlibs-4.14.11_pre20160211.ebuild
+++ b/kde-apps/kdepimlibs/kdepimlibs-4.14.11_pre20160211.ebuild
@@ -41,7 +41,7 @@ RDEPEND="${DEPEND}
!kde-misc/akonadi-social-utils
"
-PATCHES=( "${FILESDIR}/${PN}-4.9.1-boostincludes.patch" )
+PATCHES=( "${FILESDIR}/${PN}-4.14.11-boostincludes.patch" )
src_configure() {
local mycmakeargs=(
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-04-04 17:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-13 20:22 [gentoo-commits] proj/kde:master commit in: kde-apps/kdepimlibs/, kde-apps/kdepimlibs/files/ Michael Palimaka
-- strict thread matches above, loose matches on Subject: below --
2016-04-04 17:41 Johannes Huber
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox