Compare commits
45 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f93f842792 | ||
|
|
04d7652051 | ||
|
|
d5433cf6e8 | ||
|
|
b94e5a0e93 | ||
|
|
547cef98b9 | ||
|
|
2bcdc9e18b | ||
|
|
aefd5236d8 | ||
|
|
8e0da1155d | ||
|
|
3e10cdbabe | ||
|
|
bad5a7962c | ||
|
|
24bd5578bf | ||
|
|
e513ef09a9 | ||
|
|
1c611726ac | ||
|
|
1d79ef60cf | ||
|
|
e0c683030d | ||
|
|
b53992e7f4 | ||
|
|
71184c15cb | ||
|
|
d4cb712128 | ||
|
|
5a7644bcb2 | ||
|
|
5f516d08a4 | ||
|
|
e63e99f1ef | ||
|
|
442c71f0ec | ||
|
|
c183a6e345 | ||
|
|
070820a23d | ||
|
|
e0386f5e78 | ||
|
|
99916b63be | ||
|
|
80b6168b8d | ||
|
|
b8f85d80a1 | ||
|
|
13aaf3464f | ||
|
|
cba6ce5ec1 | ||
|
|
2981736d02 | ||
|
|
80bf6d98ef | ||
|
|
04ca9f646e | ||
|
|
21ec943481 | ||
|
|
b97ca23711 | ||
|
|
7e082edf72 | ||
|
|
36b47e46be | ||
|
|
258eaca3ec | ||
|
|
8b4426d5d3 | ||
|
|
6505b31d44 | ||
|
|
eb7406d932 | ||
|
|
62a3cba7d7 | ||
|
|
8942b654a7 | ||
|
|
bc3af2d35c | ||
|
|
3845bc69ad |
6 changed files with 452 additions and 142 deletions
52
0031-Less-C-11-fixes-build-with-clang.patch
Normal file
52
0031-Less-C-11-fixes-build-with-clang.patch
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
From c23607679fa1451f0c6890bd4a5656c07d519853 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Dan=20Vr=C3=A1til?= <dvratil@redhat.com>
|
||||
Date: Fri, 6 Feb 2015 13:33:50 +0100
|
||||
Subject: [PATCH 31/34] Less C++11, fixes build with clang
|
||||
|
||||
---
|
||||
server/tests/unittest/searchtest.cpp | 28 ++++++++++++++--------------
|
||||
1 file changed, 14 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/server/tests/unittest/searchtest.cpp b/server/tests/unittest/searchtest.cpp
|
||||
index f523b09..969d296 100644
|
||||
--- a/server/tests/unittest/searchtest.cpp
|
||||
+++ b/server/tests/unittest/searchtest.cpp
|
||||
@@ -119,21 +119,21 @@ private Q_SLOTS:
|
||||
QTest::addColumn<QStringList>("mimetypes");
|
||||
QTest::addColumn<QVector<qint64>>("expectedResults");
|
||||
|
||||
- QTest::newRow("") << QVector<qint64>({ 0 })
|
||||
- << QStringList({ QLatin1String("text/plain") })
|
||||
- << QVector<qint64>({ col4.id(), col5.id(), col7.id() });
|
||||
- QTest::newRow("") << QVector<qint64>({ 0 })
|
||||
- << QStringList({ QLatin1String("application/octet-stream") })
|
||||
- << QVector<qint64>({ col2.id(), col3.id(), col6.id(), col8.id() });
|
||||
- QTest::newRow("") << QVector<qint64>({ col1.id() })
|
||||
- << QStringList({ QLatin1String("text/plain") })
|
||||
- << QVector<qint64>({ col4.id() });
|
||||
- QTest::newRow("") << QVector<qint64>({ col1.id() })
|
||||
- << QStringList({ QLatin1String("unique/mime-type") })
|
||||
+ QTest::newRow("") << (QVector<qint64>() << 0)
|
||||
+ << (QStringList() << QLatin1String("text/plain"))
|
||||
+ << (QVector<qint64>() << col4.id() << col5.id() << col7.id());
|
||||
+ QTest::newRow("") << (QVector<qint64>() << 0)
|
||||
+ << (QStringList() << QLatin1String("application/octet-stream"))
|
||||
+ << (QVector<qint64>() << col2.id() << col3.id() << col6.id() << col8.id());
|
||||
+ QTest::newRow("") << (QVector<qint64>() << col1.id())
|
||||
+ << (QStringList() << QLatin1String("text/plain"))
|
||||
+ << (QVector<qint64>() << col4.id());
|
||||
+ QTest::newRow("") << (QVector<qint64>() << col1.id())
|
||||
+ << (QStringList() << QLatin1String("unique/mime-type"))
|
||||
<< QVector<qint64>();
|
||||
- QTest::newRow("") << QVector<qint64>({ col2.id(), col7.id() })
|
||||
- << QStringList({ QLatin1String("application/octet-stream") })
|
||||
- << QVector<qint64>({ col3.id(), col8.id() });
|
||||
+ QTest::newRow("") << (QVector<qint64>() << col2.id() << col7.id())
|
||||
+ << (QStringList() << QLatin1String("application/octet-stream"))
|
||||
+ << (QVector<qint64>() << col3.id() << col8.id());
|
||||
}
|
||||
|
||||
void testSearchHelperCollectionListing()
|
||||
--
|
||||
2.4.3
|
||||
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
From abe71f46c3b2e657db25ac16c43a4c76b2212a9f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Dan=20Vr=C3=A1til?= <dvratil@redhat.com>
|
||||
Date: Wed, 17 Jun 2015 13:04:13 +0200
|
||||
Subject: [PATCH 32/34] Don't throw exception when MOVE handler finds no items
|
||||
to move
|
||||
|
||||
Instead return "OK MOVE complete" right away. The reason for this is that
|
||||
when client tries to move an Item from a folder into the same folder (it's
|
||||
possible in KMail, also mailfilter agent might trigger this situation) the
|
||||
subsequent command gets eaten by ImapStreamParser and the client's Job gets
|
||||
stuck waiting for response forever. According to Laurent this could also fix
|
||||
the Mail Filter Agent getting stuck occasionally.
|
||||
|
||||
The problem is in ImapStreamParser::atCommandEnd() method, which is called
|
||||
by the Move handler at some point. atCommandEnd() checks whether we reached
|
||||
command end in the stream by looking if the next characters in the stream
|
||||
are "\r\n" and if so it will consume the command end ("\r\n"), effectively
|
||||
moving the streaming position BEYOND the command. In case of MOVE the
|
||||
command has already been completely parsed so we are actually at the end of
|
||||
the command and so ImapStreamParser will consume the "\r\n" and position the
|
||||
stream beyond the command end.
|
||||
|
||||
After that the Move handler tries to get the items from DB and throws the
|
||||
exception (the second part of the condition in the SQL query causes that
|
||||
the query yields no results in this situation) which gets us back to
|
||||
Connection where we then call ImapStreamParser::skipCommand(). At this point
|
||||
however there are no more data in the stream (because atCommandEnd() moved
|
||||
us beyond the end of the MOVE command) and so ImapStreamParser will block
|
||||
and wait for more data (with 30 seconds timeout). If client sends another
|
||||
command within this time the ImapStreamParser will think that this is the
|
||||
command to be skipped and will consume it. This means that the command never
|
||||
really reaches the Connection as it's consumed as soon as it's captured by
|
||||
ImapStreamParser. And because Akonadi never receives the command it cannot
|
||||
send a response and thus the Job in client will wait forever and ever...
|
||||
|
||||
Proper fix would be to make ImapStreamParser::atCommandEnd() to only peek
|
||||
instead of actually altering the position in the stream however I'm really
|
||||
afraid that it could break some other stuff that relies on this (broken?)
|
||||
behaviour and our test coverage is not sufficient at this point to be
|
||||
reliable enough.
|
||||
---
|
||||
server/src/handler/move.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/server/src/handler/move.cpp b/server/src/handler/move.cpp
|
||||
index 0a6c3bf..4cf9d4e 100644
|
||||
--- a/server/src/handler/move.cpp
|
||||
+++ b/server/src/handler/move.cpp
|
||||
@@ -85,7 +85,7 @@ bool Move::parseStream()
|
||||
if ( qb.exec() ) {
|
||||
const QVector<PimItem> items = qb.result();
|
||||
if ( items.isEmpty() ) {
|
||||
- throw HandlerException( "No items found" );
|
||||
+ return successResponse( "MOVE complete" );
|
||||
}
|
||||
|
||||
// Split the list by source collection
|
||||
--
|
||||
2.4.3
|
||||
|
||||
140
0033-Don-t-leak-old-external-payload-files.patch
Normal file
140
0033-Don-t-leak-old-external-payload-files.patch
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
From 9c0dc6b3f0826d32eac310b2e7ecd858ca3df681 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Dan=20Vr=C3=A1til?= <dvratil@redhat.com>
|
||||
Date: Mon, 29 Jun 2015 22:45:11 +0200
|
||||
Subject: [PATCH 33/34] Don't leak old external payload files
|
||||
|
||||
Actually delete old payload files after we increase the payload revision or
|
||||
switch from external to internal payload. This caused ~/.local/share/akonadi/file_db_data
|
||||
to grow insanely for all users, leaving them with many duplicated files (just with
|
||||
different revisions).
|
||||
|
||||
It is recommended that users run akonadictl fsck to clean up the leaked payload
|
||||
files.
|
||||
|
||||
Note that there won't be any more releases of Akonadi 1.13 (and this has been
|
||||
fixed in master already), so I strongly recommend distributions to pick this
|
||||
patch into their packaging.
|
||||
|
||||
BUG: 341884
|
||||
CCBUG: 338402
|
||||
---
|
||||
server/src/storage/partstreamer.cpp | 14 ++++++++++++++
|
||||
server/tests/unittest/partstreamertest.cpp | 24 +++++++++++++-----------
|
||||
2 files changed, 27 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/server/src/storage/partstreamer.cpp b/server/src/storage/partstreamer.cpp
|
||||
index 2ec41fa..71bdca8 100644
|
||||
--- a/server/src/storage/partstreamer.cpp
|
||||
+++ b/server/src/storage/partstreamer.cpp
|
||||
@@ -290,6 +290,12 @@ bool PartStreamer::stream(const QByteArray &command, bool checkExists,
|
||||
mDataChanged = true;
|
||||
}
|
||||
|
||||
+ // If the part is external, remember it's current file name
|
||||
+ QString originalFile;
|
||||
+ if (part.isValid() && part.external()) {
|
||||
+ originalFile = PartHelper::resolveAbsolutePath(part.data());
|
||||
+ }
|
||||
+
|
||||
part.setPartType(partType);
|
||||
part.setVersion(partVersion);
|
||||
part.setPimItemId(mItem.id());
|
||||
@@ -306,6 +312,14 @@ bool PartStreamer::stream(const QByteArray &command, bool checkExists,
|
||||
*changed = mDataChanged;
|
||||
}
|
||||
|
||||
+ if (!originalFile.isEmpty()) {
|
||||
+ // If the part was external but is not anymore, or if it's still external
|
||||
+ // but the filename has changed (revision update), remove the original file
|
||||
+ if (!part.external() || (part.external() && originalFile != PartHelper::resolveAbsolutePath(part.data()))) {
|
||||
+ PartHelper::removeFile(originalFile);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return ok;
|
||||
}
|
||||
|
||||
diff --git a/server/tests/unittest/partstreamertest.cpp b/server/tests/unittest/partstreamertest.cpp
|
||||
index 05e3a8a..669bbbc 100644
|
||||
--- a/server/tests/unittest/partstreamertest.cpp
|
||||
+++ b/server/tests/unittest/partstreamertest.cpp
|
||||
@@ -91,6 +91,7 @@ private Q_SLOTS:
|
||||
QTest::addColumn<qint64>("expectedPartSize");
|
||||
QTest::addColumn<bool>("expectedChanged");
|
||||
QTest::addColumn<bool>("isExternal");
|
||||
+ QTest::addColumn<int>("version");
|
||||
QTest::addColumn<PimItem>("pimItem");
|
||||
|
||||
PimItem item;
|
||||
@@ -101,22 +102,22 @@ private Q_SLOTS:
|
||||
QVERIFY(item.insert());
|
||||
|
||||
// Order of these tests matters!
|
||||
- QTest::newRow("item 1, internal") << QByteArray("PLD:DATA") << QByteArray("123") << 3ll << true << false << item;
|
||||
- QTest::newRow("item 1, change to external") << QByteArray("PLD:DATA") << QByteArray("123456789") << 9ll << true << true << item;
|
||||
- QTest::newRow("item 1, update external") << QByteArray("PLD:DATA") << QByteArray("987654321") << 9ll << true << true << item;
|
||||
- QTest::newRow("item 1, external, no change") << QByteArray("PLD:DATA") << QByteArray("987654321") << 9ll << false << true << item;
|
||||
- QTest::newRow("item 1, change to internal") << QByteArray("PLD:DATA") << QByteArray("1234") << 4ll << true << false << item;
|
||||
- QTest::newRow("item 1, internal, no change") << QByteArray("PLD:DATA") << QByteArray("1234") << 4ll << false << false << item;
|
||||
+ QTest::newRow("item 1, internal") << QByteArray("PLD:DATA") << QByteArray("123") << 3ll << true << false << -1 << item;
|
||||
+ QTest::newRow("item 1, change to external") << QByteArray("PLD:DATA") << QByteArray("123456789") << 9ll << true << true << 0 << item;
|
||||
+ QTest::newRow("item 1, update external") << QByteArray("PLD:DATA") << QByteArray("987654321") << 9ll << true << true << 1 << item;
|
||||
+ QTest::newRow("item 1, external, no change") << QByteArray("PLD:DATA") << QByteArray("987654321") << 9ll << false << true << 2 << item;
|
||||
+ QTest::newRow("item 1, change to internal") << QByteArray("PLD:DATA") << QByteArray("1234") << 4ll << true << false << 2 << item;
|
||||
+ QTest::newRow("item 1, internal, no change") << QByteArray("PLD:DATA") << QByteArray("1234") << 4ll << false << false << 2 << item;
|
||||
}
|
||||
|
||||
void testStreamer()
|
||||
{
|
||||
- return;
|
||||
QFETCH(QByteArray, expectedPartName);
|
||||
QFETCH(QByteArray, expectedData);
|
||||
QFETCH(qint64, expectedPartSize);
|
||||
QFETCH(bool, expectedChanged);
|
||||
QFETCH(bool, isExternal);
|
||||
+ QFETCH(int, version);
|
||||
QFETCH(PimItem, pimItem);
|
||||
|
||||
FakeConnection connection;
|
||||
@@ -160,17 +161,18 @@ private Q_SLOTS:
|
||||
|
||||
PimItem item = PimItem::retrieveById(pimItem.id());
|
||||
const QVector<Part> parts = item.parts();
|
||||
- QVERIFY(parts.count() == 1);
|
||||
+ QCOMPARE(parts.count(), 1);
|
||||
const Part part = parts[0];
|
||||
QCOMPARE(part.datasize(), expectedPartSize);
|
||||
QCOMPARE(part.external(), isExternal);
|
||||
+ qDebug() << part.version() << part.data();
|
||||
const QByteArray data = part.data();
|
||||
if (isExternal) {
|
||||
QVERIFY(streamerSpy.count() == 1);
|
||||
QVERIFY(streamerSpy.first().count() == 1);
|
||||
const Response response = streamerSpy.first().first().value<Akonadi::Server::Response>();
|
||||
const QByteArray str = response.asString();
|
||||
- const QByteArray expectedResponse = "+ STREAM [FILE " + QByteArray::number(part.id()) + "_r" + QByteArray::number(part.version()) + "]";
|
||||
+ const QByteArray expectedResponse = "+ STREAM [FILE " + QByteArray::number(part.id()) + "_r" + QByteArray::number(version) + "]";
|
||||
QCOMPARE(QString::fromUtf8(str), QString::fromUtf8(expectedResponse));
|
||||
|
||||
QFile file(PartHelper::resolveAbsolutePath(data));
|
||||
@@ -182,7 +184,7 @@ private Q_SLOTS:
|
||||
QCOMPARE(fileData, expectedData);
|
||||
|
||||
// Make sure no previous versions are left behind in file_db_data
|
||||
- for (int i = 0; i < part.version(); ++i) {
|
||||
+ for (int i = 0; i < version; ++i) {
|
||||
const QByteArray fileName = QByteArray::number(part.id()) + "_r" + QByteArray::number(part.version());
|
||||
const QString filePath = PartHelper::resolveAbsolutePath(fileName);
|
||||
QVERIFY(!QFile::exists(filePath));
|
||||
@@ -194,7 +196,7 @@ private Q_SLOTS:
|
||||
QCOMPARE(data, expectedData);
|
||||
|
||||
// Make sure nothing is left behind in file_db_data
|
||||
- for (int i = 0; i <= part.version(); ++i) {
|
||||
+ for (int i = 0; i <= version; ++i) {
|
||||
const QByteArray fileName = QByteArray::number(part.id()) + "_r" + QByteArray::number(part.version());
|
||||
const QString filePath = PartHelper::resolveAbsolutePath(fileName);
|
||||
QVERIFY(!QFile::exists(filePath));
|
||||
--
|
||||
2.4.3
|
||||
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
From 18ed37d89b8185ac15a8bfe245de8a88d17f2c64 Mon Sep 17 00:00:00 2001
|
||||
From: David Faure <faure@kde.org>
|
||||
Date: Tue, 28 Jul 2015 12:47:44 +0200
|
||||
Subject: [PATCH 34/34] set cmake_min_req to match kdelibs4 and enable newer
|
||||
policies
|
||||
|
||||
---
|
||||
CMakeLists.txt | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 2d790c9..a64e724 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -1,6 +1,6 @@
|
||||
+cmake_minimum_required(VERSION 2.8.9)
|
||||
project(Akonadi)
|
||||
|
||||
-cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
|
||||
|
||||
# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
|
||||
set(CMAKE_MODULE_PATH "${Akonadi_SOURCE_DIR}/cmake/modules")
|
||||
--
|
||||
2.4.3
|
||||
|
||||
33
akonadi-1.13.0-libs_only.patch
Normal file
33
akonadi-1.13.0-libs_only.patch
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
diff -up akonadi-1.13.0/CMakeLists.txt.opt akonadi-1.13.0/CMakeLists.txt
|
||||
--- akonadi-1.13.0/CMakeLists.txt.opt 2015-12-11 07:44:57.653216984 -0600
|
||||
+++ akonadi-1.13.0/CMakeLists.txt 2015-12-11 07:52:14.749205933 -0600
|
||||
@@ -339,22 +339,22 @@ endif()
|
||||
|
||||
include_directories(${Akonadi_SOURCE_DIR} ${Akonadi_BINARY_DIR} ${QT_INCLUDES} ${Boost_INCLUDE_DIR})
|
||||
|
||||
-add_subdirectory(interfaces)
|
||||
+add_subdirectory(interfaces)
|
||||
add_subdirectory(libs)
|
||||
set(AKONADI_PROTOCOLINTERNALS_LIBS ${akonadiprotocolinternals_LIB_DEPENDS} akonadiprotocolinternals)
|
||||
|
||||
-add_subdirectory(shared)
|
||||
-add_subdirectory(agentserver)
|
||||
-add_subdirectory(server)
|
||||
+#add_subdirectory(shared)
|
||||
+#add_subdirectory(agentserver)
|
||||
+#add_subdirectory(server)
|
||||
|
||||
-add_subdirectory(rds)
|
||||
+#add_subdirectory(rds)
|
||||
if(NOT WIN32)
|
||||
- add_subdirectory(asapcat)
|
||||
+ #add_subdirectory(asapcat)
|
||||
endif()
|
||||
if (NOT QT5_BUILD)
|
||||
if(SQLITE_FOUND)
|
||||
option(SQLITE_LINK_STATIC "link libsqlite3 statically" FALSE)
|
||||
- add_subdirectory(qsqlite)
|
||||
+ #add_subdirectory(qsqlite)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
284
akonadi.spec
284
akonadi.spec
|
|
@ -1,3 +1,5 @@
|
|||
# Force out of source build
|
||||
%undefine __cmake_in_source_build
|
||||
|
||||
# base pkg default to SQLITE now, install -mysql if you want that instead
|
||||
%global database_backend SQLITE
|
||||
|
|
@ -5,39 +7,21 @@
|
|||
# trim changelog included in binary rpms
|
||||
%global _changelog_trimtime %(date +%s -d "1 year ago")
|
||||
|
||||
# legacy nepomuk/soprano support (ie, kde < 4.13)
|
||||
%if 0%{?fedora} < 20
|
||||
%define soprano 1
|
||||
%endif
|
||||
|
||||
%global mysql mysql
|
||||
%if 0%{?rhel} > 6
|
||||
# el7 mariadb pkgs don't have compat Provides: mysql (apparently?)
|
||||
%global mysql mariadb
|
||||
%endif
|
||||
|
||||
Summary: PIM Storage Service
|
||||
Summary: PIM Storage Service Libraries
|
||||
Name: akonadi
|
||||
Version: 1.13.0
|
||||
Release: 12%{?dist}
|
||||
Release: 130%{?dist}
|
||||
|
||||
License: LGPLv2+
|
||||
License: LGPL-2.0-or-later
|
||||
URL: http://community.kde.org/KDE_PIM/Akonadi
|
||||
%if 0%{?snap}
|
||||
# git clone git://git.kde.org/akonadi
|
||||
# git archive --prefix=akonadi-%{version}/ master | bzip2 > akonadi-%{version}-%{snap}.tar.bz2
|
||||
Source0: akonadi-%{version}-%{snap}.tar.bz2
|
||||
%else
|
||||
# Official release
|
||||
Source0: http://download.kde.org/stable/akonadi/src/akonadi-%{version}.tar.bz2
|
||||
%endif
|
||||
|
||||
## mysql config
|
||||
Source10: akonadiserverrc.mysql
|
||||
## downstream patches
|
||||
Patch100: akonadi-1.13.0-libs_only.patch
|
||||
|
||||
## upstreamable patches
|
||||
|
||||
## upstream patches
|
||||
## upstream patches (1.13 branch)
|
||||
Patch1: 0001-FindSqlite-Use-CMAKE_FLAGS-the-right-way-in-try_comp.patch
|
||||
Patch2: 0002-Do-not-enter-the-test-directories-if-AKONADI_BUILD_T.patch
|
||||
Patch3: 0003-STORE-Allow-modifying-items-tags-via-Tag-RID-or-GID.patch
|
||||
|
|
@ -69,171 +53,187 @@ Patch28: 0028-Extend-imapparser-benchmark-and-keep-static-data-aro.patch
|
|||
Patch29: 0029-Reduce-the-amount-of-allocations-by-preallocating-a-.patch
|
||||
Patch30: 0030-Preallocate-a-capacity-of-16-for-the-returned-list.patch
|
||||
|
||||
%define mysql_conf_timestamp 20140709
|
||||
|
||||
BuildRequires: automoc4
|
||||
BuildRequires: boost-devel
|
||||
BuildRequires: cmake >= 2.8.8
|
||||
BuildRequires: gcc-c++
|
||||
# for xsltproc
|
||||
BuildRequires: libxslt
|
||||
BuildRequires: pkgconfig(QtDBus) pkgconfig(QtSql) pkgconfig(QtXml)
|
||||
BuildRequires: pkgconfig(shared-mime-info)
|
||||
%if 0%{?soprano}
|
||||
BuildRequires: pkgconfig(soprano)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(sqlite3) >= 3.6.23
|
||||
# %%check
|
||||
BuildRequires: dbus-x11 xorg-x11-server-Xvfb
|
||||
# backends, used at buildtime to query known locations of server binaries
|
||||
# FIXME/TODO: set these via cmake directives, avoids needless buildroot items
|
||||
BuildRequires: mariadb-server
|
||||
BuildRequires: postgresql-server
|
||||
|
||||
%{?_qt4_version:Requires: qt4%{?_isa} >= %{_qt4_version}}
|
||||
|
||||
Requires(postun): /sbin/ldconfig
|
||||
|
||||
%description
|
||||
%{summary}.
|
||||
|
||||
%package devel
|
||||
Summary: Developer files for %{name}
|
||||
Conflicts: kf5-akonadi-server-devel
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
%description devel
|
||||
%{summary}.
|
||||
|
||||
%package mysql
|
||||
Summary: Akonadi MySQL backend support
|
||||
# upgrade path
|
||||
Obsoletes: akonadi < 1.7.90-2
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
Requires: %{mysql}-server
|
||||
%if "%{?mysql}" != "mariadb" && 0%{?fedora} > 20
|
||||
Recommends: mariadb-server
|
||||
%endif
|
||||
Requires: qt4-mysql%{?_isa}
|
||||
Requires(post): %{_sbindir}/update-alternatives
|
||||
Requires(postun): %{_sbindir}/update-alternatives
|
||||
%description mysql
|
||||
Configures akonadi to use mysql backend by default.
|
||||
|
||||
Requires an available instance of mysql server at runtime.
|
||||
Akonadi can spawn a per-user one automatically if the mysql-server
|
||||
package is installed on the machine.
|
||||
See also: %{_sysconfdir}/akonadi/mysql-global.conf
|
||||
|
||||
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n akonadi-%{version}
|
||||
|
||||
|
||||
%build
|
||||
mkdir -p %{_target_platform}
|
||||
pushd %{_target_platform}
|
||||
%{cmake} \
|
||||
-DCONFIG_INSTALL_DIR=%{_sysconfdir} \
|
||||
%{?database_backend:-DDATABASE_BACKEND=%{database_backend}} \
|
||||
-DINSTALL_QSQLITE_IN_QT_PREFIX:BOOL=ON \
|
||||
-DWITH_SOPRANO:BOOL=%{?soprano:ON}%{!?soprano:OFF} \
|
||||
..
|
||||
popd
|
||||
|
||||
make %{?_smp_mflags} -C %{_target_platform}
|
||||
%cmake -DCMAKE_BUILD_TYPE:STRING="Release"
|
||||
%cmake_build
|
||||
|
||||
|
||||
%install
|
||||
make install/fast DESTDIR=$RPM_BUILD_ROOT -C %{_target_platform}
|
||||
|
||||
install -p -m644 -D %{SOURCE10} %{buildroot}%{_sysconfdir}/xdg/akonadi/akonadiserverrc.mysql
|
||||
|
||||
mkdir -p %{buildroot}%{_datadir}/akonadi/agents
|
||||
|
||||
touch -d %{mysql_conf_timestamp} \
|
||||
%{buildroot}%{_sysconfdir}/akonadi/mysql-global*.conf \
|
||||
%{buildroot}%{_sysconfdir}/akonadi/mysql-local.conf
|
||||
|
||||
# create/own %{_libdir}/akondi
|
||||
mkdir -p %{buildroot}%{_libdir}/akonadi
|
||||
|
||||
# %%ghost'd global akonadiserverrc
|
||||
touch akonadiserverrc
|
||||
install -p -m644 -D akonadiserverrc %{buildroot}%{_sysconfdir}/xdg/akonadi/akonadiserverrc
|
||||
%cmake_install
|
||||
|
||||
## unpackaged files
|
||||
# omit mysql-global-mobile.conf
|
||||
rm -fv %{buildroot}%{_sysconfdir}/akonadi/mysql-global-mobile.conf
|
||||
rm -fv %{buildroot}%{_datadir}/mime/packages/akonadi-mime.xml
|
||||
|
||||
|
||||
%check
|
||||
export PKG_CONFIG_PATH=%{buildroot}%{_datadir}/pkgconfig:%{buildroot}%{_libdir}/pkgconfig
|
||||
test "$(pkg-config --modversion akonadi)" = "%{version}"
|
||||
# this one (still) fails in mock (local build ok):
|
||||
# 14/14 Test #14: akonadi-dbconfigtest
|
||||
xvfb-run -a dbus-launch --exit-with-session make test -C %{_target_platform} ||:
|
||||
|
||||
|
||||
%post
|
||||
/sbin/ldconfig
|
||||
touch --no-create %{_datadir}/mime/packages &> /dev/null || :
|
||||
|
||||
%posttrans
|
||||
update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || :
|
||||
|
||||
%postun
|
||||
/sbin/ldconfig ||:
|
||||
if [ $1 -eq 0 ] ; then
|
||||
touch --no-create %{_datadir}/mime/packages &> /dev/null || :
|
||||
update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null ||:
|
||||
fi
|
||||
%ldconfig_scriptlets
|
||||
|
||||
%files
|
||||
%doc AUTHORS lgpl-license
|
||||
%dir %{_sysconfdir}/xdg/akonadi/
|
||||
%ghost %config(missingok,noreplace) %{_sysconfdir}/xdg/akonadi/akonadiserverrc
|
||||
%dir %{_sysconfdir}/akonadi/
|
||||
%{_bindir}/akonadi_agent_launcher
|
||||
%{_bindir}/akonadi_agent_server
|
||||
%{_bindir}/akonadi_control
|
||||
%{_bindir}/akonadi_rds
|
||||
%{_bindir}/akonadictl
|
||||
%{_bindir}/akonadiserver
|
||||
%{_libdir}/akonadi/
|
||||
%doc AUTHORS
|
||||
%license lgpl-license
|
||||
%{_libdir}/libakonadiprotocolinternals.so.1*
|
||||
%{_datadir}/dbus-1/interfaces/org.freedesktop.Akonadi.*.xml
|
||||
%{_datadir}/dbus-1/services/org.freedesktop.Akonadi.*.service
|
||||
%{_datadir}/mime/packages/akonadi-mime.xml
|
||||
%{_datadir}/akonadi/
|
||||
%{_qt4_plugindir}/sqldrivers/libqsqlite3.so
|
||||
|
||||
%files devel
|
||||
%{_bindir}/asapcat
|
||||
%{_includedir}/akonadi/
|
||||
%{_libdir}/pkgconfig/akonadi.pc
|
||||
%{_libdir}/libakonadiprotocolinternals.so
|
||||
%{_libdir}/cmake/Akonadi/
|
||||
|
||||
%post mysql
|
||||
%{_sbindir}/update-alternatives \
|
||||
--install %{_sysconfdir}/xdg/akonadi/akonadiserverrc \
|
||||
akonadiserverrc \
|
||||
%{_sysconfdir}/xdg/akonadi/akonadiserverrc.mysql \
|
||||
10
|
||||
|
||||
%postun mysql
|
||||
if [ $1 -eq 0 ]; then
|
||||
%{_sbindir}/update-alternatives \
|
||||
--remove akonadiserverrc \
|
||||
%{_sysconfdir}/xdg/akonadi/akonadiserverrc.mysql
|
||||
fi
|
||||
|
||||
%files mysql
|
||||
%config(noreplace) %{_sysconfdir}/xdg/akonadi/akonadiserverrc.mysql
|
||||
%config(noreplace) %{_sysconfdir}/akonadi/mysql-global.conf
|
||||
%config(noreplace) %{_sysconfdir}/akonadi/mysql-local.conf
|
||||
%{_datadir}/dbus-1/interfaces/org.freedesktop.Akonadi.*.xml
|
||||
|
||||
|
||||
%changelog
|
||||
* Fri Jan 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-130
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
|
||||
|
||||
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-129
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-128
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-127
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-126
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-125
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-124
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Mon Jun 12 2023 Than Ngo <than@redhat.com> - 1.13.0-123
|
||||
- migrated to SPDX license
|
||||
|
||||
* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-122
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-121
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-120
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-119
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Mon Jan 25 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-118
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Fri Jul 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-117
|
||||
- Second attempt - Rebuilt for
|
||||
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-116
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-115
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-114
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-113
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Fri Jan 25 2019 Jonathan Wakely <jwakely@redhat.com> - 1.13.0-112
|
||||
- Rebuilt for Boost 1.69
|
||||
|
||||
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-111
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Tue Feb 20 2018 Rex Dieter <rdieter@fedoraproject.org> - 1.13.0-110
|
||||
- BR: gcc-c++, use %%ldconfig_scriptlets
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-109
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Tue Jan 23 2018 Jonathan Wakely <jwakely@redhat.com> - 1.13.0-108
|
||||
- Rebuilt for Boost 1.66
|
||||
|
||||
* Sun Aug 06 2017 Björn Esser <besser82@fedoraproject.org> - 1.13.0-107
|
||||
- Rebuilt for AutoReq cmake-filesystem
|
||||
|
||||
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-106
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-105
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Tue Jul 18 2017 Jonathan Wakely <jwakely@redhat.com> - 1.13.0-104
|
||||
- Rebuilt for Boost 1.64
|
||||
|
||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-103
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-102
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Thu Dec 17 2015 Rex Dieter <rdieter@fedoraproject.org> 1.13.0-101
|
||||
- -devel: re-enable dbus-1/interfaces, Conflicts: kf5-akonadi-server-devel
|
||||
|
||||
* Fri Dec 11 2015 Rex Dieter <rdieter@fedoraproject.org> 1.13.0-100
|
||||
- for kf5 kdepim world, build libakonadi bits only (omit server and related files)
|
||||
|
||||
* Thu Nov 12 2015 Rex Dieter <rdieter@fedoraproject.org> 1.13.0-22
|
||||
- Recommends: akonadi-mysql
|
||||
|
||||
* Sun Aug 30 2015 Jonathan Wakely <jwakely@redhat.com> 1.13.0-21
|
||||
- Rebuilt for Boost 1.59
|
||||
|
||||
* Wed Aug 05 2015 Jonathan Wakely <jwakely@redhat.com> 1.13.0-20
|
||||
- Rebuilt for Boost 1.58
|
||||
|
||||
* Fri Jul 31 2015 Rex Dieter <rdieter@fedoraproject.org> 1.13.0-19
|
||||
- pull in latest 1.13 branch fixes
|
||||
|
||||
* Wed Jul 29 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.13.0-18
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159
|
||||
|
||||
* Wed Jul 22 2015 David Tardon <dtardon@redhat.com> - 1.13.0-17
|
||||
- rebuild for Boost 1.58
|
||||
|
||||
* Mon Jun 29 2015 Daniel Vrátil <dvratil@redhat.com> - 1.13.0-16
|
||||
- pull upstream fix for KDE#341884
|
||||
|
||||
* Tue Jun 16 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.13.0-15
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Thu May 07 2015 Rex Dieter <rdieter@fedoraproject.org> 1.13.0-14
|
||||
- %%build: explicitly set -DCMAKE_BUILD_TYPE="Release" (-DQT_NO_DEBUG was used already)
|
||||
|
||||
* Mon Apr 27 2015 Daniel Vrátil <dvratil@redhat.com> - 1.13.0-13
|
||||
- Rebuild for boost
|
||||
|
||||
* Sun Mar 08 2015 Rex Dieter <rdieter@fedoraproject.org> - 1.13.0-12
|
||||
- explicit BuildRequires: mariadb-server
|
||||
- -mysql: Recommends: mariadb-server (f21+, #1199797)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue