commit:     aa844686c8792e80a1b1be97571da30626a1f803
Author:     Andreas Sturmlechner <andreas.sturmlechner <AT> gmail <DOT> com>
AuthorDate: Mon Aug 15 15:01:32 2016 +0000
Commit:     Michael Palimaka <kensington <AT> gentoo <DOT> org>
CommitDate: Wed Aug 17 20:47:44 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=aa844686

media-gfx/digikam: Add USE=jpeg2k,opengl,openmp,panorama; fix configure

Choose some default USE flags
Patches to fix runtime crashes
Sort dependencies

Package-Manager: portage-2.2.28

 media-gfx/digikam/digikam-5.1.0-r1.ebuild          | 172 +++++++++++++++++++++
 .../files/digikam-5.1.0-albums-crashfix.patch      |  35 +++++
 .../digikam/files/digikam-5.1.0-i386-gcc61.patch   |  41 +++++
 .../files/digikam-5.1.0-memalloc-crash.patch       |  95 ++++++++++++
 media-gfx/digikam/metadata.xml                     |   1 +
 5 files changed, 344 insertions(+)

diff --git a/media-gfx/digikam/digikam-5.1.0-r1.ebuild 
b/media-gfx/digikam/digikam-5.1.0-r1.ebuild
new file mode 100644
index 0000000..5527034
--- /dev/null
+++ b/media-gfx/digikam/digikam-5.1.0-r1.ebuild
@@ -0,0 +1,172 @@
+# 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 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 kcompletion)
+       $(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 kjobwidgets)
+       $(add_frameworks_dep knotifications)
+       $(add_frameworks_dep knotifyconfig)
+       $(add_frameworks_dep kservice)
+       $(add_frameworks_dep ktextwidgets)
+       $(add_frameworks_dep kwidgetsaddons)
+       $(add_frameworks_dep kwindowsystem)
+       $(add_frameworks_dep kxmlgui)
+       $(add_frameworks_dep solid)
+       $(add_kdeapps_dep libkexiv2)
+       $(add_qt_dep qtconcurrent)
+       $(add_qt_dep qtdbus)
+       $(add_qt_dep qtgui)
+       $(add_qt_dep qtprintsupport)
+       $(add_qt_dep qtscript)
+       $(add_qt_dep qtsql 'mysql?')
+       $(add_qt_dep qtwebkit)
+       $(add_qt_dep qtwidgets)
+       $(add_qt_dep qtxml)
+       dev-libs/boost[threads]
+       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)
+       )
+       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_frameworks_dep kitemmodels)
+               $(add_kdeapps_dep marble)
+       )
+       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}
+       dev-cpp/eigen:3
+       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}-i386-gcc61.patch"
+       "${FILESDIR}/${P}-albums-crashfix.patch"
+       "${FILESDIR}/${P}-memalloc-crash.patch"
+)
+
+# FIXME: Unbundle libraw (libs/rawengine/libraw)
+pkg_pretend() {
+       if use openmp ; then
+               tc-has-openmp || die "Please switch to an openmp compatible 
compiler"
+       fi
+       kde5_pkg_pretend
+}
+
+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 "add_subdirectory( doc-default )" >> 
CMakeLists.txt || die
+               fi
+       fi
+
+       kde5_src_prepare
+}
+
+src_configure() {
+       # LQR = only allows to choose between bundled/external
+       local mycmakeargs=(
+               -DENABLE_AKONADICONTACTSUPPORT=$(usex addressbook)
+               -DENABLE_KFILEMETADATASUPPORT=$(usex semantic-desktop)
+               -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 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 X X11)
+       )
+
+       kde5_src_configure
+}

