From 3328847a34a2b714280e05155990101490f86b4c Mon Sep 17 00:00:00 2001 From: Rex Dieter Date: Feb 25 2009 14:02:33 +0000 Subject: - rev startup patch - BR: cmake >= 2.6.0 --- diff --git a/akonadi-1.1.1-startup-1.patch b/akonadi-1.1.1-startup-1.patch deleted file mode 100644 index 20a79c8..0000000 --- a/akonadi-1.1.1-startup-1.patch +++ /dev/null @@ -1,53 +0,0 @@ -diff -up akonadi-1.1.1/server/src/akonadi.cpp.startup akonadi-1.1.1/server/src/akonadi.cpp ---- akonadi-1.1.1/server/src/akonadi.cpp.startup 2009-01-21 12:29:03.000000000 -0600 -+++ akonadi-1.1.1/server/src/akonadi.cpp 2009-02-24 11:58:47.000000000 -0600 -@@ -226,24 +226,30 @@ void AkonadiServer::startDatabaseProcess - if ( globalConfig.isEmpty() ) - akFatal() << "Did not find MySQL server default configuration (mysql-global.conf)"; - QFile globalFile( globalConfig ); -- QFile actualFile( actualConfig ); -- if ( globalFile.open( QFile::ReadOnly ) && actualFile.open( QFile::WriteOnly ) ) { -+ QFile localFile ( localConfig ); -+ QFile actualFile ( actualConfig ); -+ bool confUpdate = false; -+ // update conf only if either global (or local) is newer than actual -+ if ( ( ( QFileInfo(globalFile).lastModified() > QFileInfo(actualFile).lastModified()) || -+ ( QFileInfo(localFile).lastModified() > QFileInfo(actualFile).lastModified()) ) && -+ ( globalFile.open( QFile::ReadOnly ) && actualFile.open( QFile::WriteOnly ) ) ) { - actualFile.write( globalFile.readAll() ); - if ( !localConfig.isEmpty() ) { -- QFile localFile( localConfig ); - if ( localFile.open( QFile::ReadOnly ) ) { - actualFile.write( localFile.readAll() ); -- localFile.close(); - } - } -- actualFile.close(); -- globalFile.close(); -+ confUpdate = true; - } else { - akError() << "Unable to create MySQL server configuration file."; - akError() << "This means that either the default configuration file (mysql-global.conf) was not readable"; - akFatal() << "or the target file (mysql.conf) could not be written."; - } - -+ globalFile.close(); -+ localFile.close(); -+ actualFile.close(); -+ - // MySQL doesn't like world writeable config files (which makes sense), but - // our config file somehow ends up being world-writable on some systems for no - // apparent reason nevertheless, so fix that -@@ -276,6 +282,12 @@ void AkonadiServer::startDatabaseProcess - } - } - -+ // 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(); -+ QFile(dataDir + QDir::separator() + QString::fromLatin1( "ib_logfile1" )).remove(); -+ } -+ - // synthesize the mysqld command - QStringList arguments; - arguments << QString::fromLatin1( "--defaults-file=%1/mysql.conf" ).arg( akDir ); diff --git a/akonadi-1.1.1-startup-2.patch b/akonadi-1.1.1-startup-2.patch new file mode 100644 index 0000000..72614a6 --- /dev/null +++ b/akonadi-1.1.1-startup-2.patch @@ -0,0 +1,61 @@ +--- branches/akonadi/1.1/server/src/akonadi.cpp 2009/01/03 16:17:31 905029 ++++ branches/akonadi/1.1/server/src/akonadi.cpp 2009/02/25 10:55:29 931467 +@@ -225,23 +225,30 @@ + const QString actualConfig = XdgBaseDirs::saveDir( "data", QLatin1String( "akonadi" ) ) + QLatin1String("/mysql.conf"); + if ( globalConfig.isEmpty() ) + akFatal() << "Did not find MySQL server default configuration (mysql-global.conf)"; +- QFile globalFile( globalConfig ); +- QFile actualFile( actualConfig ); +- if ( globalFile.open( QFile::ReadOnly ) && actualFile.open( QFile::WriteOnly ) ) { +- actualFile.write( globalFile.readAll() ); +- if ( !localConfig.isEmpty() ) { +- QFile localFile( localConfig ); +- if ( localFile.open( QFile::ReadOnly ) ) { +- actualFile.write( localFile.readAll() ); +- localFile.close(); ++ bool confUpdate = false; ++ QFile actualFile ( actualConfig ); ++ // update conf only if either global (or local) is newer than actual ++ if ( (QFileInfo( globalConfig ).lastModified() > QFileInfo( actualFile ).lastModified()) || ++ (QFileInfo( localConfig ).lastModified() > QFileInfo( actualFile ).lastModified()) ) ++ { ++ QFile globalFile( globalConfig ); ++ QFile localFile ( localConfig ); ++ if ( globalFile.open( QFile::ReadOnly ) && actualFile.open( QFile::WriteOnly ) ) { ++ actualFile.write( globalFile.readAll() ); ++ if ( !localConfig.isEmpty() ) { ++ if ( localFile.open( QFile::ReadOnly ) ) { ++ actualFile.write( localFile.readAll() ); ++ localFile.close(); ++ } + } ++ globalFile.close(); ++ actualFile.close(); ++ confUpdate = true; ++ } else { ++ akError() << "Unable to create MySQL server configuration file."; ++ akError() << "This means that either the default configuration file (mysql-global.conf) was not readable"; ++ akFatal() << "or the target file (mysql.conf) could not be written."; + } +- actualFile.close(); +- globalFile.close(); +- } else { +- akError() << "Unable to create MySQL server configuration file."; +- akError() << "This means that either the default configuration file (mysql-global.conf) was not readable"; +- akFatal() << "or the target file (mysql.conf) could not be written."; + } + + // MySQL doesn't like world writeable config files (which makes sense), but +@@ -276,6 +283,12 @@ + } + } + ++ // 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(); ++ QFile(dataDir + QDir::separator() + QString::fromLatin1( "ib_logfile1" )).remove(); ++ } ++ + // synthesize the mysqld command + QStringList arguments; + arguments << QString::fromLatin1( "--defaults-file=%1/mysql.conf" ).arg( akDir ); diff --git a/akonadi.spec b/akonadi.spec index e802dc6..276a31e 100644 --- a/akonadi.spec +++ b/akonadi.spec @@ -1,7 +1,7 @@ Summary: PIM Storage Service Name: akonadi Version: 1.1.1 -Release: 5%{?dist} +Release: 6%{?dist} Group: System Environment/Libraries License: LGPLv2+ @@ -12,10 +12,11 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # shrink default initial db size a bit (approx 140mb->28mb) Patch1: akonadi-1.1.1-mysql_conf.patch -# upstream -Patch100: akonadi-1.1.1-startup-1.patch +## upstream +# http://websvn.kde.org/branches/akonadi/1.1/server/src/akonadi.cpp?r1=905029&r2=931467&view=patch +Patch100: akonadi-1.1.1-startup-2.patch -BuildRequires: cmake +BuildRequires: cmake >= 2.6.0 BuildRequires: qt4-devel >= 4.4 BuildRequires: automoc4 BuildRequires: mysql-devel @@ -55,7 +56,7 @@ Requires: pkgconfig %setup -q %patch1 -p1 -b .mysql_conf -%patch100 -p1 -b .startup-1 +%patch100 -p3 -b .startup-2 %build @@ -115,6 +116,10 @@ update-mime-database %{_datadir}/mime &> /dev/null || : %changelog +* Wed Feb 25 2009 Rex Dieter - 1.1.1-6 +- rev startup patch +- BR: cmake >= 2.6.0 + * Tue Feb 24 2009 Rex Dieter - 1.1.1-5 - own %%_sysconfig/akonadi/mysql-local.conf - startup patch: reset conf only when needed, and clear mysql log file on update