- Fix two serious bugs with local MySQL backend:

* let Akonadi install default 'mysql' database;
  * lower 'wait_timeout' to avoid overflow and avoid premature
    connection closing.
- Add update instructions to UPDATING. [1]
- Convert to OPTIONSng.
- Bump PORTREVISION.

KMail 2 and other Akonadi-enabled programs are now working
successfully. Thanks to Dwayne MacKinnon and Mel Flynn who helped
investigating the bug.

Reviewed by:	rakuco [1]
This commit is contained in:
Alberto Villa 2012-06-15 01:36:07 +00:00
parent 42201a3a02
commit eb90251931
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=299296
3 changed files with 63 additions and 12 deletions

View File

@ -5,6 +5,35 @@ they are unavoidable.
You should get into the habit of checking this file for changes each time
you update your ports collection, before attempting any port upgrades.
20120615:
AFFECTS: users of databases/akonadi
AUTHOR: kde@FreeBSD.org
The latest Akonadi update includes critical bug fixes. Manual
intervention is required for people using local MySQL database (the
default configuration) as backend:
$ akonadictl stop
Wait a bit, and make sure that akonadiserver and akonadi_control are
not running. Kill them if needed. Then, you have two alternatives:
$ mysql_install_db --force \
--defaults-file=~/.local/share/akonadi/mysql.conf \
--datadir=~/.local/share/akonadi/db_data \
--basedir=$(dirname `dirname $(which mysql_install_db)`)
$ rm ~/.local/share/akonadi/mysql.conf
...or...
$ rm -r ~/.local/share/akonadi
In the latter case, Akonadi will have to recache your personal data
(might take a while). Akonadi is only a cache, no data will be lost.
Then:
$ akonadictl start
20120613:
AFFECTS: users of graphics/djvulibre and graphics/djvulibre-nox11
AUTHOR: bf@FreeBSD.org

View File

@ -6,7 +6,7 @@
PORTNAME= akonadi
PORTVERSION= 1.7.2
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= databases kde ipv6
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${PORTNAME}/src/
@ -23,11 +23,11 @@ LIB_DEPENDS= boost_thread:${PORTSDIR}/devel/boost-libs
LIB_DEPENDS+= execinfo.1:${PORTSDIR}/devel/libexecinfo
BUILD_DEPENDS= xsltproc:${PORTSDIR}/textproc/libxslt
USE_BZIP2= yes
USE_QT4= corelib network qtestlib dbus gui sql \
qmake_build moc_build rcc_build uic_build
USE_KDE4= kdehier kdeprefix sharedmime automoc4 soprano
KDE4_BUILDENV= yes
USE_QT4= dbus gui network qtestlib sql \
moc_build qmake_build rcc_build uic_build
USE_BZIP2= yes
CMAKE_ARGS+= -DAKONADI_BUILD_TESTS:BOOL=FALSE \
-DINSTALL_QSQLITE_IN_QT_PREFIX:BOOL=TRUE \
-DCMAKE_REQUIRED_INCLUDES:STRING="${LOCALBASE}/include"
@ -35,26 +35,31 @@ MAKE_JOBS_UNSAFE= yes
PLIST_SUB+= QT_PREFIX=${QT_PREFIX}
OPTIONS= MYSQL "Install MySQL plugin and server (recommended)" on \
PGSQL "Install PostgreSQL plugin" off \
SQLITE "Enable SQLite backend (unused)" off
OPTIONS_MULTI= BACKEND
OPTIONS_MULTI_BACKEND= MYSQL PGSQL SQLITE
MYSQL_DESC= Install MySQL Qt plugin and server
PGSQL_DESC= Install PostgreSQL Qt plugin
SQLITE_DESC= Enable SQLite backend (unused)
OPTIONS_DEFAULT= MYSQL
.include <bsd.port.options.mk>
.ifndef(WITHOUT_MYSQL)
.if ${PORT_OPTIONS:MMYSQL}
USE_MYSQL= server
USE_QT4+= sql-mysql_run
.endif
.ifdef(WITH_PGSQL)
.if ${PORT_OPTIONS:MPGSQL}
# Do not add a dependency on PostgreSQL server as someone preferring
# it over MySQL might like to use some advanced configuration like a
# it over MySQL might like to use some advanced configuration, like a
# remote server.
#USE_PGSQL= server
USE_QT4+= sql-pgsql_run
.endif
.ifdef(WITH_SQLITE)
.if ${PORT_OPTIONS:MSQLITE}
USE_SQLITE= 3
PLIST_SUB+= SQLITE=""
.else
@ -62,7 +67,7 @@ PLIST_SUB+= SQLITE="@comment "
.endif
post-patch:
.ifndef(WITH_SQLITE)
.if ${PORT_OPTIONS:MSQLITE} == ""
${REINPLACE_CMD} -e '/find_package(Sqlite)/ d' \
${PATCH_WRKSRC}/CMakeLists.txt
.endif
@ -70,6 +75,12 @@ post-patch:
${PATCH_WRKSRC}/CMakeLists.txt
${REINPLACE_CMD} -e '/find_program/ s|mysqld|mysqld_safe ${LOCALBASE}/bin|g' \
${PATCH_WRKSRC}/server/CMakeLists.txt
${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \
${PATCH_WRKSRC}/server/src/storage/dbconfigmysql.cpp
# MySQL seems to have this limit on FreeBSD (same of Windows
# but undocumented and unstable).
${REINPLACE_CMD} -e '/wait_timeout/ s|31536000|2147483|' \
${PATCH_WRKSRC}/server/src/storage/*.conf
# Prevent updating MIME during build.
${REINPLACE_CMD} -e '/^update_xdg_mimetypes/ d; /SharedMimeInfo/ d' \
${PATCH_WRKSRC}/CMakeLists.txt

View File

@ -0,0 +1,11 @@
--- ./server/src/storage/dbconfigmysql.cpp.orig 2012-06-13 02:11:19.473370856 +0200
+++ ./server/src/storage/dbconfigmysql.cpp 2012-06-13 02:11:50.113468897 +0200
@@ -242,7 +242,7 @@
// first run, some MySQL versions need a mysql_install_db run for that
const QString confFile = XdgBaseDirs::findResourceFile( "config", QLatin1String("akonadi/mysql-global.conf" ));
if ( QDir( dataDir ).entryList( QDir::NoDotAndDotDot | QDir::AllEntries ).isEmpty() && !mMysqlInstallDbPath.isEmpty() ) {
- const QStringList arguments = QStringList() << QString::fromLatin1( "--force" ) << QString::fromLatin1( "--defaults-file=%1").arg(confFile) << QString::fromLatin1( "--datadir=%1/" ).arg( dataDir );
+ const QStringList arguments = QStringList() << QString::fromLatin1( "--force" ) << QString::fromLatin1( "--defaults-file=%1").arg(confFile) << QString::fromLatin1( "--datadir=%1/" ).arg( dataDir ) << QString::fromLatin1( "--basedir=%%LOCALBASE%%" );
QProcess::execute( mMysqlInstallDbPath, arguments );
}