diff --git a/media-gfx/digikam/files/digikam-5.1.0-albums-crashfix.patch 
b/media-gfx/digikam/files/digikam-5.1.0-albums-crashfix.patch
new file mode 100644
index 0000000..e22e8df
--- /dev/null
+++ b/media-gfx/digikam/files/digikam-5.1.0-albums-crashfix.patch
@@ -0,0 +1,35 @@
+From: Gilles Caulier <[email protected]>
+Date: Thu, 11 Aug 2016 11:41:08 +0000
+Subject: Fix CR #1368976
+X-Git-Url: 
http://quickgit.kde.org/?p=digikam.git&a=commitdiff&h=7c628bac74afe24dbc4ca66b1bd5d513e46f6377
+---
+Fix CR #1368976
+BUGS: 366630
+FIXED-IN: 5.2.0
+---
+
+
+--- a/libs/album/albumtreeview.cpp
++++ b/libs/album/albumtreeview.cpp
+@@ -1089,6 +1089,11 @@
+ 
+     Album* const album = 
albumFilterModel()->albumForIndex(indexAt(event->pos()));
+ 
++    if (!album)
++    {
++        return;
++    }
++
+     if (album->isTrashAlbum())
+     {
+         // For the moment, disabling context menu for trash.
+@@ -1102,7 +1107,7 @@
+     }
+ 
+     // switch to the selected album if need
+-    if (d->selectOnContextMenu && album)
++    if (d->selectOnContextMenu)
+     {
+         setCurrentAlbums(QList<Album*>() << album);
+     }
+

diff --git a/media-gfx/digikam/files/digikam-5.1.0-i386-gcc61.patch 
b/media-gfx/digikam/files/digikam-5.1.0-i386-gcc61.patch
new file mode 100644
index 0000000..710c147
--- /dev/null
+++ b/media-gfx/digikam/files/digikam-5.1.0-i386-gcc61.patch
@@ -0,0 +1,41 @@
+From: Gilles Caulier <[email protected]>
+Date: Tue, 09 Aug 2016 18:41:17 +0000
+Subject: apply patch #100514 to fix broken compilation under 32 bits platform 
with GCC 6.1
+X-Git-Url: 
http://quickgit.kde.org/?p=digikam.git&a=commitdiff&h=067a88d8c84a5149469961d54b1d5c93df6a3167
+---
+apply patch #100514 to fix broken compilation under 32 bits platform with GCC 
6.1
+BUGS: 366542
+FIXED-IN: 5.2.0
+---
+
+
+--- a/libs/rawengine/libraw/libraw/libraw_types.h
++++ b/libs/rawengine/libraw/libraw/libraw_types.h
+@@ -612,10 +612,10 @@
+ #elif defined(__INTEL__)
+ #define LibRawBigEndian 0
+ 
+-#elif defined(_M_IX86)
++#elif defined(_M_IX86) || defined(__i386__)
+ #define LibRawBigEndian 0
+ 
+-#elif defined(_M_X64) || defined(__amd64__)
++#elif defined(_M_X64) || defined(__amd64__) || defined(__x86_64__)
+ #define LibRawBigEndian 0
+ 
+ #elif defined(__LITTLE_ENDIAN__)
+@@ -625,6 +625,13 @@
+ #define LibRawBigEndian 1
+ #elif defined(_ARM_)
+ #define LibRawBigEndian 0
++
++#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
++#define LibRawBigEndian 0
++
++#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
++#define LibRawBigEndian 1
++
+ #else
+ #ifndef qXCodeRez
+ #error Unable to figure out byte order.
+

