Hello community,

here is the log from the commit of package akonadi-runtime for openSUSE:Factory 
checked in at 2013-05-07 07:21:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/akonadi-runtime (Old)
 and      /work/SRC/openSUSE:Factory/.akonadi-runtime.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "akonadi-runtime"

Changes:
--------
--- /work/SRC/openSUSE:Factory/akonadi-runtime/akonadi-runtime.changes  
2012-12-28 14:56:22.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.akonadi-runtime.new/akonadi-runtime.changes     
2013-05-07 07:21:12.000000000 +0200
@@ -1,0 +2,12 @@
+Mon May  6 09:42:28 UTC 2013 - [email protected]
+
+- Update to 1.9.2
+  * Add option to FETCH to ignore external retrieval failures.
+  * Properly restrict external payload removal.
+  * Add buildsystem option to choose between Qt4 and Qt5.
+ * Changes from version 1.9.1:
+  * Disable query cache for Sqlite.
+  * Handle missing mysqld better.
+  * Ignore my.cnf settings when using the internal MySQL server.
+
+-------------------------------------------------------------------

Old:
----
  akonadi-1.9.0.tar.bz2

New:
----
  akonadi-1.9.2.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ akonadi-runtime.spec ++++++
--- /var/tmp/diff_new_pack.QTXTci/_old  2013-05-07 07:21:14.000000000 +0200
+++ /var/tmp/diff_new_pack.QTXTci/_new  2013-05-07 07:21:14.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package akonadi-runtime
 #
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           akonadi-runtime
-Version:        1.9.0
+Version:        1.9.2
 Release:        0
 %define rversion %{version}
 Summary:        PIM Storage Service

