Date: Saturday, December 25, 2021 @ 17:32:11 Author: arojas Revision: 433084
archrelease: copy trunk to staging-x86_64 Added: digikam/repos/staging-x86_64/ digikam/repos/staging-x86_64/49ee18fb.patch (from rev 433083, digikam/trunk/49ee18fb.patch) digikam/repos/staging-x86_64/PKGBUILD (from rev 433083, digikam/trunk/PKGBUILD) ----------------+ 49ee18fb.patch | 214 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ PKGBUILD | 40 ++++++++++ 2 files changed, 254 insertions(+) Copied: digikam/repos/staging-x86_64/49ee18fb.patch (from rev 433083, digikam/trunk/49ee18fb.patch) =================================================================== --- staging-x86_64/49ee18fb.patch (rev 0) +++ staging-x86_64/49ee18fb.patch 2021-12-25 17:32:11 UTC (rev 433084) @@ -0,0 +1,214 @@ +From 49ee18fbf2220baedbc015f51b74f67930115287 Mon Sep 17 00:00:00 2001 +From: Maik Qualmann <metzping...@gmail.com> +Date: Sun, 25 Jul 2021 15:44:56 +0200 +Subject: [PATCH] perform a database upgrade if the server / database version + is different BUGS: 440212 BUGS: 440030 FIXED-IN: 7.4.0 + +diff --git a/core/libs/database/server/databaseserver.cpp b/core/libs/database/server/databaseserver.cpp +index 7133148379..cebe9d0f6a 100644 +--- a/core/libs/database/server/databaseserver.cpp ++++ b/core/libs/database/server/databaseserver.cpp +@@ -73,6 +73,7 @@ public: + QString fileDataDir; + QString actualConfig; + QString globalConfig; ++ QString dbVersion; + }; + + DatabaseServer::DatabaseServer(const DbEngineParameters& params, DatabaseServerStarter* const parent) +@@ -224,8 +225,6 @@ bool DatabaseServer::isRunning() const + + DatabaseServerError DatabaseServer::startMysqlDatabaseProcess() + { +- DatabaseServerError result; +- + DatabaseServerError error = checkDatabaseDirs(); + + if (error.getErrorType() != DatabaseServerError::NoErrors) +@@ -265,7 +264,14 @@ DatabaseServerError DatabaseServer::startMysqlDatabaseProcess() + + databaseServerStateEnum = running; + +- return result; ++ error = checkUpgradeMysqlDatabase(); ++ ++ if (error.getErrorType() != DatabaseServerError::NoErrors) ++ { ++ return error; ++ } ++ ++ return error; + } + + DatabaseServerError DatabaseServer::checkDatabaseDirs() const +@@ -677,6 +683,25 @@ DatabaseServerError DatabaseServer::initMysqlDatabase() const + + db.close(); + } ++ else ++ { ++ if (query.exec(QLatin1String("SELECT VERSION();"))) ++ { ++ if (query.next() && (query.lastError().type() == QSqlError::NoError)) ++ { ++ ++ QRegExp reg(QLatin1String("\\d+\\.\\d+\\.\\d+")); ++ ++ if (reg.indexIn(query.value(0).toString()) != -1) ++ { ++ d->dbVersion = reg.capturedTexts().first(); ++ ++ qCDebug(DIGIKAM_DATABASESERVER_LOG) << "Database version:" ++ << d->dbVersion; ++ } ++ } ++ } ++ } + } + + QSqlDatabase::removeDatabase(initCon); +@@ -684,6 +709,104 @@ DatabaseServerError DatabaseServer::initMysqlDatabase() const + return result; + } + ++DatabaseServerError DatabaseServer::checkUpgradeMysqlDatabase() ++{ ++ DatabaseServerError result; ++ ++ // Synthesize the server command line arguments ++ ++ QStringList versionCmdArgs; ++ versionCmdArgs << QLatin1String("--version"); ++ ++ // Start the database server ++ ++ QProcess* const versionProcess = new QProcess(); ++ versionProcess->setProcessEnvironment(adjustedEnvironmentForAppImage()); ++ versionProcess->start(d->mysqldCmd, versionCmdArgs); ++ ++ if (!versionProcess->waitForFinished() || (versionProcess->exitCode() != 0)) ++ { ++ QString errorMsg = processErrorLog(versionProcess, ++ i18n("Could not get mysql server version.")); ++ ++ delete versionProcess; ++ ++ return DatabaseServerError(DatabaseServerError::StartError, errorMsg); ++ } ++ ++ QString serverVersion; ++ QRegExp reg(QLatin1String("\\d+\\.\\d+\\.\\d+")); ++ ++ if (reg.indexIn(QString::fromUtf8(versionProcess->readAllStandardOutput())) != -1) ++ { ++ serverVersion = reg.capturedTexts().first(); ++ ++ qCDebug(DIGIKAM_DATABASESERVER_LOG) << "MySQL server version:" ++ << serverVersion; ++ } ++ ++ delete versionProcess; ++ ++ if (serverVersion == d->dbVersion) ++ { ++ return result; ++ } ++ ++ // Synthesize the mysql upgrade command line arguments ++ ++ QStringList upgradeCmdArgs; ++ ++#ifdef Q_OS_WIN ++ ++ upgradeCmdArgs << QLatin1String("--port=3307"); ++ ++#else ++ ++ upgradeCmdArgs << QString::fromLatin1("--socket=%1/mysql.socket").arg(d->miscDir); ++ ++#endif ++ ++ // Start the upgrade ptogram ++ ++ QUrl upgradeUrl = QUrl::fromLocalFile(d->mysqlAdminPath).adjusted(QUrl::RemoveFilename); ++ upgradeUrl.setPath(upgradeUrl.path() + QLatin1String("mysql_upgrade")); ++ ++ QProcess* const upgradeProcess = new QProcess(); ++ upgradeProcess->setProcessEnvironment(adjustedEnvironmentForAppImage()); ++ upgradeProcess->start(upgradeUrl.toLocalFile(), upgradeCmdArgs); ++ ++ qCDebug(DIGIKAM_DATABASESERVER_LOG) << "Upgrade database:" ++ << upgradeProcess->program() ++ << upgradeProcess->arguments(); ++ ++ if (!upgradeProcess->waitForFinished() || (upgradeProcess->exitCode() != 0)) ++ { ++ QString errorMsg = processErrorLog(upgradeProcess, ++ i18n("Could not upgrade database.")); ++ ++ delete upgradeProcess; ++ ++ return DatabaseServerError(DatabaseServerError::StartError, errorMsg); ++ } ++ ++ delete upgradeProcess; ++ ++ // Restart the database server. ++ ++ stopDatabaseProcess(); ++ ++ result = startMysqlServer(); ++ ++ if (result.getErrorType() != DatabaseServerError::NoErrors) ++ { ++ return result; ++ } ++ ++ result = initMysqlDatabase(); ++ ++ return result; ++} ++ + QString DatabaseServer::getcurrentAccountUserName() const + { + QString name = QString::fromUtf8(qgetenv("USER")); // Linux and OSX +diff --git a/core/libs/database/server/databaseserver.h b/core/libs/database/server/databaseserver.h +index 0b96d5ceb1..d1140e23ed 100644 +--- a/core/libs/database/server/databaseserver.h ++++ b/core/libs/database/server/databaseserver.h +@@ -127,6 +127,11 @@ private: + */ + DatabaseServerError initMysqlDatabase() const; + ++ /** ++ * Check for a mysql database upgrade. ++ */ ++ DatabaseServerError checkUpgradeMysqlDatabase(); ++ + /** + * Return the current user account name. + */ +diff --git a/core/libs/database/server/databaseserver.cpp b/core/libs/database/server/databaseserver.cpp +index cebe9d0f6a..37765e3231 100644 +--- a/core/libs/database/server/databaseserver.cpp ++++ b/core/libs/database/server/databaseserver.cpp +@@ -689,7 +689,6 @@ DatabaseServerError DatabaseServer::initMysqlDatabase() const + { + if (query.next() && (query.lastError().type() == QSqlError::NoError)) + { +- + QRegExp reg(QLatin1String("\\d+\\.\\d+\\.\\d+")); + + if (reg.indexIn(query.value(0).toString()) != -1) +@@ -747,7 +746,9 @@ DatabaseServerError DatabaseServer::checkUpgradeMysqlDatabase() + + delete versionProcess; + +- if (serverVersion == d->dbVersion) ++ if (d->dbVersion.isEmpty() || ++ serverVersion.isEmpty() || ++ (serverVersion == d->dbVersion)) + { + return result; + } + Copied: digikam/repos/staging-x86_64/PKGBUILD (from rev 433083, digikam/trunk/PKGBUILD) =================================================================== --- staging-x86_64/PKGBUILD (rev 0) +++ staging-x86_64/PKGBUILD 2021-12-25 17:32:11 UTC (rev 433084) @@ -0,0 +1,40 @@ +# $Id: PKGBUILD 320127 2018-03-24 09:48:28Z arojas $ +# Maintainer: Ronald van Haren <ron...@archlinux.org> +# Maintainer: Antonio Rojas <aro...@archlinux.org> +# Contributor: Andrea Scarpino <and...@archlinux.org> +# Contributor: Tobias Powalowski <tp...@archlinux.org> + +pkgname=digikam +_pkgver=7.4.0 +pkgver=${_pkgver//-/_} # for beta versions +pkgrel=2 +pkgdesc='An advanced digital photo management application' +arch=(x86_64) +license=(GPL) +url='https://www.digikam.org/' +depends=(lensfun opencv akonadi-contacts knotifyconfig libksane kfilemetadata qtav marble-common threadweaver kcalendarcore + qt5-xmlpatterns imagemagick jasper glu perl-image-exiftool) +makedepends=(extra-cmake-modules doxygen eigen boost kdoctools) +optdepends=('hugin: panorama tool' 'qt5-imageformats: support for additional image formats (WEBP, TIFF)' + 'rawtherapee: RAW import' 'darktable: RAW import' + 'perl: for digitaglinktree') +source=(https://download.kde.org/stable/$pkgname/$pkgver/digiKam-$_pkgver.tar.xz{,.sig}) +sha256sums=('d08ab66da732bb449bc10106ec11dd9defa5b3562ded3741b041dbbaa715504a' + 'SKIP') +validpgpkeys=(D1CF2444A7858C5F2FB095B74A77747BC2386E50) # digiKam.org (digiKam project) <digikamdevelo...@gmail.com> + +build() { + cmake -B build -S $pkgname-$_pkgver \ + -DBUILD_TESTING=OFF \ + -DENABLE_KFILEMETADATASUPPORT=ON \ + -DENABLE_MEDIAPLAYER=ON \ + -DENABLE_AKONADICONTACTSUPPORT=ON \ + -DENABLE_MYSQLSUPPORT=ON \ + -DENABLE_APPSTYLES=ON \ + -DENABLE_QWEBENGINE=ON + cmake --build build +} + +package() { + DESTDIR="$pkgdir" cmake --install build +}