diff --git a/media-gfx/digikam/files/digikam-5.1.0-memalloc-crash.patch 
b/media-gfx/digikam/files/digikam-5.1.0-memalloc-crash.patch
new file mode 100644
index 0000000..1a68f27
--- /dev/null
+++ b/media-gfx/digikam/files/digikam-5.1.0-memalloc-crash.patch
@@ -0,0 +1,95 @@
+From: Maik Qualmann <[email protected]>
+Date: Thu, 11 Aug 2016 19:43:46 +0000
+Subject: fix check of maximum addressable memory on 64bits
+X-Git-Url: 
http://quickgit.kde.org/?p=digikam.git&a=commitdiff&h=90f31456779f4aeb9ac06a385f398827fd35c985
+---
+fix check of maximum addressable memory on 64bits
+CCBUGS: 366621
+---
+
+
+--- a/libs/dimg/loaders/dimgloader.cpp
++++ b/libs/dimg/loaders/dimgloader.cpp
+@@ -163,7 +163,7 @@
+ 
+ qint64 DImgLoader::checkAllocation(qint64 fullSize)
+ {
+-    if (fullSize > std::numeric_limits<int>::max())
++    if (fullSize > std::numeric_limits<size_t>::max())
+     {
+         qCWarning(DIGIKAM_DIMG_LOG) << "Cannot allocate buffer of size" << 
fullSize;
+         return 0;
+
+From: Maik Qualmann <[email protected]>
+Date: Fri, 12 Aug 2016 19:29:50 +0000
+Subject: fix crash by big memory allocation for DImg on 64bit
+X-Git-Url: 
http://quickgit.kde.org/?p=digikam.git&a=commitdiff&h=65fa04ca097d4ff695690886a9f2be459b4279a9
+---
+fix crash by big memory allocation for DImg on 64bit
+CCBUGS: 366621
+---
+
+
+--- a/libs/dimg/dimg.cpp
++++ b/libs/dimg/dimg.cpp
+@@ -211,7 +211,7 @@
+ 
+     if (old->data)
+     {
+-        int size = allocateData();
++        size_t size = allocateData();
+         memcpy(m_priv->data, old->data, size);
+     }
+ }
+@@ -234,7 +234,7 @@
+     }
+     else if (copyData)
+     {
+-        int size = allocateData();
++        size_t size = allocateData();
+ 
+         if (data)
+         {
+@@ -303,7 +303,7 @@
+     setImageData(src->null, src->width, src->height, src->sixteenBit, 
src->alpha);
+ }
+ 
+-int DImg::allocateData()
++size_t DImg::allocateData()
+ {
+     size_t size  = m_priv->width * m_priv->height * (m_priv->sixteenBit ? 8 : 
4);
+     m_priv->data = DImgLoader::new_failureTolerant(size);
+@@ -2231,7 +2231,7 @@
+ 
+ void DImg::resize(int w, int h)
+ {
+-    if (w <= 0 || h <= 0)
++    if (isNull() || w <= 0 || h <= 0)
+     {
+         return;
+     }
+
+--- a/libs/dimg/dimg.h
++++ b/libs/dimg/dimg.h
+@@ -655,7 +655,7 @@
+     void copyImageData(const Private* const src);
+     void setImageData(bool null, uint width, uint height, bool sixteenBit, 
bool alpha);
+     void setImageDimension(uint width, uint height);
+-    int  allocateData();
++    size_t allocateData();
+ 
+     static void bitBlt(const uchar* const src, uchar* const dest,
+                        int sx, int sy, int w, int h, int dx, int dy,
+
+--- a/libs/dimg/loaders/dimgloader.cpp
++++ b/libs/dimg/loaders/dimgloader.cpp
+@@ -163,7 +163,7 @@
+ 
+ qint64 DImgLoader::checkAllocation(qint64 fullSize)
+ {
+-    if (fullSize > std::numeric_limits<size_t>::max())
++    if ((quint64)fullSize > std::numeric_limits<size_t>::max())
+     {
+         qCWarning(DIGIKAM_DIMG_LOG) << "Cannot allocate buffer of size" << 
fullSize;
+         return 0;
+

diff --git a/media-gfx/digikam/metadata.xml b/media-gfx/digikam/metadata.xml
index 76eae51..287778c 100644
--- a/media-gfx/digikam/metadata.xml
+++ b/media-gfx/digikam/metadata.xml
@@ -13,6 +13,7 @@
                <flag name="kipi">Enable support for 
<pkg>media-plugins/kipi-plugins</pkg></flag>
                <flag name="lensfun">Enable support for 
<pkg>media-libs/lensfun</pkg></flag>
                <flag name="marble">Enable support for geolocation using 
<pkg>kde-apps/marble</pkg></flag>
+               <flag name="panorama">Build the panorama plugin which requires 
<pkg>media-gfx/hugin</pkg></flag>
                <flag name="semantic-desktop">Enable 
<pkg>kde-frameworks/kfilemetadata</pkg> support</flag>
                <flag name="themedesigner">Build the digikam theme 
designer</flag>
                <flag name="thumbnails">Enable thumbnails database 
support</flag>

Reply via email to