++++++ akonadi-1.9.0.tar.bz2 -> akonadi-1.9.2.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/CMakeLists.txt 
new/akonadi-1.9.2/CMakeLists.txt
--- old/akonadi-1.9.0/CMakeLists.txt    2012-12-23 11:11:44.000000000 +0100
+++ new/akonadi-1.9.2/CMakeLists.txt    2013-05-05 10:40:58.000000000 +0200
@@ -21,6 +21,7 @@
 option(AKONADI_USE_STRIGI_SEARCH "Build Akonadi with strigi as search engine." 
FALSE)
 option(INSTALL_QSQLITE_IN_QT_PREFIX "Install the QSQLite plugin in 
QT_PLUGIN_DIR" FALSE)
 option(STATIC_LIBRARY "Build Akonadi as a static library." FALSE)
+option(QT5_BUILD "Build Akonadi using the Qt5 framework" FALSE)
 
 if(NOT DEFINED DATABASE_BACKEND)
   set(DATABASE_BACKEND "MYSQL" CACHE STRING "The default database backend to 
use for Akonadi. Can be either MYSQL, POSTGRES or SQLITE")
@@ -72,7 +73,7 @@
 
 set(AKONADI_VERSION_MAJOR "1")
 set(AKONADI_VERSION_MINOR "9")
-set(AKONADI_VERSION_PATCH "0")
+set(AKONADI_VERSION_PATCH "2")
 set(AKONADI_VERSION 
"${AKONADI_VERSION_MAJOR}.${AKONADI_VERSION_MINOR}.${AKONADI_VERSION_PATCH}")
 set(AKONADI_VERSION_STRING "${AKONADI_VERSION}")
 
@@ -125,11 +126,8 @@
 ############### Find what we need ###############
 
 #### Qt 4 and 5 ####
-set(QT_USE_IMPORTED_TARGETS TRUE) # Qt 4 only
-set(QT_MIN_VERSION 4.6.0)         # Qt 4 only
-
-find_package(Qt5Core QUIET)
-if (Qt5Core_FOUND)
+if(QT5_BUILD)
+  find_package(Qt5Core REQUIRED)
   find_package(Qt5Gui REQUIRED)
   find_package(Qt5Widgets REQUIRED)
   find_package(Qt5Sql REQUIRED)
@@ -137,7 +135,6 @@
   find_package(Qt5Xml REQUIRED)
   find_package(Qt5DBus REQUIRED)
   find_package(Qt5Test REQUIRED)
-  set(QT5_BUILD TRUE)
 
   include("cmake/modules/ECMQt4To5Porting.cmake")
   include_directories(${QT_INCLUDES}) # TODO: Port away from this.
@@ -146,16 +143,19 @@
     message(FATAL_ERROR "Akonadi Qt 5 build requires at least CMake version 
2.8.9")
   endif()
 
+  if (Qt5_POSITION_INDEPENDENT_CODE)
+    set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+  endif()
+
   set(QT_QTTEST_LIBRARIES Qt5::Test)
 else()
+  set(QT_USE_IMPORTED_TARGETS TRUE) # Qt 4 only
+  set(QT_MIN_VERSION 4.6.0)         # Qt 4 only
+
   find_package(Qt4 REQUIRED)
   include(${QT_USE_FILE})
 endif()
 
-if (Qt5_POSITION_INDEPENDENT_CODE)
-  set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-endif()
-
 # Missing in FindQt4.cmake until Dec 2011: setting QT_NO_DEBUG_OUTPUT
 if(CMAKE_BUILD_TYPE)
   string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_TOLOWER)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/INSTALL new/akonadi-1.9.2/INSTALL
--- old/akonadi-1.9.0/INSTALL   2012-12-23 11:11:44.000000000 +0100
+++ new/akonadi-1.9.2/INSTALL   2013-05-05 10:40:58.000000000 +0200
@@ -25,6 +25,19 @@
 
 That's all :)
 
+=== Build Options ===
+
+The following options are available when running CMake:
+
+* AKONADI_BUILD_TESTS (Default: TRUE): Build the Akonadi unit tests
+* AKONADI_BUILD_QSQLITE (Default: TRUE): Build the SQLite backend
+* AKONADI_USE_STRIGI_SEARCH (Default: FALSE): Only useful for certain cases 
(eg: WINCE builds), don't use it
+* INSTALL_QSQLITE_IN_QT_PREFIX (Default: FALSE): Useful for distributions.
+  Once enabled, the qsqlite3 backend will be installed in 
${QT_PLUGINS_DIR}/sqldrivers
+* STATIC_LIBRARY (Default: FALSE): Build the Akonadi server libraries 
statically. Only useful for certain cases (eg: WINCE builds).
+* DATABASE_BACKEND (Default: MYSQL, available: MYSQL, POSTGRES, SQLITE): 
Define which database driver to use by default.
+  MYSQL is preferred, SQLITE should be avoided.
+
 === Build Requirements ===
 
 Required:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/Mainpage.dox 
new/akonadi-1.9.2/Mainpage.dox
--- old/akonadi-1.9.0/Mainpage.dox      2012-12-23 11:11:44.000000000 +0100
+++ new/akonadi-1.9.2/Mainpage.dox      2013-05-05 10:40:58.000000000 +0200
@@ -315,6 +315,6 @@
 
 // DOXYGEN_EXCLUDE = sqlplugin server/control server/akonadictl server/tests
 // DOXYGEN_PROJECTNAME=Akonadi
-// DOXYGEN_PROJECTVERSION=1.9.0
+// DOXYGEN_PROJECTVERSION=1.9.2
 
 // vim:ts=4:sw=4:expandtab:filetype=doxygen
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/NEWS new/akonadi-1.9.2/NEWS
--- old/akonadi-1.9.0/NEWS      2012-12-23 11:11:44.000000000 +0100
+++ new/akonadi-1.9.2/NEWS      2013-05-05 10:40:58.000000000 +0200
@@ -1,3 +1,15 @@
+1.9.2                             05-May-2013
+---------------------------------------------
+- Add option to FETCH to ignore external retrieval failures.
+- Properly restrict external payload removal.
+- Add buildsystem option to choose between Qt4 and Qt5.
+
+1.9.1                           02-March-2013
+---------------------------------------------
+- Disable query cache for Sqlite.
+- Handle missing mysqld better.
+- Ignore my.cnf settings when using the internal MySQL server.
+
 1.9.0                        23-December-2012
 ---------------------------------------------
 - Respect collection cache policy refresh interval for collection tree sync.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/README.sqlite 
new/akonadi-1.9.2/README.sqlite
--- old/akonadi-1.9.0/README.sqlite     2012-12-23 11:11:44.000000000 +0100
+++ new/akonadi-1.9.2/README.sqlite     2013-05-05 10:40:58.000000000 +0200
@@ -5,9 +5,10 @@
 these changes should be pushed upstream eventually.
 
 == INSTALL ==
-When Sqlite is found the custom driver will be build and installed at:
+When Sqlite is found, the custom driver will be build and installed in:
 
-${CMAKE_INSTALL_PREFIX}/lib/kde4/plugins/sqldrivers
+${CMAKE_INSTALL_PREFIX}/lib/plugins/sqldrivers or ${QT_PLUGINS_DIR}/sqldrivers
+if you enable the INSTALL_QSQLITE_IN_QT_PREFIX option when running CMake.
 
 The next thing you have to do is add that path (if it isn't already) to your
 QT_PLUGIN_PATH environment variable.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/libs/protocol_p.h 
new/akonadi-1.9.2/libs/protocol_p.h
--- old/akonadi-1.9.0/libs/protocol_p.h 2012-12-23 11:11:44.000000000 +0100
+++ new/akonadi-1.9.2/libs/protocol_p.h 2013-05-05 10:40:58.000000000 +0200
@@ -78,6 +78,7 @@
 #define AKONADI_PARAM_NAME "NAME"
 #define AKONADI_PARAM_RESOURCE "RESOURCE"
 #define AKONADI_PARAM_ANCESTORS "ANCESTORS"
+#define AKONADI_PARAM_IGNOREERRORS "IGNOREERRORS"
 
 #define AKONADI_PARAM_PERSISTENTSEARCH "PERSISTENTSEARCH"
 #define AKONADI_PARAM_PERSISTENTSEARCH_QUERYLANG "QUERYLANGUAGE"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/server/src/akonadiconnection.cpp 
new/akonadi-1.9.2/server/src/akonadiconnection.cpp
--- old/akonadi-1.9.0/server/src/akonadiconnection.cpp  2012-12-23 
11:11:44.000000000 +0100
+++ new/akonadi-1.9.2/server/src/akonadiconnection.cpp  2013-05-05 
10:40:58.000000000 +0200
@@ -97,7 +97,7 @@
     connect( m_socket, SIGNAL(disconnected()),
              this, SLOT(slotDisconnected()), Qt::DirectConnection );
 
-    writeOut( "* OK Akonadi Almost IMAP Server [PROTOCOL 29]");
+    writeOut( "* OK Akonadi Almost IMAP Server [PROTOCOL 30]");
 
     m_streamParser = new ImapStreamParser( m_socket );
     m_streamParser->setTracerIdentifier( m_identifier );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/server/src/handler/fetchhelper.cpp 
new/akonadi-1.9.2/server/src/handler/fetchhelper.cpp
--- old/akonadi-1.9.0/server/src/handler/fetchhelper.cpp        2012-12-23 
11:11:44.000000000 +0100
+++ new/akonadi-1.9.2/server/src/handler/fetchhelper.cpp        2013-05-05 
10:40:58.000000000 +0200
@@ -64,6 +64,7 @@
   mMTimeRequested = false;
   mExternalPayloadSupported = false;
   mRemoteRevisionRequested = false;
+  mIgnoreErrors = false;
 }
 
 void FetchHelper::setStreamParser( ImapStreamParser *parser )
@@ -224,7 +225,7 @@
     retriever.setScope( mScope );
     retriever.setRetrieveParts( payloadList );
     retriever.setRetrieveFullPayload( mFullPayload );
-    if ( !retriever.exec() ) { // There we go, retrieve the missing parts from 
the resource.
+    if ( !retriever.exec() && !mIgnoreErrors ) { // There we go, retrieve the 
missing parts from the resource.
       if (mConnection->resourceContext().isValid())
         throw HandlerException( QString::fromLatin1("Unable to fetch item from 
backend (collection %1, resource %2) : %3")
                 .arg(mConnection->selectedCollectionId())
@@ -314,6 +315,8 @@
     if ( mAncestorDepth > 0 )
       attributes.append( HandlerHelper::ancestorsToByteArray( mAncestorDepth, 
ancestorsForItem( parentCollectionId ) ) );
 
+    bool skipItem = false;
+
     while ( partQuery.isValid() ) {
       const qint64 id = partQuery.value( PartQueryPimIdColumn ).toLongLong();
       if ( id > pimItemId ) {
@@ -325,6 +328,12 @@
       QByteArray partName = Utils::variantToByteArray( partQuery.value( 
PartQueryNameColumn ) );
       QByteArray part = Utils::variantToByteArray( partQuery.value( 
PartQueryNameColumn ) );
       QByteArray data = Utils::variantToByteArray( partQuery.value( 
PartQueryDataColumn ) );
+      if ( mIgnoreErrors && data.isEmpty() ) {
+        //We wanted the payload, couldn't get it, and are ignoring errors. 
Skip the item.
+        akDebug() << id << " no payload";
+        skipItem = true;
+        break;
+      }
       bool partIsExternal = partQuery.value( PartQueryExternalColumn 
).toBool();
       if ( !mExternalPayloadSupported && partIsExternal ) //external payload 
not supported by the client, translate the data
         data = PartHelper::translateData( data, partIsExternal );
@@ -350,6 +359,11 @@
       partQuery.next();
     }
 
+    if (skipItem) {
+      itemQuery.next();
+      continue;
+    }
+
     // IMAP protocol violation: should actually be the sequence number
     QByteArray attr = QByteArray::number( pimItemId ) + ' ' + 
responseIdentifier + " (";
     attr += ImapParser::join( attributes, " " ) + ')';
@@ -422,6 +436,8 @@
         mFullPayload = true;
       } else if ( buffer == AKONADI_PARAM_ANCESTORS ) {
         mAncestorDepth = HandlerHelper::parseDepth( 
mStreamParser->readString() );
+      } else if ( buffer == AKONADI_PARAM_IGNOREERRORS ) {
+        mIgnoreErrors = true;
       } else {
         throw HandlerException( "Invalid command argument" );
       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/server/src/handler/fetchhelper.h 
new/akonadi-1.9.2/server/src/handler/fetchhelper.h
--- old/akonadi-1.9.0/server/src/handler/fetchhelper.h  2012-12-23 
11:11:44.000000000 +0100
+++ new/akonadi-1.9.2/server/src/handler/fetchhelper.h  2013-05-05 
10:40:58.000000000 +0200
@@ -74,6 +74,7 @@
     bool mMTimeRequested;
     bool mExternalPayloadSupported;
     bool mRemoteRevisionRequested;
+    bool mIgnoreErrors;
 };
 
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/server/src/storage/datastore.cpp 
new/akonadi-1.9.2/server/src/storage/datastore.cpp
--- old/akonadi-1.9.0/server/src/storage/datastore.cpp  2012-12-23 
11:11:44.000000000 +0100
+++ new/akonadi-1.9.2/server/src/storage/datastore.cpp  2013-05-05 
10:40:58.000000000 +0200
@@ -284,10 +284,11 @@
   // remove all external payload parts
   QueryBuilder qb( Part::tableName(), QueryBuilder::Select );
   qb.addColumn( Part::dataFullColumnName() );
-  qb.addValueCondition( Part::externalFullColumnName(), Query::Equals, true );
-  qb.addValueCondition( Part::dataFullColumnName(), Query::IsNot, QVariant() );
   qb.addJoin( QueryBuilder::InnerJoin, PimItem::tableName(), 
Part::pimItemIdFullColumnName(), PimItem::idFullColumnName() );
   qb.addJoin( QueryBuilder::InnerJoin, Collection::tableName(), 
PimItem::collectionIdFullColumnName(), Collection::idFullColumnName() );
+  qb.addValueCondition( Collection::idFullColumnName(), Query::Equals, 
collection.id() );
+  qb.addValueCondition( Part::externalFullColumnName(), Query::Equals, true );
+  qb.addValueCondition( Part::dataFullColumnName(), Query::IsNot, QVariant() );
   if ( !qb.exec() )
     return false;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/server/src/storage/dbconfigmysql.cpp 
new/akonadi-1.9.2/server/src/storage/dbconfigmysql.cpp
--- old/akonadi-1.9.0/server/src/storage/dbconfigmysql.cpp      2012-12-23 
11:11:44.000000000 +0100
+++ new/akonadi-1.9.2/server/src/storage/dbconfigmysql.cpp      2013-05-05 
10:40:58.000000000 +0200
@@ -78,7 +78,8 @@
   const QString mysqladminPath = XdgBaseDirs::findExecutableFile( 
QLatin1String( "mysqladmin" ), mysqldSearchPath );
   if ( !mysqladminPath.isEmpty() ) {
 #ifndef Q_OS_WIN
-    defaultCleanShutdownCommand = QString::fromLatin1( "%1 shutdown 
--socket=%2/mysql.socket" )
+    defaultCleanShutdownCommand = QString::fromLatin1( 
"--defaults-file=%1/mysql.conf %2 shutdown --socket=%3/mysql.socket" )
+                                      .arg( AkStandardDirs::saveDir( "data" ) )
                                       .arg( mysqladminPath )
                                       .arg( socketDirectory );
 #else
@@ -262,6 +263,10 @@
   arguments << QString::fromLatin1( "--shared-memory" );
 #endif
 
+  if (mysqldPath.isEmpty()) {
+    akError() << "mysqld not found. Please verify your installation";
+    return;
+  }
   mDatabaseProcess = new QProcess;
   mDatabaseProcess->start( mysqldPath, arguments );
   if ( !mDatabaseProcess->waitForStarted() ) {
@@ -299,7 +304,8 @@
     if ( opened ) {
 
       if ( !mMysqlCheckPath.isEmpty() ) {
-        const QStringList arguments = QStringList() << QLatin1String( 
"--check-upgrade" )
+        const QStringList arguments = QStringList() << QString::fromLatin1( 
"--defaults-file=%1/mysql.conf" ).arg( akDir )
+                                                    << QLatin1String( 
"--check-upgrade" )
                                                     << QLatin1String( 
"--all-databases" )
                                                     << QLatin1String( 
"--auto-repair" )
                                                     << QString::fromLatin1( 
"--socket=%1/mysql.socket" ).arg( socketDirectory );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/server/src/storage/querycache.cpp 
new/akonadi-1.9.2/server/src/storage/querycache.cpp
--- old/akonadi-1.9.0/server/src/storage/querycache.cpp 2012-12-23 
11:11:44.000000000 +0100
+++ new/akonadi-1.9.2/server/src/storage/querycache.cpp 2013-05-05 
10:40:58.000000000 +0200
@@ -18,6 +18,8 @@
  */
 
 #include "querycache.h"
+#include "dbtype.h"
+#include "datastore.h"
 
 #include <QSqlQuery>
 #include <QThreadStorage>
@@ -36,7 +38,11 @@
 
 bool QueryCache::contains(const QString& queryStatement)
 {
-  return cache()->contains( queryStatement );
+  if ( DbType::type( DataStore::self()->database() ) == DbType::Sqlite ) {
+    return false;
+  } else {
+    return cache()->contains( queryStatement );
+  }
 }
 
 QSqlQuery QueryCache::query(const QString& queryStatement)
@@ -46,5 +52,7 @@
 
 void QueryCache::insert(const QString& queryStatement, const QSqlQuery& query)
 {
-  cache()->insert( queryStatement, query );
+  if ( DbType::type( DataStore::self()->database() ) != DbType::Sqlite ) {
+    cache()->insert( queryStatement, query );
+  }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-1.9.0/shared/akdebug.cpp 
new/akonadi-1.9.2/shared/akdebug.cpp
--- old/akonadi-1.9.0/shared/akdebug.cpp        2012-12-23 11:11:44.000000000 
+0100
+++ new/akonadi-1.9.2/shared/akdebug.cpp        2013-05-05 10:40:58.000000000 
+0200
@@ -156,7 +156,7 @@
     QFile fileOld( infoOld.absoluteFilePath() );
     const bool success = fileOld.remove();
     if ( !success )
-      qFatal( "Cannot remove old log file - running on a readlony filesystem 
maybe?" );
+      qFatal( "Cannot remove old log file - running on a readonly filesystem 
maybe?" );
   }
   QFileInfo info( sInstance()->errorLogFileName() );
   if ( info.exists() ) {

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to