Dominique Leuenberger 2019-11-30 09:37:12 +00:00 committed by Git OBS Bridge
commit 0b0a210500
5 changed files with 292 additions and 6 deletions

View File

@ -0,0 +1,249 @@
From 64454b942be9c61f3c981f7a18a77b332944d58a Mon Sep 17 00:00:00 2001
From: Wolfgang Bauer <wbauer@tmo.at>
Date: Tue, 12 Nov 2019 11:15:21 +0100
Subject: [PATCH] Revert "Exiv2 is now released with exported targets using
cmake rules. No need to have a dedicated find exiv2 cmake script. Bump
minimal version to 0.27.1"
This reverts commit 06e77271d72fe5e4abeb38641f3addc2cfbff126.
Fixes build on Leap 15.x which only have exiv2 0.26.
As there haven't been any changes other than to rely on the new cmake
files in exiv2 0.27, there should be no problems with the older version.
---
core/CMakeLists.txt | 14 +--
core/app/DigikamCoreTarget.cmake | 2 +-
core/cmake/modules/FindExiv2.cmake | 116 ++++++++++++++++++++++++++++++++
core/libs/metadataengine/CMakeLists.txt | 10 ++-
4 files changed, 126 insertions(+), 16 deletions(-)
create mode 100644 core/cmake/modules/FindExiv2.cmake
diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
index e31e267772..d14364dc1e 100644
--- a/core/CMakeLists.txt
+++ b/core/CMakeLists.txt
@@ -56,7 +56,7 @@ set(ECM_MIN_VERSION "1.7.0")
set(KF5_MIN_VERSION "5.1.0")
set(QT_MIN_VERSION "5.6.0")
set(LENSFUN_MIN_VERSION "0.2.6.0")
-set(EXIV2_MIN_VERSION "0.27.0")
+set(EXIV2_MIN_VERSION "0.26")
set(OPENCV_MIN_VERSION "3.1.0")
set(QTAV_MIN_VERSION "1.12.0")
set(KSANE_MIN_VERSION "5.0.0") # For digital scanner support.
@@ -248,9 +248,9 @@ find_package(EXPAT) # For DNGWriter: XMP SDK need Expat library to compile.
find_package(Threads) # For DNGWriter and LibRaw which needs native threads support.
find_package(X265) # For HEIF encoding support.
-find_package(exiv2 REQUIRED)
+find_package(Exiv2 ${EXIV2_MIN_VERSION} REQUIRED)
-set_package_properties("exiv2" PROPERTIES
+set_package_properties("Exiv2" PROPERTIES
DESCRIPTION "Required to build digiKam"
URL "http://www.exiv2.org"
TYPE RECOMMENDED
@@ -257,10 +257,6 @@ set_package_properties("Exiv2" PROPERTIES
PURPOSE "Library to manage image metadata"
)
-if("${exiv2_VERSION}" VERSION_LESS ${EXIV2_MIN_VERSION})
- message(FATAL_ERROR "Exiv2 version is too old (${exiv2_VERSION})! Minimal version required:${EXIV2_MIN_VERSION}.")
-endif()
-
# -- check Media player --------------------------------------------------------
find_package(FFmpeg COMPONENTS AVCODEC AVFILTER AVFORMAT AVUTIL SWSCALE)
@@ -585,7 +585,7 @@ PRINT_COMPONENT_COMPILE_STATUS("FacesEngine DNN Support" ENABLE_FACESENGINE_DNN)
# ==============================================================================
PRINT_LIBRARY_STATUS("libboostgraph" "http://www.boost.org/doc/libs" "(version >= 1.43.0)" Boost_FOUND)
-PRINT_LIBRARY_STATUS("libexiv2" "http://www.exiv2.org" "(version >= ${EXIV2_MIN_VERSION}" exiv2_FOUND)
+PRINT_LIBRARY_STATUS("libexiv2" "http://www.exiv2.org" "(version >= ${EXIV2_MIN_VERSION}" Exiv2_FOUND)
PRINT_LIBRARY_STATUS("libexpat" "http://expat.sourceforge.net" "(version >= 2.0.0)" EXPAT_FOUND)
PRINT_LIBRARY_STATUS("libjpeg" "http://www.ijg.org" "(version >= 6b)" JPEG_FOUND)
PRINT_LIBRARY_STATUS("libkde" "http://www.kde.org" "(version >= ${KF5_MIN_VERSION})" KF5_FOUND)
@@ -627,7 +627,7 @@ PRINT_OPTIONAL_LIBRARY_STATUS("OpenGL" "https://www.mesa3d.org"
# ==============================================================================
if(Boost_FOUND AND
- exiv2_FOUND AND
+ Exiv2_FOUND AND
EXPAT_FOUND AND
JPEG_FOUND AND
KF5_FOUND AND
diff --git a/core/app/DigikamCoreTarget.cmake b/core/app/DigikamCoreTarget.cmake
index 72b424cb36..7aa6dc5a1e 100644
--- a/core/app/DigikamCoreTarget.cmake
+++ b/core/app/DigikamCoreTarget.cmake
@@ -116,7 +116,7 @@ target_link_libraries(digikamcore
${TIFF_LIBRARIES}
PNG::PNG
${JPEG_LIBRARIES}
- exiv2lib
+ ${EXIV2_LIBRARIES}
${FFMPEG_LIBRARIES}
diff --git a/core/cmake/modules/FindExiv2.cmake b/core/cmake/modules/FindExiv2.cmake
new file mode 100644
index 0000000000..912ffaee0c
--- /dev/null
+++ b/core/cmake/modules/FindExiv2.cmake
@@ -0,0 +1,116 @@
+# - Try to find the Exiv2 library
+#
+# EXIV2_MIN_VERSION - You can set this variable to the minimum version you need
+# before doing FIND_PACKAGE(Exiv2). The default is 0.26.
+#
+# Once done this will define
+#
+# EXIV2_FOUND - system has libexiv2
+# EXIV2_VERSION - the version of libexiv2
+# EXIV2_INCLUDE_DIR - the libexiv2 include directory
+# EXIV2_LIBRARIES - Link these to use libexiv2
+# EXIV2_DEFINITIONS - Compiler switches required for using libexiv2
+#
+# The minimum required version of Exiv2 can be specified using the
+# standard syntax, e.g. find_package(Exiv2 0.26)
+#
+# For compatibility, also the variable EXIV2_MIN_VERSION can be set to the minimum version
+# you need before doing FIND_PACKAGE(Exiv2). The default is 0.26.
+#
+# Copyright (c) 2010, Alexander Neundorf, <neundorf at kde dot org>
+# Copyright (c) 2008-2019, Gilles Caulier, <caulier dot gilles at gmail dot com>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+# Support EXIV2_MIN_VERSION for compatibility:
+
+if(NOT Exiv2_FIND_VERSION)
+
+ set(Exiv2_FIND_VERSION "${EXIV2_MIN_VERSION}")
+
+endif()
+
+# The minimum version of exiv2 we require
+if(NOT Exiv2_FIND_VERSION)
+
+ set(Exiv2_FIND_VERSION "0.26")
+
+endif()
+
+if(NOT WIN32)
+
+ # use pkg-config to get the directories and then use these values
+ # in the FIND_PATH() and FIND_LIBRARY() calls
+ find_package(PkgConfig)
+ pkg_check_modules(PC_EXIV2 QUIET exiv2)
+ set(EXIV2_DEFINITIONS ${PC_EXIV2_CFLAGS_OTHER})
+
+endif()
+
+find_path(EXIV2_INCLUDE_DIR NAMES exiv2/exif.hpp
+ HINTS
+ ${PC_EXIV2_INCLUDEDIR}
+ ${PC_EXIV2_INCLUDE_DIRS}
+ )
+
+find_library(EXIV2_LIBRARY NAMES exiv2 libexiv2 exiv2lib
+ HINTS
+ ${PC_EXIV2_LIBDIR}
+ ${PC_EXIV2_LIBRARY_DIRS}
+ )
+
+if (EXIV2_INCLUDE_DIR AND NOT EXIV2_VERSION)
+
+ # For Exiv2 <= 0.26, get the version number from exiv2/version.hpp and store it in the cache:
+
+ file(READ ${EXIV2_INCLUDE_DIR}/exiv2/version.hpp EXIV2_VERSION_CONTENT)
+ string(REGEX MATCH "#define EXIV2_MAJOR_VERSION +\\( *([0-9]+) *\\)" _dummy "${EXIV2_VERSION_CONTENT}")
+ set(EXIV2_VERSION_MAJOR "${CMAKE_MATCH_1}")
+
+ string(REGEX MATCH "#define EXIV2_MINOR_VERSION +\\( *([0-9]+) *\\)" _dummy "${EXIV2_VERSION_CONTENT}")
+ set(EXIV2_VERSION_MINOR "${CMAKE_MATCH_1}")
+
+ string(REGEX MATCH "#define EXIV2_PATCH_VERSION +\\( *([0-9]+) *\\)" _dummy "${EXIV2_VERSION_CONTENT}")
+ set(EXIV2_VERSION_PATCH "${CMAKE_MATCH_1}")
+
+ if(NOT "${EXIV2_VERSION_MAJOR}" STREQUAL "" AND
+ NOT "${EXIV2_VERSION_MINOR}" STREQUAL "" AND
+ NOT "${EXIV2_VERSION_PATCH}" STREQUAL "")
+
+ set(EXIV2_VERSION "${EXIV2_VERSION_MAJOR}.${EXIV2_VERSION_MINOR}.${EXIV2_VERSION_PATCH}"
+ CACHE STRING "Version number of Exiv2" FORCE)
+ else()
+
+ # For Exiv2 >= 0.27, get the version number from exiv2/exv_conf.h and store it in the cache:
+
+ file(READ ${EXIV2_INCLUDE_DIR}/exiv2/exv_conf.h EXIV2_VERSION_CONTENT)
+ string(REGEX MATCH "#define EXIV2_MAJOR_VERSION +\\( *([0-9]+) *\\)" _dummy "${EXIV2_VERSION_CONTENT}")
+ set(EXIV2_VERSION_MAJOR "${CMAKE_MATCH_1}")
+
+ string(REGEX MATCH "#define EXIV2_MINOR_VERSION +\\( *([0-9]+) *\\)" _dummy "${EXIV2_VERSION_CONTENT}")
+ set(EXIV2_VERSION_MINOR "${CMAKE_MATCH_1}")
+
+ string(REGEX MATCH "#define EXIV2_PATCH_VERSION +\\( *([0-9]+) *\\)" _dummy "${EXIV2_VERSION_CONTENT}")
+ set(EXIV2_VERSION_PATCH "${CMAKE_MATCH_1}")
+
+ set(EXIV2_VERSION "${EXIV2_VERSION_MAJOR}.${EXIV2_VERSION_MINOR}.${EXIV2_VERSION_PATCH}"
+ CACHE STRING "Version number of Exiv2" FORCE)
+
+ endif()
+
+endif()
+
+set(EXIV2_LIBRARIES "${EXIV2_LIBRARY}")
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Exiv2 REQUIRED_VARS EXIV2_LIBRARY EXIV2_INCLUDE_DIR
+ VERSION_VAR EXIV2_VERSION)
+
+MESSAGE(STATUS "EXIV2_FOUND = ${EXIV2_FOUND}")
+MESSAGE(STATUS "EXIV2_VERSION = ${EXIV2_VERSION}")
+MESSAGE(STATUS "EXIV2_INCLUDE_DIR = ${EXIV2_INCLUDE_DIR}")
+MESSAGE(STATUS "EXIV2_LIBRARY = ${EXIV2_LIBRARY}")
+MESSAGE(STATUS "EXIV2_DEFINITIONS = ${EXIV2_DEFINITIONS}")
+
+mark_as_advanced(EXIV2_INCLUDE_DIR EXIV2_LIBRARY)
diff --git a/core/libs/metadataengine/CMakeLists.txt b/core/libs/metadataengine/CMakeLists.txt
index 64754c882c..da6fac050a 100644
--- a/core/libs/metadataengine/CMakeLists.txt
+++ b/core/libs/metadataengine/CMakeLists.txt
@@ -7,14 +7,13 @@
kde_enable_exceptions()
-# TODO: How to extract exiv2lib definitions properties with cmake import interface?
-#add_definitions($<TARGET_PROPERTY:exiv2lib,INTERFACE_COMPILE_DEFINITIONS>)
+add_definitions(${EXIV2_DEFINITIONS})
if(WIN32)
- add_definitions(-DEXV_HAVE_DLL)
+ add_definitions( -DEXV_HAVE_DLL )
endif()
-if("${exiv2_VERSION}" VERSION_LESS "0.27.99")
+if("${EXIV2_VERSION}" VERSION_LESS "0.27.99")
# Exiv2 version < 0.28 use auto_ptr instead unique_ptr which is deprecated.
DISABLE_GCC_COMPILER_WARNINGS("5.99.99" "-Wno-deprecated")
@@ -64,13 +63,12 @@ set(libdmetadata_SRCS
)
include_directories(
+ ${EXIV2_INCLUDE_DIR}
$<TARGET_PROPERTY:Qt5::Gui,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:Qt5::Core,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:KF5::ConfigCore,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:KF5::I18n,INTERFACE_INCLUDE_DIRECTORIES>
-
- $<TARGET_PROPERTY:exiv2lib,INTERFACE_INCLUDE_DIRECTORIES>
)
add_library(dmetadata_src OBJECT ${libdmetadata_SRCS})
--
2.16.4

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:94dc05e3f9c08b83419010d1689c7b0398d4eced4fef42375249c974622874ba
size 335641824

3
digikam-6.4.0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:775012ff515bdd25a0b894c95bf5d33e7122b523da9c0f3af260ec3eff498d6f
size 340146992

View File

@ -1,3 +1,34 @@
-------------------------------------------------------------------
Thu Nov 21 21:38:08 UTC 2019 - wbauer@tmo.at
- Add patch to make it build with exiv2 0.26 on Leap 15:
* 0001-Revert-Exiv2-is-now-released-with-exported-targets-u.patch
(boo#1156937)
- Update to latest upstream 6.4.0 source tarball
-------------------------------------------------------------------
Sat Nov 9 23:41:23 UTC 2019 - wbauer@tmo.at
- Update to 6.4.0
* https://www.digikam.org/news/2019-11-09-6.4.0_release_announcement/
- New features (from NEWS):
General : new RawImport plugin interface to delegate Raw
decoding function to extra engine with ImageEditor.
General : new DImg plugin interface to externalize image loaders
from core implementation.
General : new HEIC image loader compatible with media generated
by Apple devices.
Import : add new option to convert on the fly to HEIC lossless
format while downloading.
ImageEditor: add new setting from setup dialog to select right Raw
Import plugin.
ImageEditor: add new clone tool to fix artifacts on image.
ImageEditor: add new tool to import RAW image using UFRaw.
ImageEditor: add new tool to import RAW image using RawTherapee.
ImageEditor: add new tool to import RAW image using DarkTable.
BQM : add new tool to convert to HEIC format.
- 75 bugs fixed
-------------------------------------------------------------------
Tue Oct 1 13:07:53 UTC 2019 - Michel Normand <normand@linux.vnet.ibm.com>

View File

@ -19,15 +19,17 @@
%define soversion 6
%bcond_without lang
Name: digikam
Version: 6.3.0
Version: 6.4.0
Release: 0
Summary: A KDE Photo Manager
License: GPL-2.0-or-later
Group: Productivity/Graphics/Viewers
URL: http://www.digikam.org/
Source0: http://download.kde.org/stable/%{name}/%{version}/%{name}-%{version}.tar.xz
URL: https://www.digikam.org/
Source0: https://download.kde.org/stable/%{name}/%{version}/%{name}-%{version}.tar.xz
# PATCH-FIX-OPENSUSE 0001-Disable-detection-of-OpenGL-for-GLES-platforms.patch -- The OpenGL slideshow depends on Desktop GL, see kde#383715
Patch0: 0001-Disable-detection-of-OpenGL-for-GLES-platforms.patch
# PATCH-FIX-OPENSUSE -- Lower minimum exiv2 version to 0.26
Patch1: 0001-Revert-Exiv2-is-now-released-with-exported-targets-u.patch
BuildRequires: QtAV-devel >= 1.12
BuildRequires: bison
BuildRequires: boost-devel
@ -173,6 +175,10 @@ The main digikam libraries that are being shared between showfoto and digikam
# Disable OpenGL slideshow on embedded platforms
%patch0 -p1
%endif
%if 0%{?suse_version} <= 1500
# Leap 15 only has exiv2 0.26
%patch1 -p1
%endif
# Remove build time references so build-compare can do its work
FAKE_BUILDDATE=$(LC_ALL=C date -u -r %{_sourcedir}/%{name}.changes '+%%b %%e %%Y')