mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 17:09:10 -07:00
media-gfx/digikam: Fix db lock issue
Revision bump adds upstream patch to fix a database lock with the batch queue manager. Reported-by: Oliver Schwabedissen <Oliver@Schwabedissen.name> Gentoo-bug: 602320 Package-Manager: portage-2.3.3
This commit is contained in:
170
media-gfx/digikam/digikam-5.3.0-r1.ebuild
Normal file
170
media-gfx/digikam/digikam-5.3.0-r1.ebuild
Normal file
@@ -0,0 +1,170 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=6
|
||||
|
||||
if [[ ${KDE_BUILD_TYPE} != live ]]; then
|
||||
KDE_HANDBOOK="true"
|
||||
KDE_TEST="true"
|
||||
fi
|
||||
CMAKE_MAKEFILE_GENERATOR="emake"
|
||||
CMAKE_MIN_VERSION="3.0"
|
||||
inherit kde5 toolchain-funcs
|
||||
|
||||
DESCRIPTION="Digital photo management application"
|
||||
HOMEPAGE="https://www.digikam.org/"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE="addressbook calendar gphoto2 jpeg2k +kipi +lensfun marble semantic-desktop mysql opengl openmp +panorama scanner video X"
|
||||
|
||||
if [[ ${KDE_BUILD_TYPE} != live ]]; then
|
||||
MY_PV=${PV/_/-}
|
||||
MY_P=${PN}-${MY_PV}
|
||||
SRC_BRANCH=stable
|
||||
[[ ${PV} =~ beta[0-9]$ ]] && SRC_BRANCH=unstable
|
||||
SRC_URI="mirror://kde/${SRC_BRANCH}/digikam/${MY_P}.tar.xz"
|
||||
S="${WORKDIR}/${MY_P}/core"
|
||||
fi
|
||||
|
||||
COMMON_DEPEND="
|
||||
$(add_frameworks_dep kconfig)
|
||||
$(add_frameworks_dep kconfigwidgets)
|
||||
$(add_frameworks_dep kcoreaddons)
|
||||
$(add_frameworks_dep kiconthemes)
|
||||
$(add_frameworks_dep ki18n)
|
||||
$(add_frameworks_dep kio)
|
||||
$(add_frameworks_dep knotifications)
|
||||
$(add_frameworks_dep knotifyconfig)
|
||||
$(add_frameworks_dep kservice)
|
||||
$(add_frameworks_dep kwidgetsaddons)
|
||||
$(add_frameworks_dep kwindowsystem)
|
||||
$(add_frameworks_dep kxmlgui)
|
||||
$(add_frameworks_dep solid)
|
||||
$(add_qt_dep qtdbus)
|
||||
$(add_qt_dep qtgui '-gles2')
|
||||
$(add_qt_dep qtprintsupport)
|
||||
$(add_qt_dep qtsql 'mysql?')
|
||||
$(add_qt_dep qtwebkit)
|
||||
$(add_qt_dep qtwidgets)
|
||||
$(add_qt_dep qtxml)
|
||||
dev-libs/expat
|
||||
media-gfx/exiv2:=
|
||||
media-libs/lcms:2
|
||||
media-libs/liblqr
|
||||
>=media-libs/libpgf-6.12.27
|
||||
media-libs/libpng:0=
|
||||
media-libs/opencv:=[-qt4(-)]
|
||||
|| ( <media-libs/opencv-3.0.0 >=media-libs/opencv-3.1.0 )
|
||||
media-libs/tiff:0
|
||||
virtual/jpeg:0
|
||||
addressbook? (
|
||||
$(add_kdeapps_dep akonadi-contacts)
|
||||
$(add_kdeapps_dep kcontacts)
|
||||
)
|
||||
calendar? ( $(add_kdeapps_dep kcalcore) )
|
||||
gphoto2? ( media-libs/libgphoto2:= )
|
||||
jpeg2k? ( media-libs/jasper:= )
|
||||
kipi? ( $(add_kdeapps_dep libkipi '' '16.03.80') )
|
||||
lensfun? ( media-libs/lensfun )
|
||||
marble? (
|
||||
$(add_frameworks_dep kbookmarks)
|
||||
$(add_kdeapps_dep marble)
|
||||
$(add_qt_dep qtconcurrent)
|
||||
$(add_qt_dep qtnetwork)
|
||||
)
|
||||
mysql? ( virtual/mysql )
|
||||
opengl? (
|
||||
$(add_qt_dep qtopengl)
|
||||
virtual/opengl
|
||||
)
|
||||
panorama? ( $(add_frameworks_dep threadweaver) )
|
||||
scanner? ( $(add_kdeapps_dep libksane) )
|
||||
semantic-desktop? ( $(add_frameworks_dep kfilemetadata) )
|
||||
video? ( $(add_qt_dep qtmultimedia 'widgets') )
|
||||
X? (
|
||||
$(add_qt_dep qtx11extras)
|
||||
x11-libs/libX11
|
||||
)
|
||||
"
|
||||
DEPEND="${COMMON_DEPEND}
|
||||
$(add_qt_dep qtconcurrent)
|
||||
dev-cpp/eigen:3
|
||||
dev-libs/boost[threads]
|
||||
sys-devel/gettext
|
||||
panorama? (
|
||||
sys-devel/bison
|
||||
sys-devel/flex
|
||||
)
|
||||
"
|
||||
RDEPEND="${COMMON_DEPEND}
|
||||
media-plugins/kipi-plugins:5
|
||||
panorama? ( media-gfx/hugin )
|
||||
!media-gfx/digikam:4
|
||||
"
|
||||
|
||||
RESTRICT=test
|
||||
# bug 366505
|
||||
|
||||
PATCHES=( "${FILESDIR}/${P}-db-lock.patch" )
|
||||
|
||||
pkg_pretend() {
|
||||
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
|
||||
kde5_pkg_pretend
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
|
||||
kde5_pkg_setup
|
||||
}
|
||||
|
||||
# FIXME: Unbundle libraw (libs/rawengine/libraw)
|
||||
src_prepare() {
|
||||
if [[ ${KDE_BUILD_TYPE} != live ]]; then
|
||||
# prepare the translations
|
||||
mv "${WORKDIR}/${MY_P}/po" po || die
|
||||
find po -name "*.po" -and -not -name "digikam.po" -delete || die
|
||||
echo "set_property(GLOBAL PROPERTY ALLOW_DUPLICATE_CUSTOM_TARGETS 1)" >> CMakeLists.txt || die
|
||||
echo "find_package(Gettext REQUIRED)" >> CMakeLists.txt || die
|
||||
echo "add_subdirectory( po )" >> CMakeLists.txt || die
|
||||
|
||||
if use handbook; then
|
||||
# subdirs need to be preserved b/c relative paths...
|
||||
# doc-translated is, in fact, broken, and ignored
|
||||
mv "${WORKDIR}/${MY_P}/doc/${PN}" doc-default || die
|
||||
echo "find_package(KF5DocTools REQUIRED)" >> CMakeLists.txt || die
|
||||
echo "add_subdirectory( doc-default )" >> CMakeLists.txt || die
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! use marble; then
|
||||
punt_bogus_dep Qt5 Network
|
||||
fi
|
||||
|
||||
kde5_src_prepare
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local mycmakeargs=(
|
||||
-DENABLE_APPSTYLES=ON
|
||||
-DENABLE_AKONADICONTACTSUPPORT=$(usex addressbook)
|
||||
-DENABLE_MYSQLSUPPORT=$(usex mysql)
|
||||
-DENABLE_MEDIAPLAYER=$(usex video)
|
||||
-DENABLE_OPENCV3=$(has_version ">=media-libs/opencv-3" && echo yes || echo no)
|
||||
$(cmake-utils_use_find_package calendar KF5CalendarCore)
|
||||
$(cmake-utils_use_find_package gphoto2 Gphoto2)
|
||||
$(cmake-utils_use_find_package jpeg2k Jasper)
|
||||
$(cmake-utils_use_find_package kipi KF5Kipi)
|
||||
$(cmake-utils_use_find_package lensfun LensFun)
|
||||
$(cmake-utils_use_find_package marble Marble)
|
||||
$(cmake-utils_use_find_package opengl OpenGL)
|
||||
$(cmake-utils_use_find_package openmp OpenMP)
|
||||
$(cmake-utils_use_find_package panorama KF5ThreadWeaver)
|
||||
$(cmake-utils_use_find_package scanner KF5Sane)
|
||||
$(cmake-utils_use_find_package semantic-desktop KF5FileMetaData)
|
||||
$(cmake-utils_use_find_package X X11)
|
||||
)
|
||||
|
||||
kde5_src_configure
|
||||
}
|
||||
135
media-gfx/digikam/files/digikam-5.3.0-db-lock.patch
Normal file
135
media-gfx/digikam/files/digikam-5.3.0-db-lock.patch
Normal file
@@ -0,0 +1,135 @@
|
||||
From f37ef2c195b61a43a40e9cbb7f119fdc8e9d38f4 Mon Sep 17 00:00:00 2001
|
||||
From: Maik Qualmann <metzpinguin@gmail.com>
|
||||
Date: Sat, 10 Dec 2016 11:16:50 +0100
|
||||
Subject: fix locked database with BQM
|
||||
|
||||
---
|
||||
utilities/queuemanager/manager/actionthread.cpp | 27 ++++++++++++++++++++++---
|
||||
utilities/queuemanager/manager/actionthread.h | 1 +
|
||||
utilities/queuemanager/manager/task.cpp | 24 +++++-----------------
|
||||
3 files changed, 30 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/utilities/queuemanager/manager/actionthread.cpp b/utilities/queuemanager/manager/actionthread.cpp
|
||||
index 48c3fa3..141bb3d 100644
|
||||
--- a/utilities/queuemanager/manager/actionthread.cpp
|
||||
+++ b/utilities/queuemanager/manager/actionthread.cpp
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#include "digikam_debug.h"
|
||||
#include "digikam_config.h"
|
||||
+#include "collectionscanner.h"
|
||||
#include "task.h"
|
||||
|
||||
namespace Digikam
|
||||
@@ -82,7 +83,7 @@ void ActionThread::processQueueItems(const QList<AssignedBatchTools>& items)
|
||||
{
|
||||
ActionJobCollection collection;
|
||||
|
||||
- for(int i = 0 ; i < items.size() ; i++)
|
||||
+ for (int i = 0 ; i < items.size() ; i++)
|
||||
{
|
||||
Task* const t = new Task();
|
||||
t->setSettings(d->settings);
|
||||
@@ -92,10 +93,12 @@ void ActionThread::processQueueItems(const QList<AssignedBatchTools>& items)
|
||||
this, SIGNAL(signalStarting(Digikam::ActionData)));
|
||||
|
||||
connect(t, SIGNAL(signalFinished(Digikam::ActionData)),
|
||||
- this, SIGNAL(signalFinished(Digikam::ActionData)));
|
||||
+ this, SLOT(slotUpdateImageInfo(Digikam::ActionData)),
|
||||
+ Qt::BlockingQueuedConnection);
|
||||
|
||||
connect(this, SIGNAL(signalCancelTask()),
|
||||
- t, SLOT(slotCancel()), Qt::QueuedConnection);
|
||||
+ t, SLOT(slotCancel()),
|
||||
+ Qt::QueuedConnection);
|
||||
|
||||
collection.insert(t, 0);
|
||||
}
|
||||
@@ -111,6 +114,24 @@ void ActionThread::cancel()
|
||||
ActionThreadBase::cancel();
|
||||
}
|
||||
|
||||
+void ActionThread::slotUpdateImageInfo(const Digikam::ActionData& ad)
|
||||
+{
|
||||
+ if (ad.status == ActionData::BatchDone)
|
||||
+ {
|
||||
+ CollectionScanner scanner;
|
||||
+ ImageInfo source = ImageInfo::fromUrl(ad.fileUrl);
|
||||
+ qlonglong id = scanner.scanFile(ad.destUrl.toLocalFile(), CollectionScanner::NormalScan);
|
||||
+ ImageInfo info(id);
|
||||
+ QDateTime dateTime = info.dateTime();
|
||||
+ // Copy the digiKam attributes from original file to the new file
|
||||
+ CollectionScanner::copyFileProperties(source, info);
|
||||
+ // Restore date time from new file
|
||||
+ info.setDateTime(dateTime);
|
||||
+ }
|
||||
+
|
||||
+ emit signalFinished(ad);
|
||||
+}
|
||||
+
|
||||
void ActionThread::slotThreadFinished()
|
||||
{
|
||||
if (isEmpty())
|
||||
diff --git a/utilities/queuemanager/manager/actionthread.h b/utilities/queuemanager/manager/actionthread.h
|
||||
index 8cb848b..3375c2e 100644
|
||||
--- a/utilities/queuemanager/manager/actionthread.h
|
||||
+++ b/utilities/queuemanager/manager/actionthread.h
|
||||
@@ -72,6 +72,7 @@ Q_SIGNALS:
|
||||
|
||||
private Q_SLOTS:
|
||||
|
||||
+ void slotUpdateImageInfo(const Digikam::ActionData& ad);
|
||||
void slotThreadFinished();
|
||||
|
||||
private:
|
||||
diff --git a/utilities/queuemanager/manager/task.cpp b/utilities/queuemanager/manager/task.cpp
|
||||
index a94b4f9..4c6b710 100644
|
||||
--- a/utilities/queuemanager/manager/task.cpp
|
||||
+++ b/utilities/queuemanager/manager/task.cpp
|
||||
@@ -46,10 +46,8 @@ extern "C"
|
||||
#include "dimg.h"
|
||||
#include "dmetadata.h"
|
||||
#include "imageinfo.h"
|
||||
-#include "fileactionmngr.h"
|
||||
#include "batchtool.h"
|
||||
#include "batchtoolsmanager.h"
|
||||
-#include "collectionscanner.h"
|
||||
#include "fileoperation.h"
|
||||
|
||||
namespace Digikam
|
||||
@@ -245,27 +243,15 @@ void Task::run()
|
||||
}
|
||||
}
|
||||
|
||||
- if (!FileOperation::localFileRename(d->tools.m_itemUrl.toLocalFile(),
|
||||
- outUrl.toLocalFile(),
|
||||
- dest.toLocalFile()))
|
||||
+ if (FileOperation::localFileRename(d->tools.m_itemUrl.toLocalFile(),
|
||||
+ outUrl.toLocalFile(),
|
||||
+ dest.toLocalFile()))
|
||||
{
|
||||
- emitActionData(ActionData::BatchFailed, i18n("Failed to create file..."), dest);
|
||||
+ emitActionData(ActionData::BatchDone, i18n("Item processed successfully %1", renameMess), dest);
|
||||
}
|
||||
else
|
||||
{
|
||||
- // -- Now copy the digiKam attributes from original file to the new file ------------
|
||||
-
|
||||
- CollectionScanner scanner;
|
||||
- qlonglong id = scanner.scanFile(dest.toLocalFile(), CollectionScanner::NormalScan);
|
||||
-
|
||||
- ImageInfo destInfo(id);
|
||||
- CollectionScanner::copyFileProperties(source, destInfo);
|
||||
-
|
||||
- // -- Read again new file that the database is up to date ---------------------------
|
||||
-
|
||||
- scanner.scanFile(destInfo, CollectionScanner::Rescan);
|
||||
-
|
||||
- emitActionData(ActionData::BatchDone, i18n("Item processed successfully %1", renameMess), dest);
|
||||
+ emitActionData(ActionData::BatchFailed, i18n("Failed to create file..."), dest);
|
||||
}
|
||||
}
|
||||
else
|
||||
--
|
||||
cgit v0.11.2
|
||||
|
||||
Reference in New Issue
Block a user