Accepting request 490333 from KDE:Applications
KDE Applications 17.04.0 final OBS-URL: https://build.opensuse.org/request/show/490333 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/akonadi-server?expand=0&rev=27
This commit is contained in:
commit
935f5fecde
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:fc48a200c27331d5a9ac6bfb8d7d61f3c4240f133bb23c996c78493f24644b03
|
|
||||||
size 1037568
|
|
3
akonadi-17.04.0.tar.xz
Normal file
3
akonadi-17.04.0.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:962f7694ff67e32b965a07da282d2af7a0777353b11f537c147c8777b03901d4
|
||||||
|
size 1301104
|
@ -1,8 +1,52 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Apr 16 10:44:43 CEST 2017 - lbeltrame@kde.org
|
||||||
|
|
||||||
|
- Update to 17.04.0
|
||||||
|
* New feature release
|
||||||
|
* For more details please see:
|
||||||
|
* https://www.kde.org/announcements/announce-applications-17.04.0.php
|
||||||
|
- Changes since 17.03.90:
|
||||||
|
* Remove unused variable
|
||||||
|
* Remove compile warning
|
||||||
|
* Update search query from CollectionModifyJob
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Apr 12 20:25:10 CEST 2017 - lbeltrame@kde.org
|
||||||
|
|
||||||
|
- Update to 17.03.90
|
||||||
|
* New bugfix release
|
||||||
|
* For more details please see:
|
||||||
|
* https://www.kde.org/announcements/announce-applications-17.04-rc.php
|
||||||
|
- Changes since 17.03.80:
|
||||||
|
* Fix some -Wdocumentation warnings
|
||||||
|
* Fix redefinition of QAddConst
|
||||||
|
* Port some foreach code
|
||||||
|
* ResourceBase: cancelTask() when PrepareItemsRetrieval job returns 0 items
|
||||||
|
* Handle nested exceptions during error handling
|
||||||
|
* Improve some ETM warnings
|
||||||
|
* abi::__forced_unwind is only part of gnu's libstc++.
|
||||||
|
* Remove unused include
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Mar 30 05:28:34 UTC 2017 - lbeltrame@kde.org
|
||||||
|
|
||||||
|
- Drop upstreamed patch: handle-mysql-process-crashes-gracefully.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Mar 25 23:10:05 CET 2017 - lbeltrame@kde.org
|
||||||
|
|
||||||
|
- Update to 17.03.80
|
||||||
|
* New feature release
|
||||||
|
* For more details please see:
|
||||||
|
* https://www.kde.org/announcements/announce-applications-17.03.80.php
|
||||||
|
- Changes since 16.12.3:
|
||||||
|
* Too many changes to list here
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Mar 9 18:07:28 UTC 2017 - alarrosa@suse.com
|
Thu Mar 9 18:07:28 UTC 2017 - alarrosa@suse.com
|
||||||
|
|
||||||
- Drop fix-itemretriever-in-case-of-concurrent-requests.patch, it's
|
- Drop fix-itemretriever-in-case-of-concurrent-requests.patch, it's
|
||||||
already merged upstream
|
already merged upstream
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Mar 9 12:33:17 CET 2017 - lbeltrame@kde.org
|
Thu Mar 9 12:33:17 CET 2017 - lbeltrame@kde.org
|
||||||
@ -30,7 +74,7 @@ Thu Mar 9 12:33:17 CET 2017 - lbeltrame@kde.org
|
|||||||
Fri Feb 24 13:14:48 UTC 2017 - lbeltrame@kde.org
|
Fri Feb 24 13:14:48 UTC 2017 - lbeltrame@kde.org
|
||||||
|
|
||||||
- Add fix-itemretriever-in-case-of-concurrent-requests.patch
|
- Add fix-itemretriever-in-case-of-concurrent-requests.patch
|
||||||
* Fix hangs accessing folders ("Retrieving folder contents"
|
* Fix hangs accessing folders ("Retrieving folder contents"
|
||||||
going on infinitely)
|
going on infinitely)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@ -55,7 +99,7 @@ Sun Jan 22 17:10:01 UTC 2017 - hrvoje.senjan@gmail.com
|
|||||||
Sat Jan 14 08:48:19 UTC 2017 - lbeltrame@kde.org
|
Sat Jan 14 08:48:19 UTC 2017 - lbeltrame@kde.org
|
||||||
|
|
||||||
- - Update to KDE Applications 16.12.1
|
- - Update to KDE Applications 16.12.1
|
||||||
* KDE Applications 16.12.1
|
* KDE Applications 16.12.1
|
||||||
* https://www.kde.org/announcements/announce-applications-16.12.1.php
|
* https://www.kde.org/announcements/announce-applications-16.12.1.php
|
||||||
|
|
||||||
- Drop upstream patch fix-connect-api.patch
|
- Drop upstream patch fix-connect-api.patch
|
||||||
@ -63,14 +107,14 @@ Sat Jan 14 08:48:19 UTC 2017 - lbeltrame@kde.org
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Dec 27 19:44:22 UTC 2016 - tittiatcoke@gmail.com
|
Tue Dec 27 19:44:22 UTC 2016 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
- Add upstream patch fix-connect-api.patch in order to fix the
|
- Add upstream patch fix-connect-api.patch in order to fix the
|
||||||
subscribe/unsubscribe IMAP folders
|
subscribe/unsubscribe IMAP folders
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Dec 13 19:27:48 UTC 2016 - tittiatcoke@gmail.com
|
Tue Dec 13 19:27:48 UTC 2016 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
- Update to KDE Applications 16.12.0
|
- Update to KDE Applications 16.12.0
|
||||||
* KDE Applications 16.12.0
|
* KDE Applications 16.12.0
|
||||||
* https://www.kde.org/announcements/announce-applications-16.12.0.php
|
* https://www.kde.org/announcements/announce-applications-16.12.0.php
|
||||||
|
|
||||||
|
|
||||||
@ -208,7 +252,7 @@ Thu Apr 28 05:36:04 UTC 2016 - lbeltrame@kde.org
|
|||||||
Wed Apr 27 21:40:31 UTC 2016 - lbeltrame@kde.org
|
Wed Apr 27 21:40:31 UTC 2016 - lbeltrame@kde.org
|
||||||
|
|
||||||
- Move dbus xml files to the akonadi-devel package
|
- Move dbus xml files to the akonadi-devel package
|
||||||
- Make the devel package conflict with
|
- Make the devel package conflict with
|
||||||
libakonadiprotocolinternals-devel
|
libakonadiprotocolinternals-devel
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@ -231,7 +275,7 @@ Mon Apr 11 06:29:53 UTC 2016 - tittiatcoke@gmail.com
|
|||||||
Sun Mar 13 15:32:26 UTC 2016 - tittiatcoke@gmail.com
|
Sun Mar 13 15:32:26 UTC 2016 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
- Update to KDE Applications 15.12.3
|
- Update to KDE Applications 15.12.3
|
||||||
* KDE Applications 15.12.3
|
* KDE Applications 15.12.3
|
||||||
* https://www.kde.org/announcements/announce-applications-15.12.3.php
|
* https://www.kde.org/announcements/announce-applications-15.12.3.php
|
||||||
* boo#970855
|
* boo#970855
|
||||||
|
|
||||||
@ -240,7 +284,7 @@ Sun Mar 13 15:32:26 UTC 2016 - tittiatcoke@gmail.com
|
|||||||
Sat Feb 13 07:59:56 UTC 2016 - tittiatcoke@gmail.com
|
Sat Feb 13 07:59:56 UTC 2016 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
- Update to KDE Applications 15.12.2
|
- Update to KDE Applications 15.12.2
|
||||||
* KDE Applications 15.12.2
|
* KDE Applications 15.12.2
|
||||||
* https://www.kde.org/announcements/announce-applications-15.12.2.php
|
* https://www.kde.org/announcements/announce-applications-15.12.2.php
|
||||||
* boo#966605
|
* boo#966605
|
||||||
|
|
||||||
@ -248,14 +292,14 @@ Sat Feb 13 07:59:56 UTC 2016 - tittiatcoke@gmail.com
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jan 25 16:00:35 UTC 2016 - tittiatcoke@gmail.com
|
Tue Jan 25 16:00:35 UTC 2016 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
- Obsolete the old akonadi-runtime for Factory/TW due to the
|
- Obsolete the old akonadi-runtime for Factory/TW due to the
|
||||||
switch to kdepim5 as default
|
switch to kdepim5 as default
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sat Jan 9 18:08:35 UTC 2016 - tittiatcoke@gmail.com
|
Sat Jan 9 18:08:35 UTC 2016 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
- Update to KDE Applications 15.12.1
|
- Update to KDE Applications 15.12.1
|
||||||
* KDE Applications 15.12.1
|
* KDE Applications 15.12.1
|
||||||
* https://www.kde.org/announcements/announce-applications-15.12.1.php
|
* https://www.kde.org/announcements/announce-applications-15.12.1.php
|
||||||
* boo#961265
|
* boo#961265
|
||||||
|
|
||||||
@ -264,7 +308,7 @@ Sat Jan 9 18:08:35 UTC 2016 - tittiatcoke@gmail.com
|
|||||||
Sun Dec 13 12:45:30 UTC 2015 - tittiatcoke@gmail.com
|
Sun Dec 13 12:45:30 UTC 2015 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
- Update to KDE Applications 15.12.0
|
- Update to KDE Applications 15.12.0
|
||||||
* KDE Applications 15.12.0
|
* KDE Applications 15.12.0
|
||||||
* https://www.kde.org/announcements/announce-applications-15.12.0.php
|
* https://www.kde.org/announcements/announce-applications-15.12.0.php
|
||||||
* boo#958887
|
* boo#958887
|
||||||
|
|
||||||
@ -273,7 +317,7 @@ Sun Dec 13 12:45:30 UTC 2015 - tittiatcoke@gmail.com
|
|||||||
Tue Nov 10 19:51:55 UTC 2015 - tittiatcoke@gmail.com
|
Tue Nov 10 19:51:55 UTC 2015 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
- Update to KDE Applications 15.08.3
|
- Update to KDE Applications 15.08.3
|
||||||
* KDE Applications 15.08.3
|
* KDE Applications 15.08.3
|
||||||
* https://www.kde.org/announcements/announce-applications-15.08.3.php
|
* https://www.kde.org/announcements/announce-applications-15.08.3.php
|
||||||
* boo#954531
|
* boo#954531
|
||||||
|
|
||||||
@ -282,7 +326,7 @@ Tue Nov 10 19:51:55 UTC 2015 - tittiatcoke@gmail.com
|
|||||||
Sun Oct 11 13:14:41 UTC 2015 - tittiatcoke@gmail.com
|
Sun Oct 11 13:14:41 UTC 2015 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
- Update to KDE Applications 15.08.2
|
- Update to KDE Applications 15.08.2
|
||||||
* KDE Applications 15.08.2
|
* KDE Applications 15.08.2
|
||||||
* https://www.kde.org/announcements/announce-applications-15.08.2.php
|
* https://www.kde.org/announcements/announce-applications-15.08.2.php
|
||||||
|
|
||||||
|
|
||||||
@ -290,7 +334,7 @@ Sun Oct 11 13:14:41 UTC 2015 - tittiatcoke@gmail.com
|
|||||||
Sun Sep 13 18:54:20 UTC 2015 - tittiatcoke@gmail.com
|
Sun Sep 13 18:54:20 UTC 2015 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
- Update to KDE Applications 15.08.1
|
- Update to KDE Applications 15.08.1
|
||||||
* KDE Applications 15.08.1
|
* KDE Applications 15.08.1
|
||||||
* https://www.kde.org/announcements/announce-applications-15.08.1.php
|
* https://www.kde.org/announcements/announce-applications-15.08.1.php
|
||||||
- Drop upstream patch akonadi-fix-licenses.diff
|
- Drop upstream patch akonadi-fix-licenses.diff
|
||||||
|
|
||||||
@ -329,7 +373,7 @@ Fri Aug 7 07:33:31 UTC 2015 - tittiatcoke@gmail.com
|
|||||||
Tue Jun 30 05:31:19 UTC 2015 - lbeltrame@kde.org
|
Tue Jun 30 05:31:19 UTC 2015 - lbeltrame@kde.org
|
||||||
|
|
||||||
- Add do-not-leak-old-external-payload-files.diff: do not leak
|
- Add do-not-leak-old-external-payload-files.diff: do not leak
|
||||||
external payload files, fixes disk usage of akonadi file_db_data
|
external payload files, fixes disk usage of akonadi file_db_data
|
||||||
(kde#341884)
|
(kde#341884)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@ -356,7 +400,7 @@ Fri Aug 15 08:07:44 UTC 2014 - tittiatcoke@gmail.com
|
|||||||
* Fixed tag RID fetch
|
* Fixed tag RID fetch
|
||||||
* Fixed HRID-based fetches
|
* Fixed HRID-based fetches
|
||||||
* Fixed race condition in StorageDebugger
|
* Fixed race condition in StorageDebugger
|
||||||
* Use FindBacktrace.cmake from CMake 3.0 instead of our own
|
* Use FindBacktrace.cmake from CMake 3.0 instead of our own
|
||||||
detection
|
detection
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@ -400,7 +444,7 @@ Thu Mar 27 17:34:53 UTC 2014 - tittiatcoke@gmail.com
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sun Mar 23 12:44:34 UTC 2014 - tittiatcoke@gmail.com
|
Sun Mar 23 12:44:34 UTC 2014 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
- Add upstream patch do-not-emit-itemchanged.diff to prevent
|
- Add upstream patch do-not-emit-itemchanged.diff to prevent
|
||||||
baloo from constantly indexing the maildir
|
baloo from constantly indexing the maildir
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@ -425,8 +469,8 @@ Fri Mar 14 15:25:04 UTC 2014 - tittiatcoke@gmail.com
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Mar 12 14:29:11 UTC 2014 - tittiatcoke@gmail.com
|
Wed Mar 12 14:29:11 UTC 2014 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
- Add upstream patches fix-postgresql-query.diff,
|
- Add upstream patches fix-postgresql-query.diff,
|
||||||
fix-postgresql-2.diff to fix the issue when migrating an existing
|
fix-postgresql-2.diff to fix the issue when migrating an existing
|
||||||
PostgreSQL database
|
PostgreSQL database
|
||||||
- Add upstream patch fix-mailrefresh.diff to fix the issue around
|
- Add upstream patch fix-mailrefresh.diff to fix the issue around
|
||||||
automatically refreshing emails
|
automatically refreshing emails
|
||||||
|
@ -16,21 +16,21 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%bcond_without lang
|
||||||
|
|
||||||
%define rname akonadi
|
%define rname akonadi
|
||||||
%define kf5_version 5.26.0
|
|
||||||
# Latest stable Applications (e.g. 16.08 in KA, but 16.12.3 in KUA)
|
|
||||||
%{!?_kapp_version: %global _kapp_version %(echo %{version}| awk -F. '{print $1"."$2}')}
|
|
||||||
Name: akonadi-server
|
Name: akonadi-server
|
||||||
Version: 16.12.3
|
Version: 17.04.0
|
||||||
Release: 0
|
Release: 0
|
||||||
|
%define kf5_version 5.26.0
|
||||||
|
# Latest stable Applications (e.g. 16.08 in KA, but 16.11.80 in KUA)
|
||||||
|
%{!?_kapp_version: %global _kapp_version %(echo %{version}| awk -F. '{print $1"."$2}')}
|
||||||
Summary: PIM Storage Service
|
Summary: PIM Storage Service
|
||||||
License: LGPL-2.1+
|
License: LGPL-2.1+
|
||||||
Group: System/GUI/KDE
|
Group: System/GUI/KDE
|
||||||
Url: http://akonadi-project.org
|
Url: http://akonadi-project.org
|
||||||
Source: %{rname}-%{version}.tar.xz
|
Source: %{rname}-%{version}.tar.xz
|
||||||
Source99: akonadi-server-rpmlintrc
|
Source99: akonadi-server-rpmlintrc
|
||||||
# PATCH-FIX-UPSTREAM handle-mysql-process-crashes-gracefully.patch
|
|
||||||
Patch0: handle-mysql-process-crashes-gracefully.patch
|
|
||||||
%if 0%{?suse_version} > 1325
|
%if 0%{?suse_version} > 1325
|
||||||
BuildRequires: libboost_headers-devel
|
BuildRequires: libboost_headers-devel
|
||||||
%else
|
%else
|
||||||
@ -78,6 +78,7 @@ Obsoletes: akonadi5 < %{version}
|
|||||||
Provides: akonadi5 = %{version}
|
Provides: akonadi5 = %{version}
|
||||||
# Needed for users of unstable repositories
|
# Needed for users of unstable repositories
|
||||||
Obsoletes: akonadi < %{version}
|
Obsoletes: akonadi < %{version}
|
||||||
|
Recommends: %{name}-lang
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
%if 0%{?suse_version} > 1320
|
%if 0%{?suse_version} > 1320
|
||||||
Obsoletes: akonadi-runtime < %{version}
|
Obsoletes: akonadi-runtime < %{version}
|
||||||
@ -167,9 +168,12 @@ Provides: libKF5AkonadiPrivate-devel = %{version}
|
|||||||
This package contains development files of Akonadi, the KDE PIM storage
|
This package contains development files of Akonadi, the KDE PIM storage
|
||||||
service.
|
service.
|
||||||
|
|
||||||
|
%if %{with lang}
|
||||||
|
%lang_package
|
||||||
|
%endif
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{rname}-%{version}
|
%setup -q -n %{rname}-%{version}
|
||||||
%patch0 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%cmake_kf5 -d build -- -DINSTALL_QSQLITE_IN_QT_PREFIX=TRUE -DQT_PLUGINS_DIR=%{_kf5_plugindir}
|
%cmake_kf5 -d build -- -DINSTALL_QSQLITE_IN_QT_PREFIX=TRUE -DQT_PLUGINS_DIR=%{_kf5_plugindir}
|
||||||
@ -177,6 +181,9 @@ service.
|
|||||||
|
|
||||||
%install
|
%install
|
||||||
%kf5_makeinstall -C build
|
%kf5_makeinstall -C build
|
||||||
|
%if %{with lang}
|
||||||
|
%find_lang %{name} --with-man --all-name
|
||||||
|
%endif
|
||||||
|
|
||||||
%post
|
%post
|
||||||
/sbin/ldconfig
|
/sbin/ldconfig
|
||||||
@ -267,4 +274,9 @@ service.
|
|||||||
%{_libdir}/libKF5AkonadiXml.so
|
%{_libdir}/libKF5AkonadiXml.so
|
||||||
%{_libdir}/qt5/mkspecs/modules/qt_AkonadiXml.pri
|
%{_libdir}/qt5/mkspecs/modules/qt_AkonadiXml.pri
|
||||||
|
|
||||||
|
%if %{with lang}
|
||||||
|
%files lang -f %{name}.lang
|
||||||
|
%doc COPYING*
|
||||||
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
@ -1,196 +0,0 @@
|
|||||||
From 4c5ca9bf32e5a9d569e83f66a439c65d8939a540 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Koller <kollix@aon.at>
|
|
||||||
Date: Sat, 21 Jan 2017 12:11:14 +0100
|
|
||||||
Subject: handle mysql process crashes gracefully
|
|
||||||
|
|
||||||
This patch checks if the mysqld stops unexpectedly when it was started
|
|
||||||
from akonadiserver and tells the latter to quit when a
|
|
||||||
stopped mysqld was discovered.
|
|
||||||
Also in this case the local socket file is removed so that
|
|
||||||
a restart can work without problem.
|
|
||||||
REVIEW: 129264
|
|
||||||
---
|
|
||||||
src/server/storage/dbconfigmysql.cpp | 69 +++++++++++++++++++++++++++++++++---
|
|
||||||
src/server/storage/dbconfigmysql.h | 11 ++++--
|
|
||||||
2 files changed, 72 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/server/storage/dbconfigmysql.cpp b/src/server/storage/dbconfigmysql.cpp
|
|
||||||
index 0962ccb..7631890 100644
|
|
||||||
--- a/src/server/storage/dbconfigmysql.cpp
|
|
||||||
+++ b/src/server/storage/dbconfigmysql.cpp
|
|
||||||
@@ -32,6 +32,7 @@
|
|
||||||
#include <QSqlDriver>
|
|
||||||
#include <QSqlError>
|
|
||||||
#include <QSqlQuery>
|
|
||||||
+#include <QCoreApplication>
|
|
||||||
|
|
||||||
using namespace Akonadi;
|
|
||||||
using namespace Akonadi::Server;
|
|
||||||
@@ -190,6 +191,8 @@ bool DbConfigMysql::startInternalServer()
|
|
||||||
const QString dataDir = StandardDirs::saveDir("data", QStringLiteral("db_data"));
|
|
||||||
#ifndef Q_OS_WIN
|
|
||||||
const QString socketDirectory = Utils::preferredSocketDirectory(StandardDirs::saveDir("data", QStringLiteral("db_misc")));
|
|
||||||
+ const QString socketFile = QStringLiteral("%1/mysql.socket").arg(socketDirectory);
|
|
||||||
+ const QString pidFileName = QStringLiteral("%1/mysql.pid").arg(socketDirectory);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// generate config file
|
|
||||||
@@ -289,6 +292,39 @@ bool DbConfigMysql::startInternalServer()
|
|
||||||
qCCritical(AKONADISERVER_LOG) << "MySQL cannot deal with a socket path this long. Path was: " << socketDirectory;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ // If mysql.socket file exists, check if also the server process is still running,
|
|
||||||
+ // else we can safely remove the socket file (cleanup after a system crash, etc.)
|
|
||||||
+ QFile pidFile(pidFileName);
|
|
||||||
+ if (QFile::exists(socketFile) && pidFile.open(QIODevice::ReadOnly)) {
|
|
||||||
+ qCDebug(AKONADISERVER_LOG) << "Found a mysqld pid file, checking whether the server is still running...";
|
|
||||||
+ QByteArray pid = pidFile.readLine().trimmed();
|
|
||||||
+ QFile proc(QString::fromLatin1("/proc/" + pid + "/stat"));
|
|
||||||
+ // Check whether the process with the PID from pidfile still exists and whether
|
|
||||||
+ // it's actually still mysqld or, whether the PID has been recycled in the meanwhile.
|
|
||||||
+ bool serverIsRunning = false;
|
|
||||||
+ if (proc.open(QIODevice::ReadOnly)) {
|
|
||||||
+ const QByteArray stat = proc.readAll();
|
|
||||||
+ const QList<QByteArray> stats = stat.split(' ');
|
|
||||||
+ if (stats.count() > 1) {
|
|
||||||
+ // Make sure the PID actually belongs to mysql process
|
|
||||||
+ if (stats[1] == "(mysqld)") {
|
|
||||||
+ // Yup, our mysqld is actually running, so pretend we started the server
|
|
||||||
+ // and try to connect to it
|
|
||||||
+ qCWarning(AKONADISERVER_LOG) << "mysqld for Akonadi is already running, trying to connect to it.";
|
|
||||||
+ serverIsRunning = true;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ proc.close();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (!serverIsRunning) {
|
|
||||||
+ qCDebug(AKONADISERVER_LOG) << "No mysqld process with specified PID is running. Removing the pidfile and starting a new instance...";
|
|
||||||
+ pidFile.close();
|
|
||||||
+ pidFile.remove();
|
|
||||||
+ QFile::remove(socketFile);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// synthesize the mysqld command
|
|
||||||
@@ -296,14 +332,15 @@ bool DbConfigMysql::startInternalServer()
|
|
||||||
arguments << QStringLiteral("--defaults-file=%1/mysql.conf").arg(akDir);
|
|
||||||
arguments << QStringLiteral("--datadir=%1/").arg(dataDir);
|
|
||||||
#ifndef Q_OS_WIN
|
|
||||||
- arguments << QStringLiteral("--socket=%1/mysql.socket").arg(socketDirectory);
|
|
||||||
+ arguments << QStringLiteral("--socket=%1").arg(socketFile);
|
|
||||||
+ arguments << QStringLiteral("--pid-file=%1").arg(pidFileName);
|
|
||||||
#else
|
|
||||||
arguments << QString::fromLatin1("--shared-memory");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// If mysql.socket file does not exists, then we must start the server,
|
|
||||||
// otherwise we reconnect to it
|
|
||||||
- if (!QFile::exists(QStringLiteral("%1/mysql.socket").arg(socketDirectory))) {
|
|
||||||
+ if (!QFile::exists(socketFile)) {
|
|
||||||
// move mysql error log file out of the way
|
|
||||||
const QFileInfo errorLog(dataDir + QDir::separator() + QLatin1String("mysql.err"));
|
|
||||||
if (errorLog.exists()) {
|
|
||||||
@@ -348,9 +385,11 @@ bool DbConfigMysql::startInternalServer()
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
- #ifndef Q_OS_WIN
|
|
||||||
+ connect(mDatabaseProcess, static_cast<void(QProcess::*)(int,QProcess::ExitStatus)>(&QProcess::finished),
|
|
||||||
+ this, &DbConfigMysql::processFinished);
|
|
||||||
+
|
|
||||||
+#ifndef Q_OS_WIN
|
|
||||||
// wait until mysqld has created the socket file (workaround for QTBUG-47475 in Qt5.5.0)
|
|
||||||
- QString socketFile = QStringLiteral("%1/mysql.socket").arg(socketDirectory);
|
|
||||||
int counter = 50; // avoid an endless loop in case mysqld terminated
|
|
||||||
while ((counter-- > 0) && !QFileInfo::exists(socketFile)) {
|
|
||||||
QThread::msleep(100);
|
|
||||||
@@ -358,7 +397,6 @@ bool DbConfigMysql::startInternalServer()
|
|
||||||
#endif
|
|
||||||
} else {
|
|
||||||
qCDebug(AKONADISERVER_LOG) << "Found mysql.socket file, reconnecting to the database";
|
|
||||||
- mDatabaseProcess = new QProcess();
|
|
||||||
}
|
|
||||||
|
|
||||||
const QLatin1String initCon("initConnection");
|
|
||||||
@@ -378,7 +416,7 @@ bool DbConfigMysql::startInternalServer()
|
|
||||||
if (opened) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
- if (mDatabaseProcess->waitForFinished(500)) {
|
|
||||||
+ if (mDatabaseProcess && mDatabaseProcess->waitForFinished(500)) {
|
|
||||||
qCCritical(AKONADISERVER_LOG) << "Database process exited unexpectedly during initial connection!";
|
|
||||||
qCCritical(AKONADISERVER_LOG) << "executable:" << mMysqldPath;
|
|
||||||
qCCritical(AKONADISERVER_LOG) << "arguments:" << arguments;
|
|
||||||
@@ -459,12 +497,33 @@ bool DbConfigMysql::startInternalServer()
|
|
||||||
return success;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void DbConfigMysql::processFinished(int exitCode, QProcess::ExitStatus exitStatus)
|
|
||||||
+{
|
|
||||||
+ Q_UNUSED(exitCode);
|
|
||||||
+ Q_UNUSED(exitStatus);
|
|
||||||
+
|
|
||||||
+ qCCritical(AKONADISERVER_LOG) << "database server stopped unexpectedly";
|
|
||||||
+
|
|
||||||
+#ifndef Q_OS_WIN
|
|
||||||
+ // when the server stopped unexpectedly, make sure to remove the stale socket file since otherwise
|
|
||||||
+ // it can not be started again
|
|
||||||
+ const QString socketDirectory = Utils::preferredSocketDirectory(StandardDirs::saveDir("data", QStringLiteral("db_misc")));
|
|
||||||
+ const QString socketFile = QStringLiteral("%1/mysql.socket").arg(socketDirectory);
|
|
||||||
+ QFile::remove(socketFile);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ QCoreApplication::quit();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
void DbConfigMysql::stopInternalServer()
|
|
||||||
{
|
|
||||||
if (!mDatabaseProcess) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ disconnect(mDatabaseProcess, static_cast<void(QProcess::*)(int,QProcess::ExitStatus)>(&QProcess::finished),
|
|
||||||
+ this, &DbConfigMysql::processFinished);
|
|
||||||
+
|
|
||||||
// first, try the nicest approach
|
|
||||||
if (!mCleanServerShutdownCommand.isEmpty()) {
|
|
||||||
QProcess::execute(mCleanServerShutdownCommand);
|
|
||||||
diff --git a/src/server/storage/dbconfigmysql.h b/src/server/storage/dbconfigmysql.h
|
|
||||||
index 27841e8..a25f28b 100644
|
|
||||||
--- a/src/server/storage/dbconfigmysql.h
|
|
||||||
+++ b/src/server/storage/dbconfigmysql.h
|
|
||||||
@@ -21,14 +21,16 @@
|
|
||||||
#define DBCONFIGMYSQL_H
|
|
||||||
|
|
||||||
#include "dbconfig.h"
|
|
||||||
-
|
|
||||||
-class QProcess;
|
|
||||||
+#include <QObject>
|
|
||||||
+#include <QProcess>
|
|
||||||
|
|
||||||
namespace Akonadi {
|
|
||||||
namespace Server {
|
|
||||||
|
|
||||||
-class DbConfigMysql : public DbConfig
|
|
||||||
+class DbConfigMysql : public QObject, public DbConfig
|
|
||||||
{
|
|
||||||
+ Q_OBJECT
|
|
||||||
+
|
|
||||||
public:
|
|
||||||
DbConfigMysql();
|
|
||||||
|
|
||||||
@@ -75,6 +77,9 @@ public:
|
|
||||||
/// reimpl
|
|
||||||
void initSession(const QSqlDatabase &database) Q_DECL_OVERRIDE;
|
|
||||||
|
|
||||||
+private Q_SLOTS:
|
|
||||||
+ void processFinished(int exitCode, QProcess::ExitStatus exitStatus);
|
|
||||||
+
|
|
||||||
private:
|
|
||||||
int parseCommandLineToolsVersion() const;
|
|
||||||
|
|
||||||
--
|
|
||||||
cgit v0.11.2
|
|
Loading…
Reference in New Issue
Block a user