Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37799853
en ru br
Репозитории ALT
5.1: 1.3.1-alt4.M51.1
4.1: 1.0.0-alt0.M41.1
www.altlinux.org/Changes

Группа :: Базы Данных
Пакет: akonadi

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: akonadi-1.3.1-t1111602-fix-add-of-missing-tables.patch
Скачать


Index: server/src/storage/dbconfig.cpp
===================================================================
--- server/src/storage/dbconfig.cpp     (revision 1111598)
+++ server/src/storage/dbconfig.cpp     (working copy)
@@ -299,3 +299,15 @@
     return sInstance()->mCleanServerShutdownCommand;
 }
 
+QStringList DbConfig::mysqldSearchPath()
+{
+const QStringList mysqldSearchPath = QStringList()
+  << QLatin1String("/usr/sbin")
+  << QLatin1String("/usr/local/sbin")
+  << QLatin1String("/usr/local/libexec")
+  << QLatin1String("/usr/libexec")
+  << QLatin1String("/opt/mysql/libexec")
+  << QLatin1String("/opt/local/lib/mysql5/bin");
+
+    return mysqldSearchPath ;
+}
Index: server/src/storage/dbconfig.h
===================================================================
--- server/src/storage/dbconfig.h       (revision 1111598)
+++ server/src/storage/dbconfig.h       (working copy)
@@ -76,6 +76,12 @@
    * exists.
    */
   QString cleanServerShutdownCommand();
+
+  /**
+   * Returns the path where mysql binaries are searched
+   */
+  QStringList mysqldSearchPath() ;
+
 }
 
 #endif
Index: server/src/akonadi.cpp
===================================================================
--- server/src/akonadi.cpp      (revision 1111598)
+++ server/src/akonadi.cpp      (working copy)
@@ -368,12 +368,18 @@
 void AkonadiServer::startMysqlDatabaseProcess()
 {
   const QString mysqldPath = DbConfig::serverPath();
+  const QStringList mysqldSearchPath = DbConfig::mysqldSearchPath();
 
   const QString dataDir = XdgBaseDirs::saveDir( "data", QLatin1String( "akonadi/db_data" ) );
   const QString akDir   = XdgBaseDirs::saveDir( "data", QLatin1String( "akonadi/" ) );
   const QString miscDir = XdgBaseDirs::saveDir( "data", QLatin1String( "akonadi/db_misc" ) );
   const QString fileDataDir = XdgBaseDirs::saveDir( "data", QLatin1String( "akonadi/file_db_data" ) );
+  const QString mMysqlInstallDbPath = XdgBaseDirs::findExecutableFile( QLatin1String( "mysql_install_db" ), mysqldSearchPath );
+  akDebug() << "Found mysql_install_db: " << mMysqlInstallDbPath;
+  const QString mMysqlUpgradeDBPath = XdgBaseDirs::findExecutableFile( QLatin1String( "mysql_upgrade" ), mysqldSearchPath );
+  akDebug() << "Found mysql_upgrade: " << mMysqlUpgradeDBPath;
 
+
   // generate config file
   const QString globalConfig = XdgBaseDirs::findResourceFile( "config", QLatin1String( "akonadi/mysql-global.conf" ) );
   const QString localConfig  = XdgBaseDirs::findResourceFile( "config", QLatin1String( "akonadi/mysql-local.conf" ) );
@@ -443,6 +449,16 @@
     }
   }
 
+  // first run, some MySQL versions need a mysql_install_db run for that
+  if ( QDir( dataDir ).entryList( QDir::NoDotAndDotDot | QDir::AllEntries ).isEmpty() && !mMysqlInstallDbPath.isEmpty() ) {
+    const QStringList arguments = QStringList() << QString::fromLatin1( "--force" ) << QString::fromLatin1( "--defaults-file=/etc/akonadi/mysql-global.conf") <<  QString::fromLatin1( "--datadir=%1/" ).arg( dataDir ); 
+    QProcess::execute( mMysqlInstallDbPath, arguments );
+  } 
+  else if ( !mMysqlUpgradeDBPath.isEmpty() ) {
+    const QStringList arguments = QStringList() << QString::fromLatin1( "--socket=%1/mysql.socket" ).arg( miscDir );
+    QProcess::execute( mMysqlUpgradeDBPath, arguments );
+  }
+
   // clear mysql ib_logfile's in case innodb_log_file_size option changed in last confUpdate
   if ( confUpdate ) {
       QFile(dataDir + QDir::separator() + QString::fromLatin1( "ib_logfile0" )).remove();
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin