Gentoo Archives: gentoo-commits

From: Andreas Sturmlechner <asturm@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-gfx/krita/, media-gfx/krita/files/
Date: Fri, 28 Dec 2018 17:48:08
Message-Id: 1546019255.2bbfd797742c55c3b7ccb14dbc36ab931e9d5bfe.asturm@gentoo
1 commit: 2bbfd797742c55c3b7ccb14dbc36ab931e9d5bfe
2 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
3 AuthorDate: Wed Dec 26 12:03:06 2018 +0000
4 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
5 CommitDate: Fri Dec 28 17:47:35 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2bbfd797
7
8 media-gfx/krita: Fix build with >=exiv2-0.27
9
10 Package-Manager: Portage-2.3.52, Repoman-2.3.12
11 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
12
13 media-gfx/krita/files/krita-4.1.7-exiv2-0.27.patch | 354 +++++++++++++++++++++
14 media-gfx/krita/krita-4.1.7.ebuild | 5 +-
15 2 files changed, 358 insertions(+), 1 deletion(-)
16
17 diff --git a/media-gfx/krita/files/krita-4.1.7-exiv2-0.27.patch b/media-gfx/krita/files/krita-4.1.7-exiv2-0.27.patch
18 new file mode 100644
19 index 00000000000..41b290852eb
20 --- /dev/null
21 +++ b/media-gfx/krita/files/krita-4.1.7-exiv2-0.27.patch
22 @@ -0,0 +1,354 @@
23 +From 6b6758bb37da4997be36a7e2a839b07278160559 Mon Sep 17 00:00:00 2001
24 +From: Andreas Sturmlechner <andreas.sturmlechner@×××××.com>
25 +Date: Thu, 27 Dec 2018 22:40:44 +0100
26 +Subject: [PATCH] Fix building against exiv2-0.27
27 +
28 +Summary:
29 +Copied FindLibExiv2.cmake from ECM 5.53.0 until we raise min version.
30 +
31 +Thanks-to: Boudewijn Rempt <boud@×××××××.org>
32 +for final fix to kis_xmp_io.cpp.
33 +
34 +CCBUG: 402566
35 +
36 +Test Plan: Built fine against exiv2-0.26 and exiv2-0.27.
37 +
38 +Reviewers: #krita, rempt
39 +
40 +Reviewed By: #krita, rempt
41 +
42 +Subscribers: pino
43 +
44 +Tags: #krita
45 +
46 +Differential Revision: https://phabricator.kde.org/D17810
47 +---
48 + CMakeLists.txt | 6 +-
49 + cmake/modules/FindLibExiv2.cmake | 115 ++++++++++++++++++++++++++++++
50 + libs/ui/CMakeLists.txt | 3 +-
51 + libs/ui/kisexiv2/kis_exif_io.cpp | 14 ++--
52 + libs/ui/kisexiv2/kis_exiv2.h | 2 +-
53 + libs/ui/kisexiv2/kis_iptc_io.cpp | 4 +-
54 + libs/ui/kisexiv2/kis_xmp_io.cpp | 6 +-
55 + plugins/impex/jpeg/CMakeLists.txt | 5 +-
56 + 8 files changed, 130 insertions(+), 25 deletions(-)
57 + create mode 100644 cmake/modules/FindLibExiv2.cmake
58 +
59 +diff --git a/CMakeLists.txt b/CMakeLists.txt
60 +index 5558088200..b2d2cd497e 100644
61 +--- a/CMakeLists.txt
62 ++++ b/CMakeLists.txt
63 +@@ -607,11 +607,7 @@ set_package_properties(Eigen3 PROPERTIES
64 + ##
65 + ## Test for exiv2
66 + ##
67 +-find_package(Exiv2 0.16 REQUIRED)
68 +-set_package_properties(Exiv2 PROPERTIES
69 +- DESCRIPTION "Image metadata library and tools"
70 +- URL "http://www.exiv2.org"
71 +- PURPOSE "Required by Krita")
72 ++find_package(LibExiv2 0.16 REQUIRED)
73 +
74 + ##
75 + ## Test for lcms
76 +diff --git a/cmake/modules/FindLibExiv2.cmake b/cmake/modules/FindLibExiv2.cmake
77 +new file mode 100644
78 +index 0000000000..935cee2c55
79 +--- /dev/null
80 ++++ b/cmake/modules/FindLibExiv2.cmake
81 +@@ -0,0 +1,115 @@
82 ++#.rst:
83 ++# FindLibExiv2
84 ++# ------------
85 ++#
86 ++# Try to find the Exiv2 library.
87 ++#
88 ++# This will define the following variables:
89 ++#
90 ++# ``LibExiv2_FOUND``
91 ++# System has LibExiv2.
92 ++#
93 ++# ``LibExiv2_VERSION``
94 ++# The version of LibExiv2.
95 ++#
96 ++# ``LibExiv2_INCLUDE_DIRS``
97 ++# This should be passed to target_include_directories() if
98 ++# the target is not used for linking.
99 ++#
100 ++# ``LibExiv2_LIBRARIES``
101 ++# The LibExiv2 library.
102 ++# This can be passed to target_link_libraries() instead of
103 ++# the ``LibExiv2::LibExiv2`` target
104 ++#
105 ++# If ``LibExiv2_FOUND`` is TRUE, the following imported target
106 ++# will be available:
107 ++#
108 ++# ``LibExiv2::LibExiv2``
109 ++# The Exiv2 library
110 ++#
111 ++# Since 5.53.0.
112 ++#
113 ++#=============================================================================
114 ++# Copyright (c) 2018, Christophe Giboudeaux, <christophe@××××.fr>
115 ++# Copyright (c) 2010, Alexander Neundorf, <neundorf@×××.org>
116 ++# Copyright (c) 2008, Gilles Caulier, <caulier.gilles@×××××.com>
117 ++#
118 ++#
119 ++# Redistribution and use in source and binary forms, with or without
120 ++# modification, are permitted provided that the following conditions
121 ++# are met:
122 ++#
123 ++# 1. Redistributions of source code must retain the copyright
124 ++# notice, this list of conditions and the following disclaimer.
125 ++# 2. Redistributions in binary form must reproduce the copyright
126 ++# notice, this list of conditions and the following disclaimer in the
127 ++# documentation and/or other materials provided with the distribution.
128 ++# 3. The name of the author may not be used to endorse or promote products
129 ++# derived from this software without specific prior written permission.
130 ++#
131 ++# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
132 ++# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
133 ++# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
134 ++# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
135 ++# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
136 ++# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
137 ++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
138 ++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
139 ++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
140 ++# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
141 ++#=============================================================================
142 ++
143 ++find_package(PkgConfig QUIET)
144 ++pkg_check_modules(PC_EXIV2 QUIET exiv2)
145 ++
146 ++find_path(LibExiv2_INCLUDE_DIRS NAMES exiv2/exif.hpp
147 ++ HINTS ${PC_EXIV2_INCLUDEDIR}
148 ++)
149 ++
150 ++find_library(LibExiv2_LIBRARIES NAMES exiv2 libexiv2
151 ++ HINTS ${PC_EXIV2_LIBRARY_DIRS}
152 ++)
153 ++
154 ++set(LibExiv2_VERSION ${PC_EXIV2_VERSION})
155 ++
156 ++if(NOT LibExiv2_VERSION AND DEFINED LibExiv2_INCLUDE_DIRS)
157 ++ # With exiv >= 0.27, the version #defines are in exv_conf.h instead of version.hpp
158 ++ foreach(_exiv2_version_file "version.hpp" "exv_conf.h")
159 ++ if(EXISTS "${LibExiv2_INCLUDE_DIRS}/exiv2/${_exiv2_version_file}")
160 ++ file(READ "${LibExiv2_INCLUDE_DIRS}/exiv2/${_exiv2_version_file}" _exiv_version_file_content)
161 ++ string(REGEX MATCH "#define EXIV2_MAJOR_VERSION[ ]+\\([0-9]+\\)" EXIV2_MAJOR_VERSION_MATCH ${_exiv_version_file_content})
162 ++ string(REGEX MATCH "#define EXIV2_MINOR_VERSION[ ]+\\([0-9]+\\)" EXIV2_MINOR_VERSION_MATCH ${_exiv_version_file_content})
163 ++ string(REGEX MATCH "#define EXIV2_PATCH_VERSION[ ]+\\([0-9]+\\)" EXIV2_PATCH_VERSION_MATCH ${_exiv_version_file_content})
164 ++ if(EXIV2_MAJOR_VERSION_MATCH)
165 ++ string(REGEX REPLACE ".*_MAJOR_VERSION[ ]+\\((.*)\\)" "\\1" EXIV2_MAJOR_VERSION ${EXIV2_MAJOR_VERSION_MATCH})
166 ++ string(REGEX REPLACE ".*_MINOR_VERSION[ ]+\\((.*)\\)" "\\1" EXIV2_MINOR_VERSION ${EXIV2_MINOR_VERSION_MATCH})
167 ++ string(REGEX REPLACE ".*_PATCH_VERSION[ ]+\\((.*)\\)" "\\1" EXIV2_PATCH_VERSION ${EXIV2_PATCH_VERSION_MATCH})
168 ++ endif()
169 ++ endif()
170 ++ endforeach()
171 ++
172 ++ set(LibExiv2_VERSION "${EXIV2_MAJOR_VERSION}.${EXIV2_MINOR_VERSION}.${EXIV2_PATCH_VERSION}")
173 ++endif()
174 ++
175 ++include(FindPackageHandleStandardArgs)
176 ++find_package_handle_standard_args(LibExiv2
177 ++ FOUND_VAR LibExiv2_FOUND
178 ++ REQUIRED_VARS LibExiv2_LIBRARIES LibExiv2_INCLUDE_DIRS
179 ++ VERSION_VAR LibExiv2_VERSION
180 ++)
181 ++
182 ++mark_as_advanced(LibExiv2_INCLUDE_DIRS LibExiv2_LIBRARIES)
183 ++
184 ++if(LibExiv2_FOUND AND NOT TARGET LibExiv2::LibExiv2)
185 ++ add_library(LibExiv2::LibExiv2 UNKNOWN IMPORTED)
186 ++ set_target_properties(LibExiv2::LibExiv2 PROPERTIES
187 ++ IMPORTED_LOCATION "${LibExiv2_LIBRARIES}"
188 ++ INTERFACE_INCLUDE_DIRECTORIES "${LibExiv2_INCLUDE_DIRS}"
189 ++ )
190 ++endif()
191 ++
192 ++include(FeatureSummary)
193 ++set_package_properties(LibExiv2 PROPERTIES
194 ++ URL "http://www.exiv2.org"
195 ++ DESCRIPTION "Image metadata support"
196 ++)
197 +diff --git a/libs/ui/CMakeLists.txt b/libs/ui/CMakeLists.txt
198 +index f14d3591bc..ff57f53158 100644
199 +--- a/libs/ui/CMakeLists.txt
200 ++++ b/libs/ui/CMakeLists.txt
201 +@@ -1,6 +1,5 @@
202 + include_directories(
203 + ${CMAKE_CURRENT_SOURCE_DIR}/qtlockedfile
204 +- ${EXIV2_INCLUDE_DIR}
205 + )
206 +
207 + include_directories(SYSTEM
208 +@@ -544,7 +543,7 @@ add_library(kritaui SHARED ${kritaui_HEADERS_MOC} ${kritaui_LIB_SRCS} )
209 + generate_export_header(kritaui BASE_NAME kritaui)
210 +
211 + target_link_libraries(kritaui KF5::CoreAddons KF5::Completion KF5::I18n KF5::ItemViews Qt5::Network
212 +- kritaimpex kritacolor kritaimage kritalibbrush kritawidgets kritawidgetutils ${PNG_LIBRARIES} ${EXIV2_LIBRARIES}
213 ++ kritaimpex kritacolor kritaimage kritalibbrush kritawidgets kritawidgetutils ${PNG_LIBRARIES} LibExiv2::LibExiv2
214 + )
215 +
216 + if (HAVE_QT_MULTIMEDIA)
217 +diff --git a/libs/ui/kisexiv2/kis_exif_io.cpp b/libs/ui/kisexiv2/kis_exif_io.cpp
218 +index 1a01fedf33..4a7857aa9c 100644
219 +--- a/libs/ui/kisexiv2/kis_exif_io.cpp
220 ++++ b/libs/ui/kisexiv2/kis_exif_io.cpp
221 +@@ -438,11 +438,10 @@ bool KisExifIO::saveTo(KisMetaData::Store* store, QIODevice* ioDevice, HeaderTyp
222 + if (entry.value().asArray().size() > 0) {
223 + creator = entry.value().asArray()[0];
224 + }
225 +-#if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 20
226 ++#if !EXIV2_TEST_VERSION(0,21,0)
227 + v = kmdValueToExivValue(creator, Exiv2::ExifTags::tagType(exifKey.tag(), exifKey.ifdId()));
228 + #else
229 + v = kmdValueToExivValue(creator, exifKey.defaultTypeId());
230 +-
231 + #endif
232 + } else if (exivKey == "Exif.Photo.OECF") {
233 + v = kmdOECFStructureToExifOECF(entry.value());
234 +@@ -456,13 +455,13 @@ bool KisExifIO::saveTo(KisMetaData::Store* store, QIODevice* ioDevice, HeaderTyp
235 + Q_ASSERT(entry.value().type() == KisMetaData::Value::LangArray);
236 + QMap<QString, KisMetaData::Value> langArr = entry.value().asLangArray();
237 + if (langArr.contains("x-default")) {
238 +-#if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 20
239 ++#if !EXIV2_TEST_VERSION(0,21,0)
240 + v = kmdValueToExivValue(langArr.value("x-default"), Exiv2::ExifTags::tagType(exifKey.tag(), exifKey.ifdId()));
241 + #else
242 + v = kmdValueToExivValue(langArr.value("x-default"), exifKey.defaultTypeId());
243 + #endif
244 + } else if (langArr.size() > 0) {
245 +-#if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 20
246 ++#if !EXIV2_TEST_VERSION(0,21,0)
247 + v = kmdValueToExivValue(langArr.begin().value(), Exiv2::ExifTags::tagType(exifKey.tag(), exifKey.ifdId()));
248 + #else
249 + v = kmdValueToExivValue(langArr.begin().value(), exifKey.defaultTypeId());
250 +@@ -470,7 +469,7 @@ bool KisExifIO::saveTo(KisMetaData::Store* store, QIODevice* ioDevice, HeaderTyp
251 + }
252 + } else {
253 + dbgMetaData << exifKey.tag();
254 +-#if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 20
255 ++#if !EXIV2_TEST_VERSION(0,21,0)
256 + v = kmdValueToExivValue(entry.value(), Exiv2::ExifTags::tagType(exifKey.tag(), exifKey.ifdId()));
257 + #else
258 + v = kmdValueToExivValue(entry.value(), exifKey.defaultTypeId());
259 +@@ -487,7 +486,7 @@ bool KisExifIO::saveTo(KisMetaData::Store* store, QIODevice* ioDevice, HeaderTyp
260 + dbgMetaData << "exiv error " << e.what();
261 + }
262 + }
263 +-#if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 17
264 ++#if !EXIV2_TEST_VERSION(0,18,0)
265 + Exiv2::DataBuf rawData = exifData.copy();
266 + ioDevice->write((const char*) rawData.pData_, rawData.size_);
267 + #else
268 +@@ -514,7 +513,7 @@ bool KisExifIO::loadFrom(KisMetaData::Store* store, QIODevice* ioDevice) const
269 + QByteArray arr = ioDevice->readAll();
270 + Exiv2::ExifData exifData;
271 + Exiv2::ByteOrder byteOrder;
272 +-#if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 17
273 ++#if !EXIV2_TEST_VERSION(0,18,0)
274 + exifData.load((const Exiv2::byte*)arr.data(), arr.size());
275 + byteOrder = exifData.byteOrder();
276 + #else
277 +@@ -529,7 +528,6 @@ bool KisExifIO::loadFrom(KisMetaData::Store* store, QIODevice* ioDevice) const
278 + dbgKrita << "Received unknown exception trying to parse exiv data";
279 + return false;
280 + }
281 +-
282 + #endif
283 + dbgMetaData << "Byte order = " << byteOrder << ppVar(Exiv2::bigEndian) << ppVar(Exiv2::littleEndian);
284 + dbgMetaData << "There are" << exifData.count() << " entries in the exif section";
285 +diff --git a/libs/ui/kisexiv2/kis_exiv2.h b/libs/ui/kisexiv2/kis_exiv2.h
286 +index 9343265f1e..6b66aa7852 100644
287 +--- a/libs/ui/kisexiv2/kis_exiv2.h
288 ++++ b/libs/ui/kisexiv2/kis_exiv2.h
289 +@@ -21,7 +21,7 @@
290 +
291 +
292 + #include <metadata/kis_meta_data_value.h>
293 +-#include <exiv2/value.hpp>
294 ++#include <exiv2/exiv2.hpp>
295 + #include "kritaui_export.h"
296 +
297 + /// Convert an exiv value to a KisMetaData value
298 +diff --git a/libs/ui/kisexiv2/kis_iptc_io.cpp b/libs/ui/kisexiv2/kis_iptc_io.cpp
299 +index d2eb7c9b2f..0ac881f61b 100644
300 +--- a/libs/ui/kisexiv2/kis_iptc_io.cpp
301 ++++ b/libs/ui/kisexiv2/kis_iptc_io.cpp
302 +@@ -126,7 +126,7 @@ bool KisIptcIO::saveTo(KisMetaData::Store* store, QIODevice* ioDevice, HeaderTyp
303 + }
304 + }
305 + }
306 +-#if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 17
307 ++#if !EXIV2_TEST_VERSION(0,18,0)
308 + Exiv2::DataBuf rawData = iptcData.copy();
309 + #else
310 + Exiv2::DataBuf rawData = Exiv2::IptcParser::encode(iptcData);
311 +@@ -167,7 +167,7 @@ bool KisIptcIO::loadFrom(KisMetaData::Store* store, QIODevice* ioDevice) const
312 + ioDevice->open(QIODevice::ReadOnly);
313 + QByteArray arr = ioDevice->readAll();
314 + Exiv2::IptcData iptcData;
315 +-#if EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION <= 17
316 ++#if !EXIV2_TEST_VERSION(0,18,0)
317 + iptcData.load((const Exiv2::byte*)arr.data(), arr.size());
318 + #else
319 + Exiv2::IptcParser::decode(iptcData, (const Exiv2::byte*)arr.data(), arr.size());
320 +diff --git a/libs/ui/kisexiv2/kis_xmp_io.cpp b/libs/ui/kisexiv2/kis_xmp_io.cpp
321 +index c4663efe7d..72fa5c5d38 100644
322 +--- a/libs/ui/kisexiv2/kis_xmp_io.cpp
323 ++++ b/libs/ui/kisexiv2/kis_xmp_io.cpp
324 +@@ -17,7 +17,6 @@
325 + #include "kis_xmp_io.h"
326 +
327 + #include <string>
328 +-#include <exiv2/xmp.hpp>
329 +
330 + #include "kis_exiv2.h"
331 +
332 +@@ -277,9 +276,8 @@ bool KisXMPIO::loadFrom(KisMetaData::Store* store, QIODevice* ioDevice) const
333 + const Exiv2::XmpArrayValue* xav = dynamic_cast<const Exiv2::XmpArrayValue*>(value.get());
334 + Q_ASSERT(xav);
335 + QList<KisMetaData::Value> array;
336 +- for (std::vector< std::string >::const_iterator it = xav->value_.begin();
337 +- it != xav->value_.end(); ++it) {
338 +- QString value = it->c_str();
339 ++ for (int i = 0; i < xav->size(); ++i) {
340 ++ QString value = QString::fromStdString(xav->toString(i));
341 + if (parser) {
342 + array.push_back(parser->parse(value));
343 + } else {
344 +diff --git a/plugins/impex/jpeg/CMakeLists.txt b/plugins/impex/jpeg/CMakeLists.txt
345 +index 347e46dbe3..50edb05c96 100644
346 +--- a/plugins/impex/jpeg/CMakeLists.txt
347 ++++ b/plugins/impex/jpeg/CMakeLists.txt
348 +@@ -4,7 +4,6 @@ set(ICCJPEG_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/lcms")
349 +
350 + include_directories(
351 + ${ICCJPEG_SOURCE_DIR}
352 +- ${EXIV2_INCLUDE_DIR}
353 + )
354 +
355 + include_directories(SYSTEM
356 +@@ -25,7 +24,7 @@ set(kritajpegimport_SOURCES
357 +
358 + add_library(kritajpegimport MODULE ${kritajpegimport_SOURCES})
359 +
360 +-target_link_libraries(kritajpegimport kritaui ${JPEG_LIBRARIES} ${LCMS2_LIBRARIES} ${EXIV2_LIBRARIES} )
361 ++target_link_libraries(kritajpegimport kritaui ${JPEG_LIBRARIES} ${LCMS2_LIBRARIES} LibExiv2::LibExiv2 )
362 +
363 + install(TARGETS kritajpegimport DESTINATION ${KRITA_PLUGIN_INSTALL_DIR})
364 +
365 +@@ -38,7 +37,7 @@ ki18n_wrap_ui(kritajpegexport_SOURCES kis_wdg_options_jpeg.ui )
366 +
367 + add_library(kritajpegexport MODULE ${kritajpegexport_SOURCES})
368 +
369 +-target_link_libraries(kritajpegexport kritaui kritaimpex ${JPEG_LIBRARIES} ${LCMS2_LIBRARIES} ${EXIV2_LIBRARIES} )
370 ++target_link_libraries(kritajpegexport kritaui kritaimpex ${JPEG_LIBRARIES} ${LCMS2_LIBRARIES} LibExiv2::LibExiv2 )
371 +
372 + install(TARGETS kritajpegexport DESTINATION ${KRITA_PLUGIN_INSTALL_DIR})
373 + install( PROGRAMS krita_jpeg.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
374 +--
375 +2.20.1
376 +
377
378 diff --git a/media-gfx/krita/krita-4.1.7.ebuild b/media-gfx/krita/krita-4.1.7.ebuild
379 index 9982412f267..efe9923bc33 100644
380 --- a/media-gfx/krita/krita-4.1.7.ebuild
381 +++ b/media-gfx/krita/krita-4.1.7.ebuild
382 @@ -86,7 +86,10 @@ RDEPEND="${COMMON_DEPEND}
383 # bug 630508
384 RESTRICT+=" test"
385
386 -PATCHES=( "${FILESDIR}/${PN}-4.0.3-tests-optional.patch" )
387 +PATCHES=(
388 + "${FILESDIR}/${PN}-4.0.3-tests-optional.patch"
389 + "${FILESDIR}/${P}-exiv2-0.27.patch"
390 +)
391
392 S="${S}.101"