summaryrefslogtreecommitdiffstats
path: root/source/l/akonadi
diff options
context:
space:
mode:
Diffstat (limited to 'source/l/akonadi')
-rw-r--r--source/l/akonadi/akonadi-mariadb-10.2.patch65
-rwxr-xr-xsource/l/akonadi/akonadi.SlackBuild20
-rw-r--r--source/l/akonadi/mysql-global.conf.patch21
-rw-r--r--source/l/akonadi/slack-desc8
4 files changed, 107 insertions, 7 deletions
diff --git a/source/l/akonadi/akonadi-mariadb-10.2.patch b/source/l/akonadi/akonadi-mariadb-10.2.patch
new file mode 100644
index 000000000..99b096fb3
--- /dev/null
+++ b/source/l/akonadi/akonadi-mariadb-10.2.patch
@@ -0,0 +1,65 @@
+commit 22c53fa2aa97c7f0b5d7a1947821c5b3aef9de0f
+Author: Heinz Wiesinger <pprkut@liwjatan.at>
+Date: Sun Sep 17 15:55:48 2017 +0200
+
+ Only remove init connections to the database on server shutdown.
+
+ With MariaDB 10.2 libmysqlclient was replaced with libmariadb that
+ changed how establishing database connections behaves. The MySQL
+ QSQL driver calls mysql_server_end() on QSqlDatabase::removeDatabase()
+ if the overall connection count dropped to 0 (which it does when
+ the init connection is removed).
+ A future QSqlDatabase:addDatabase() would call mysql_server_init()
+ again, but this no longer works with libmariadb as that one only
+ allows calling mysql_server_init() once. Future calls are simply
+ ignored.
+
+ In order to prevent this from happening we have to keep the
+ init connection open until the server shuts down, so the connection
+ count only drops to 0 at shutdown and mysql_server_end() isn't
+ called before.
+
+ This is a workaround for QTBUG-63108
+
+diff --git a/server/src/akonadi.cpp b/server/src/akonadi.cpp
+index 5369320c8..6d31f6ff4 100644
+--- a/server/src/akonadi.cpp
++++ b/server/src/akonadi.cpp
+@@ -370,12 +370,13 @@ void AkonadiServer::createDatabase()
+ db.close();
+ }
+ }
+- QSqlDatabase::removeDatabase( initCon );
+ }
+
+ void AkonadiServer::stopDatabaseProcess()
+ {
+ if ( !DbConfig::configuredDatabase()->useInternalServer() ) {
++ // closing initConnection this late to work around QTBUG-63108
++ QSqlDatabase::removeDatabase(QLatin1String("initConnection"));
+ return;
+ }
+
+diff --git a/server/src/storage/dbconfigmysql.cpp b/server/src/storage/dbconfigmysql.cpp
+index 10f99db70..36f1f3a42 100644
+--- a/server/src/storage/dbconfigmysql.cpp
++++ b/server/src/storage/dbconfigmysql.cpp
+@@ -395,8 +395,6 @@ void DbConfigMysql::startInternalServer()
+ db.close();
+ }
+ }
+-
+- QSqlDatabase::removeDatabase( initCon );
+ }
+
+ void DbConfigMysql::stopInternalServer()
+@@ -405,6 +403,9 @@ void DbConfigMysql::stopInternalServer()
+ return;
+ }
+
++ // closing initConnection this late to work around QTBUG-63108
++ QSqlDatabase::removeDatabase(QLatin1String("initConnection"));
++
+ // first, try the nicest approach
+ if ( !mCleanServerShutdownCommand.isEmpty() ) {
+ QProcess::execute( mCleanServerShutdownCommand );
diff --git a/source/l/akonadi/akonadi.SlackBuild b/source/l/akonadi/akonadi.SlackBuild
index 83a6b0a20..2f0fbe4db 100755
--- a/source/l/akonadi/akonadi.SlackBuild
+++ b/source/l/akonadi/akonadi.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for akonadi
# Copyright 2008 Robby Workman, Northport, Alabama, USA
-# Copyright 2008, 2009, 2010, 2011, 2015 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010, 2011, 2015, 2018 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,10 +23,11 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=akonadi
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-9}
NUMJOBS=${NUMJOBS:--j7}
@@ -42,6 +43,14 @@ if [ -z "$ARCH" ]; then
esac
fi
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
+ exit 0
+fi
+
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
@@ -59,7 +68,6 @@ else
LIBDIRSUFFIX=""
fi
-CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PKGNAM
@@ -76,6 +84,12 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Update mysql configuration
+zcat $CWD/mysql-global.conf.patch.gz | patch -p1 --verbose || exit 1
+
+# Work around problems with MariaDB 10.2
+zcat $CWD/akonadi-mariadb-10.2.patch.gz | patch -p1 --verbose || exit 1
+
# If we do not specify the correct QT_PLUGINS_DIR, then the application
# decides on using $QT4DIR/qt4/plugins instead.
mkdir -p build
diff --git a/source/l/akonadi/mysql-global.conf.patch b/source/l/akonadi/mysql-global.conf.patch
new file mode 100644
index 000000000..24bf6ea0c
--- /dev/null
+++ b/source/l/akonadi/mysql-global.conf.patch
@@ -0,0 +1,21 @@
+diff -r -u akonadi-1.13.0.orig/server/src/storage/mysql-global.conf akonadi-1.13.0/server/src/storage/mysql-global.conf
+--- akonadi-1.13.0.orig/server/src/storage/mysql-global.conf 2014-08-10 12:38:58.000000000 +0200
++++ akonadi-1.13.0/server/src/storage/mysql-global.conf 2017-08-31 19:43:35.000000000 +0200
+@@ -37,13 +37,13 @@
+ # use InnoDB for transactions and better crash recovery
+ default_storage_engine=innodb
+
+-# memory pool InnoDB uses to store data dictionary information and other internal data structures (default:1M)
+-# Deprecated in MySQL >= 5.6.3
+-innodb_additional_mem_pool_size=1M
++# memory pool InnoDB uses to store data dictionary information and other internal data structures (default:8M)
++# Deprecated in MySQL >= 5.6.3, removed in 5.7 (works in MariaDB)
++# innodb_additional_mem_pool_size=8M
+
+ # memory buffer InnoDB uses to cache data and indexes of its tables (default:128M)
+ # Larger values means less I/O
+-innodb_buffer_pool_size=80M
++innodb_buffer_pool_size=128M
+
+ # Create a .ibd file for each table (default:0)
+ innodb_file_per_table=1
diff --git a/source/l/akonadi/slack-desc b/source/l/akonadi/slack-desc
index d0c26bb62..e046a8876 100644
--- a/source/l/akonadi/slack-desc
+++ b/source/l/akonadi/slack-desc
@@ -1,8 +1,8 @@
# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
+# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.
|-----handy-ruler-----------------------------------------------------|
@@ -13,7 +13,7 @@ akonadi: and meta data providing concurrent read, write, and query access.
akonadi: It will provide a unique desktop wide object identification and
akonadi: retrieval.
akonadi:
-akonadi: Homepage: http://www.kdepim.org/akonadi/
+akonadi: Homepage: http://www.kdepim.org/akonadi/
akonadi:
akonadi:
akonadi: