UPDATE: graphics/exiv2

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

UPDATE: graphics/exiv2

Rafael Sadowski
Please find below one all-in-on diff to update exiv2 to 0.27.2 and fix all
consumer. Here is a full list:

FIXED 11/kde4/libs
FIXED databases/strigi
FIXED graphics/hugin
FIXED graphics/nomacs
FIXED graphics/rawstudio
FIXED graphics/ufraw
FIXED sysutils/krename
FIXED x11/kde4/kfilemetadata
FIXED x11/kde4/libkexiv2

OK devel/kf5/kfilemetadata
OK geo/qgis
OK graphics/darktable
OK graphics/dibuja
OK graphics/digikam
OK graphics/geeqie
OK graphics/gthumb
OK graphics/krita
OK graphics/libgexiv2
OK graphics/pdf2djvu
OK graphics/viewnior
OK x11/gnome/color-manager
OK x11/kde-applications/gwenvie
OK x11/kde-applications/libkexiv2

Fixed by fixing x11/kde4/libs so REVISION bump only:
OK x11/kde4/nepomuk-core
OK 11/kde4/runtime

Noteable exiv2 port changes:

- Switch to cmake and enable i18n support
- Change COMMENT and cleanup DESCR
- Switch to https
- don't provide the new Exiv2::getProcessPath() function.  Not portable,
  doesn't work on OpenBSD, and shouldn't be exposed in the API of a
  graphics library.  Instead, define a macro with CMake to help runtime
  find gettext files. from jca@'s commit
  https://v4.freshbsd.org/commit/openbsd/ports/fHGCS7kzl4zKjdnW
- All consumer fixed. configure checks, port-lib-depends-checks checks
  and also some run-time tests with krita, digikam, nomacs.

Consumer patches from upstream, gentoo, freebsd and by me for the old
creepy KDE4 stuff.

Bulk welcome but I'm quite sure it'll survive. OK?


diff --git databases/strigi/Makefile databases/strigi/Makefile
index 3907e5153d4..6f6e832bdd3 100644
--- databases/strigi/Makefile
+++ databases/strigi/Makefile
@@ -2,7 +2,7 @@
 
 COMMENT = document indexer
 DISTNAME = strigi-0.7.8
-REVISION = 3
+REVISION = 4
 CATEGORIES = databases devel textproc sysutils
 
 HOMEPAGE = https://www.vandenoever.info/software/strigi/
diff --git databases/strigi/patches/patch-libstreamanalyzer_cmake_FindExiv2_cmake databases/strigi/patches/patch-libstreamanalyzer_cmake_FindExiv2_cmake
new file mode 100644
index 00000000000..62ad1e4f332
--- /dev/null
+++ databases/strigi/patches/patch-libstreamanalyzer_cmake_FindExiv2_cmake
@@ -0,0 +1,19 @@
+$OpenBSD$
+
+Fix configure step with exiv2 2.27
+
+Index: libstreamanalyzer/cmake/FindExiv2.cmake
+--- libstreamanalyzer/cmake/FindExiv2.cmake.orig
++++ libstreamanalyzer/cmake/FindExiv2.cmake
+@@ -55,9 +55,9 @@ find_library(EXIV2_LIBRARY NAMES exiv2 libexiv2
+             )
+
+
+-# Get the version number from exiv2/version.hpp and store it in the cache:
++# Get the version number from exiv2/exv_conf.h and store it in the cache:
+ if(EXIV2_INCLUDE_DIR  AND NOT  EXIV2_VERSION)
+-  file(READ ${EXIV2_INCLUDE_DIR}/exiv2/version.hpp EXIV2_VERSION_CONTENT)
++  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}")
+
diff --git databases/strigi/patches/patch-libstreamanalyzer_plugins_endplugins_jpegendanalyzer_cpp databases/strigi/patches/patch-libstreamanalyzer_plugins_endplugins_jpegendanalyzer_cpp
new file mode 100644
index 00000000000..d42c01e597a
--- /dev/null
+++ databases/strigi/patches/patch-libstreamanalyzer_plugins_endplugins_jpegendanalyzer_cpp
@@ -0,0 +1,20 @@
+$OpenBSD$
+
+Index: libstreamanalyzer/plugins/endplugins/jpegendanalyzer.cpp
+--- libstreamanalyzer/plugins/endplugins/jpegendanalyzer.cpp.orig
++++ libstreamanalyzer/plugins/endplugins/jpegendanalyzer.cpp
+@@ -27,12 +27,14 @@
+ #include <strigi/fieldtypes.h>
+ #include <strigi/stringstream.h>
+ #include <strigi/textutils.h>
++#include <exiv2/exiv2.hpp>
+ #include <exiv2/exif.hpp>
+ #include <exiv2/image.hpp>
+ #include <exiv2/jpgimage.hpp>
+ #include <exiv2/error.hpp>
+ #include <math.h>
+ #include <time.h>
++#include <iostream>
+
+ #ifdef _MSC_VER
+ // at least MSVC2008 needs this define for defines like M_LN2
diff --git databases/strigi/patches/patch-libstreamanalyzer_plugins_endplugins_jpegendanalyzer_cpp.orig databases/strigi/patches/patch-libstreamanalyzer_plugins_endplugins_jpegendanalyzer_cpp.orig
new file mode 100644
index 00000000000..5ed2d4f5200
--- /dev/null
+++ databases/strigi/patches/patch-libstreamanalyzer_plugins_endplugins_jpegendanalyzer_cpp.orig
@@ -0,0 +1,13 @@
+$OpenBSD$
+
+Index: libstreamanalyzer/plugins/endplugins/jpegendanalyzer.cpp
+--- libstreamanalyzer/plugins/endplugins/jpegendanalyzer.cpp.orig
++++ libstreamanalyzer/plugins/endplugins/jpegendanalyzer.cpp
+@@ -33,6 +33,7 @@
+ #include <exiv2/error.hpp>
+ #include <math.h>
+ #include <time.h>
++#include <iostream>
+
+ #ifdef _MSC_VER
+ // at least MSVC2008 needs this define for defines like M_LN2
diff --git graphics/exiv2/Makefile graphics/exiv2/Makefile
old mode 100644
new mode 100755
index 37b85598cb7..69a70830eec
--- graphics/exiv2/Makefile
+++ graphics/exiv2/Makefile
@@ -1,38 +1,38 @@
 # $OpenBSD: Makefile,v 1.32 2019/07/12 20:46:58 sthen Exp $
 
-COMMENT= manipulate image meta-data such as exif and ipct
+COMMENT= image metadata manipulation
 
-DISTNAME= exiv2-0.26-trunk
-PKGNAME= exiv2-0.26
 CATEGORIES= graphics devel
+
+DISTNAME= exiv2-0.27.2-Source
+PKGNAME= exiv2-0.27.2
 EPOCH= 0
-REVISION= 1
 
-SHARED_LIBS +=  exiv2                11.0      # 14.0
+SHARED_LIBS +=  exiv2                12.0      # 14.0
 
-HOMEPAGE= http://www.exiv2.org/
+HOMEPAGE= https://www.exiv2.org/
 
 # GPLv2+
 PERMIT_PACKAGE= Yes
 
 WANTLIB += ${COMPILER_LIBCXX} c expat iconv intl m z
 
-COMPILER = base-clang ports-gcc base-gcc
-
-MASTER_SITES= http://www.exiv2.org/builds/
+MASTER_SITES = https://www.exiv2.org/builds/
 
-USE_GMAKE= Yes
-
-CONFIGURE_STYLE=gnu
-
-BUILD_DEPENDS= devel/gettext,-tools
+COMPILER = base-clang ports-gcc base-gcc
 
-LIB_DEPENDS= devel/gettext,-runtime
+MODULES = devel/cmake
 
-CONFIGURE_ARGS= --enable-static
+BUILD_DEPENDS = devel/gettext,-tools
+LIB_DEPENDS = devel/gettext,-runtime
 
-NO_TEST= Yes
+CONFIGURE_ARGS = -DEXIV2_ENABLE_NLS=ON
 
-WRKDIST= ${WRKDIR}/exiv2-trunk
+# dos line-endings in file needing patch
+post-extract:
+ @cd ${WRKSRC} && perl -i -pe 's/\r$$//' cmake/compilerFlags.cmake
 
 .include <bsd.port.mk>
+.if ${USE_CCACHE:L} == "yes"
+CONFIGURE_ARGS += -DBUILD_WITH_CCACHE=0N
+.endif
diff --git graphics/exiv2/distinfo graphics/exiv2/distinfo
index 13f849ba76a..2eb1fed97c2 100644
--- graphics/exiv2/distinfo
+++ graphics/exiv2/distinfo
@@ -1,2 +1,2 @@
-SHA256 (exiv2-0.26-trunk.tar.gz) = x148SggRv3ANksgjGTc7eoJaIzHBK4s31B61jk8Y6vs=
-SIZE (exiv2-0.26-trunk.tar.gz) = 5677925
+SHA256 (exiv2-0.27.2-Source.tar.gz) = JlL1a5EnETJ7r/bcDJCWCBghHPerebteHrWTILeNFT8=
+SIZE (exiv2-0.27.2-Source.tar.gz) = 27591236
diff --git graphics/exiv2/patches/patch-cmake_compilerFlags_cmake graphics/exiv2/patches/patch-cmake_compilerFlags_cmake
new file mode 100644
index 00000000000..7d5dbfefb8f
--- /dev/null
+++ graphics/exiv2/patches/patch-cmake_compilerFlags_cmake
@@ -0,0 +1,14 @@
+$OpenBSD$
+
+Index: cmake/compilerFlags.cmake
+--- cmake/compilerFlags.cmake.orig
++++ cmake/compilerFlags.cmake
+@@ -30,7 +30,7 @@ if ( MINGW OR UNIX OR MSYS ) # MINGW, Linux, APPLE, CY
+             set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
+         endif()
+
+-        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wcast-align -Wpointer-arith -Wformat-security -Wmissing-format-attribute -Woverloaded-virtual -W")
++        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wcast-align -Wpointer-arith -Wformat-security -Woverloaded-virtual -W")
+
+         if ( EXIV2_TEAM_USE_SANITIZERS )
+             # ASAN is available in gcc from 4.8 and UBSAN from 4.9
diff --git graphics/exiv2/patches/patch-config_config_mk_in graphics/exiv2/patches/patch-config_config_mk_in
deleted file mode 100644
index 7668259d117..00000000000
--- graphics/exiv2/patches/patch-config_config_mk_in
+++ /dev/null
@@ -1,15 +0,0 @@
-$OpenBSD: patch-config_config_mk_in,v 1.4 2019/02/14 16:03:34 jca Exp $
-
-- warnings about c++locale.h clutter the build
-
---- config/config.mk.in.orig Sun Jun 21 16:19:25 2015
-+++ config/config.mk.in Thu Nov 19 19:56:00 2015
-@@ -58,7 +58,7 @@ GXX = @GXX@
- # Common compiler flags (warnings, symbols [-ggdb], optimization [-O2], etc)
- CXXFLAGS = @CXXFLAGS@
- ifeq ($(GXX),yes)
-- CXXFLAGS += -Wall -Wcast-align -Wpointer-arith -Wformat-security -Wmissing-format-attribute -Woverloaded-virtual -W
-+ CXXFLAGS += -Wall -Wcast-align -Wpointer-arith -Wformat-security -Woverloaded-virtual -W
- endif
-
- # Command to run only the preprocessor
diff --git graphics/exiv2/patches/patch-src_Makefile graphics/exiv2/patches/patch-src_Makefile
deleted file mode 100644
index b981592a8e2..00000000000
--- graphics/exiv2/patches/patch-src_Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-$OpenBSD: patch-src_Makefile,v 1.7 2019/02/14 16:03:34 jca Exp $
-Index: src/Makefile
---- src/Makefile.orig
-+++ src/Makefile
-@@ -151,7 +151,7 @@ LIBRARY = libexiv2.la
-
- # ******************************************************************************
- # Initialisations
--SHELL = /bin/bash
-+SHELL = /bin/sh
-
- .SUFFIXES:
- .SUFFIXES: .c .cpp .o .so
-@@ -235,7 +235,7 @@ $(SRC): ../include/exiv2/exv_conf.h svn_version.h
-
- # svn_version.h is only rewritten when the svn info | grep Revision has changed
- svn_version.h:
-- ./svn_version.sh
-+# ./svn_version.sh
-
- version.hpp : svn_version.h
-
-@@ -252,7 +252,7 @@ $(BINARY): %: %.o lib
- @$(LIBTOOL) --mode=link $(LINK.cc) -o $@ $(LIBRARY) $@.o -rpath $(libdir)
-
- $(EXIV2EXE): lib $(EXIV2OBJ) $(EXIV2COBJ)
-- mkdir -pv ../bin 2>&1 > /dev/null
-+ mkdir -p ../bin 2>&1 > /dev/null
- @$(LIBTOOL) --mode=link $(LINK.cc) -o ../bin/$@ $(LIBRARY) $(EXIV2OBJ) $(EXIV2COBJ) -rpath $(libdir)
-
- install-header:
diff --git graphics/exiv2/patches/patch-src_actions_cpp graphics/exiv2/patches/patch-src_actions_cpp
index 870ea4e9dfc..5432e4c2935 100644
--- graphics/exiv2/patches/patch-src_actions_cpp
+++ graphics/exiv2/patches/patch-src_actions_cpp
@@ -9,12 +9,15 @@ mutex, I'll admit that it's a bit cumbersome to use." -- jca@
 Index: src/actions.cpp
 --- src/actions.cpp.orig
 +++ src/actions.cpp
-@@ -2049,7 +2049,7 @@ namespace {
-   /* This is the critical section object (statically allocated). */
-   static pthread_mutex_t cs =  PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
+@@ -2025,11 +2025,7 @@ namespace {
+     static pthread_mutex_t cs =  PTHREAD_MUTEX_INITIALIZER;
+   #endif
   #else
--  static pthread_mutex_t cs =  PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
-+  static pthread_mutex_t cs =  PTHREAD_MUTEX_INITIALIZER;
+-  #if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
+-    static pthread_mutex_t cs =  PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+-   #else
+     static pthread_mutex_t cs =  PTHREAD_MUTEX_INITIALIZER;
+-  #endif
   #endif
  #endif
 
diff --git graphics/exiv2/patches/patch-src_http_cpp graphics/exiv2/patches/patch-src_http_cpp
deleted file mode 100644
index f428b79abb7..00000000000
--- graphics/exiv2/patches/patch-src_http_cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-$OpenBSD: patch-src_http_cpp,v 1.4 2019/02/14 16:03:34 jca Exp $
-Index: src/http.cpp
---- src/http.cpp.orig
-+++ src/http.cpp
-@@ -41,6 +41,7 @@
- #include <time.h>
- #include <sys/stat.h>
- #include <string.h>
-+#include <cerrno>
-
- #ifdef  _MSC_VER
- #pragma message("Using exiv2 http support")
diff --git graphics/exiv2/patches/patch-src_pentaxmn_cpp graphics/exiv2/patches/patch-src_pentaxmn_cpp
deleted file mode 100644
index 23ba8f72ab9..00000000000
--- graphics/exiv2/patches/patch-src_pentaxmn_cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-$OpenBSD: patch-src_pentaxmn_cpp,v 1.3 2019/02/14 16:03:34 jca Exp $
-
-Fix http://dev.exiv2.org/issues/1305
-
-Index: src/pentaxmn.cpp
---- src/pentaxmn.cpp.orig
-+++ src/pentaxmn.cpp
-@@ -1167,6 +1167,8 @@ namespace Exiv2 {
-
-     std::ostream& PentaxMakerNote::printShutterCount(std::ostream& os, const Value& value, const ExifData* metadata)
-     {
-+        if ( ! metadata ) return os << "undefined" ;
-+
-         ExifData::const_iterator dateIt = metadata->findKey(
-                 ExifKey("Exif.PentaxDng.Date"));
-         if (dateIt == metadata->end()) {
diff --git graphics/exiv2/patches/patch-src_value_cpp graphics/exiv2/patches/patch-src_value_cpp
index 6dea5102c87..533a348029d 100644
--- graphics/exiv2/patches/patch-src_value_cpp
+++ graphics/exiv2/patches/patch-src_value_cpp
@@ -1,21 +1,16 @@
 $OpenBSD: patch-src_value_cpp,v 1.9 2019/02/14 16:03:34 jca Exp $
---- src/value.cpp.orig Sat May  2 13:55:40 2015
-+++ src/value.cpp Thu Nov 19 19:30:30 2015
-@@ -982,7 +982,7 @@ namespace Exiv2 {
+
+Avoid sprintf warnings when linking with libexiv2.
+
+Index: src/value.cpp
+--- src/value.cpp.orig
++++ src/value.cpp
+@@ -1012,7 +1012,7 @@ namespace Exiv2 {
          // sprintf wants to add the null terminator, so use oversized buffer
          char temp[9];
 
--        int wrote = sprintf(temp, "%04d%02d%02d",
-+        int wrote = snprintf(temp, sizeof temp, "%04d%02d%02d",
-                             date_.year, date_.month, date_.day);
+-        int wrote = sprintf(temp, "%04d%02d%02d", date_.year, date_.month, date_.day);
++        int wrote = snprintf(temp, sizeof temp, "%04d%02d%02d", date_.year, date_.month, date_.day);
          assert(wrote == 8);
-         std::memcpy(buf, temp, 8);
-@@ -1157,7 +1157,7 @@ namespace Exiv2 {
-         char plusMinus = '+';
-         if (time_.tzHour < 0 || time_.tzMinute < 0) plusMinus = '-';
-
--        int wrote = sprintf(temp,
-+        int wrote = snprintf(temp, sizeof temp,
-                    "%02d%02d%02d%1c%02d%02d",
-                    time_.hour, time_.minute, time_.second,
-                    plusMinus, abs(time_.tzHour), abs(time_.tzMinute));
+         std::memcpy(buf, temp, wrote);
+         return wrote;
diff --git graphics/exiv2/patches/patch-src_version_cpp graphics/exiv2/patches/patch-src_version_cpp
index 570faa1d49c..2c7dfd52bef 100644
--- graphics/exiv2/patches/patch-src_version_cpp
+++ graphics/exiv2/patches/patch-src_version_cpp
@@ -1,12 +1,16 @@
 $OpenBSD: patch-src_version_cpp,v 1.7 2019/02/14 16:03:34 jca Exp $
+
+getProcessPath() doesn't work on OpenBSD.
+
 Index: src/version.cpp
 --- src/version.cpp.orig
 +++ src/version.cpp
-@@ -126,6 +126,7 @@ namespace Exiv2 {
-         return os.str();
-     }
-
-+const char* version() __attribute__((visibility ("default")));
-     const char* version()
-     {
-         return EXV_PACKAGE_VERSION;
+@@ -482,7 +482,7 @@ void Exiv2::dumpLibraryInfo(std::ostream& os,const exv
+     output(os,keys,"version"        , __VERSION__);
+     output(os,keys,"date"           , __DATE__   );
+     output(os,keys,"time"           , __TIME__   );
+-    output(os,keys,"processpath"    , Exiv2::getProcessPath());
++    //output(os,keys,"processpath"    , Exiv2::getProcessPath());
+ #ifdef EXV_ENABLE_NLS
+     output(os,keys,"localedir"      , EXV_LOCALEDIR);
+ #endif
diff --git graphics/exiv2/patches/patch-xmpsdk_src_XMPMeta-Serialize_cpp graphics/exiv2/patches/patch-xmpsdk_src_XMPMeta-Serialize_cpp
index 72263582316..10d96fd2a21 100644
--- graphics/exiv2/patches/patch-xmpsdk_src_XMPMeta-Serialize_cpp
+++ graphics/exiv2/patches/patch-xmpsdk_src_XMPMeta-Serialize_cpp
@@ -1,7 +1,8 @@
 $OpenBSD: patch-xmpsdk_src_XMPMeta-Serialize_cpp,v 1.4 2019/02/14 16:03:34 jca Exp $
---- xmpsdk/src/XMPMeta-Serialize.cpp.orig Thu Nov 19 19:37:14 2015
-+++ xmpsdk/src/XMPMeta-Serialize.cpp Thu Nov 19 20:02:26 2015
-@@ -303,7 +303,7 @@ AppendNodeValue ( XMP_VarString & outputStr, const XMP
+Index: xmpsdk/src/XMPMeta-Serialize.cpp
+--- xmpsdk/src/XMPMeta-Serialize.cpp.orig
++++ xmpsdk/src/XMPMeta-Serialize.cpp
+@@ -302,7 +302,7 @@ AppendNodeValue ( XMP_VarString & outputStr, const XMP
  XMP_Assert ( (ch == kTab) || (ch == kLF) || (ch == kCR) );
 
  char hexBuf[16];
diff --git graphics/exiv2/pkg/DESCR graphics/exiv2/pkg/DESCR
index ccc2cbf2b2c..b7bae69fe88 100644
--- graphics/exiv2/pkg/DESCR
+++ graphics/exiv2/pkg/DESCR
@@ -1,6 +1,6 @@
-Exiv2 is a C++ library and a command line utility to access image metadata.
+Exiv2 is a C++ library and a command line utility to access image metadata.
 
-The Exiv2 library provides
+The Exiv2 library provides
  * full read and write access to the Exif and IPTC  metadata of an
    image through Exiv2 keys and standard C++ iterators
  * a smart IPTC implementation that does not affect data that
diff --git graphics/exiv2/pkg/PLIST graphics/exiv2/pkg/PLIST
index 62af92188a3..ca6fd34f521 100644
--- graphics/exiv2/pkg/PLIST
+++ graphics/exiv2/pkg/PLIST
@@ -1,7 +1,42 @@
 @comment $OpenBSD: PLIST,v 1.12 2019/02/14 16:03:34 jca Exp $
+@bin bin/addmoddel
+@bin bin/convert-test
+@bin bin/easyaccess-test
+@bin bin/exifcomment
+@bin bin/exifdata
+@bin bin/exifdata-test
+@bin bin/exifprint
+@bin bin/exifvalue
 @bin bin/exiv2
+@bin bin/exiv2json
+@bin bin/geotag
+@bin bin/ini-test
+@bin bin/iotest
+@bin bin/iptceasy
+@bin bin/iptcprint
+@bin bin/iptctest
+@bin bin/key-test
+@bin bin/largeiptc-test
+@bin bin/metacopy
+@bin bin/mmap-test
+@bin bin/mrwthumb
+@bin bin/path-test
+@bin bin/prevtest
+@bin bin/stringto-test
+@bin bin/taglist
+@bin bin/tiff-test
+@bin bin/werror-test
+@bin bin/write-test
+@bin bin/write2-test
+@bin bin/xmpdump
+@bin bin/xmpparse
+@bin bin/xmpparser-test
+@bin bin/xmpprint
+@bin bin/xmpsample
 include/exiv2/
+include/exiv2/asfvideo.hpp
 include/exiv2/basicio.hpp
+include/exiv2/bigtiffimage.hpp
 include/exiv2/bmpimage.hpp
 include/exiv2/config.h
 include/exiv2/convert.hpp
@@ -13,8 +48,8 @@ include/exiv2/epsimage.hpp
 include/exiv2/error.hpp
 include/exiv2/exif.hpp
 include/exiv2/exiv2.hpp
+include/exiv2/exiv2lib_export.h
 include/exiv2/exv_conf.h
-include/exiv2/exv_msvc.h
 include/exiv2/futils.hpp
 include/exiv2/gifimage.hpp
 include/exiv2/http.hpp
@@ -23,6 +58,7 @@ include/exiv2/ini.hpp
 include/exiv2/iptc.hpp
 include/exiv2/jp2image.hpp
 include/exiv2/jpgimage.hpp
+include/exiv2/matroskavideo.hpp
 include/exiv2/metadatum.hpp
 include/exiv2/mrwimage.hpp
 include/exiv2/orfimage.hpp
@@ -31,42 +67,81 @@ include/exiv2/pngimage.hpp
 include/exiv2/preview.hpp
 include/exiv2/properties.hpp
 include/exiv2/psdimage.hpp
+include/exiv2/quicktimevideo.hpp
 include/exiv2/rafimage.hpp
+include/exiv2/riffvideo.hpp
 include/exiv2/rw2image.hpp
 include/exiv2/rwlock.hpp
+include/exiv2/slice.hpp
+include/exiv2/ssh.hpp
 include/exiv2/tags.hpp
 include/exiv2/tgaimage.hpp
 include/exiv2/tiffimage.hpp
 include/exiv2/types.hpp
+include/exiv2/utilsvideo.hpp
 include/exiv2/value.hpp
 include/exiv2/version.hpp
 include/exiv2/webpimage.hpp
-include/exiv2/xmp.hpp
+include/exiv2/xmp_exiv2.hpp
 include/exiv2/xmpsidecar.hpp
-lib/libexiv2.a
-lib/libexiv2.la
+lib/cmake/
+lib/cmake/exiv2/
+lib/cmake/exiv2/exiv2Config${MODCMAKE_BUILD_SUFFIX}
+lib/cmake/exiv2/exiv2Config.cmake
+lib/cmake/exiv2/exiv2ConfigVersion.cmake
+@static-lib lib/libexiv2-xmp.a
 @lib lib/libexiv2.so.${LIBexiv2_VERSION}
 lib/pkgconfig/exiv2.pc
 @man man/man1/exiv2.1
-@man man/man1/exiv2samples.1
+share/locale/
 share/locale/bs/
 share/locale/bs/LC_MESSAGES/
 share/locale/bs/LC_MESSAGES/exiv2.mo
+share/locale/ca/
+share/locale/ca/LC_MESSAGES/
+share/locale/ca/LC_MESSAGES/exiv2.mo
+share/locale/de/
+share/locale/de/LC_MESSAGES/
 share/locale/de/LC_MESSAGES/exiv2.mo
+share/locale/es/
+share/locale/es/LC_MESSAGES/
 share/locale/es/LC_MESSAGES/exiv2.mo
+share/locale/fi/
+share/locale/fi/LC_MESSAGES/
 share/locale/fi/LC_MESSAGES/exiv2.mo
+share/locale/fr/
+share/locale/fr/LC_MESSAGES/
 share/locale/fr/LC_MESSAGES/exiv2.mo
+share/locale/gl/
+share/locale/gl/LC_MESSAGES/
 share/locale/gl/LC_MESSAGES/exiv2.mo
 share/locale/ms/
 share/locale/ms/LC_MESSAGES/
 share/locale/ms/LC_MESSAGES/exiv2.mo
+share/locale/nl/
+share/locale/nl/LC_MESSAGES/
+share/locale/nl/LC_MESSAGES/exiv2.mo
+share/locale/pl/
+share/locale/pl/LC_MESSAGES/
 share/locale/pl/LC_MESSAGES/exiv2.mo
+share/locale/pt/
+share/locale/pt/LC_MESSAGES/
 share/locale/pt/LC_MESSAGES/exiv2.mo
+share/locale/ru/
+share/locale/ru/LC_MESSAGES/
 share/locale/ru/LC_MESSAGES/exiv2.mo
+share/locale/sk/
+share/locale/sk/LC_MESSAGES/
 share/locale/sk/LC_MESSAGES/exiv2.mo
+share/locale/sv/
+share/locale/sv/LC_MESSAGES/
 share/locale/sv/LC_MESSAGES/exiv2.mo
 share/locale/ug/
 share/locale/ug/LC_MESSAGES/
 share/locale/ug/LC_MESSAGES/exiv2.mo
+share/locale/uk/
+share/locale/uk/LC_MESSAGES/
 share/locale/uk/LC_MESSAGES/exiv2.mo
+share/locale/vi/
+share/locale/vi/LC_MESSAGES/
 share/locale/vi/LC_MESSAGES/exiv2.mo
diff --git graphics/hugin/Makefile graphics/hugin/Makefile
index bb518ce2a32..27c960104e8 100644
--- graphics/hugin/Makefile
+++ graphics/hugin/Makefile
@@ -5,7 +5,7 @@ BROKEN-hppa = run dep on enblend-enfuse which will not build on hppa
 COMMENT = panorama image stitcher
 
 DISTNAME = hugin-2019.0.0
-REVISION = 1
+REVISION = 2
 EXTRACT_SUFX = .tar.bz2
 
 # not needed for releases, but makes RCs/betas easier to work with
diff --git graphics/hugin/patches/patch-src_hugin1_hugin_RawImport_cpp graphics/hugin/patches/patch-src_hugin1_hugin_RawImport_cpp
new file mode 100644
index 00000000000..1efd316dc5a
--- /dev/null
+++ graphics/hugin/patches/patch-src_hugin1_hugin_RawImport_cpp
@@ -0,0 +1,13 @@
+$OpenBSD$
+
+Index: src/hugin1/hugin/RawImport.cpp
+--- src/hugin1/hugin/RawImport.cpp.orig
++++ src/hugin1/hugin/RawImport.cpp
+@@ -36,6 +36,7 @@
+ #define HAVE_PID_T 1
+ #endif
+ #include <exiv2/exif.hpp>
++#include <exiv2/error.hpp>
+ #include <exiv2/image.hpp>
+ #include <exiv2/easyaccess.hpp>
+ #include <exiv2/xmpsidecar.hpp>
diff --git graphics/hugin/patches/patch-src_hugin_base_panodata_SrcPanoImage_cpp graphics/hugin/patches/patch-src_hugin_base_panodata_SrcPanoImage_cpp
new file mode 100644
index 00000000000..720a1dd7e7e
--- /dev/null
+++ graphics/hugin/patches/patch-src_hugin_base_panodata_SrcPanoImage_cpp
@@ -0,0 +1,13 @@
+$OpenBSD$
+
+Index: src/hugin_base/panodata/SrcPanoImage.cpp
+--- src/hugin_base/panodata/SrcPanoImage.cpp.orig
++++ src/hugin_base/panodata/SrcPanoImage.cpp
+@@ -41,6 +41,7 @@
+ #include <vigra/imageinfo.hxx>
+ #include <hugin_utils/utils.h>
+ #include <exiv2/exif.hpp>
++#include <exiv2/error.hpp>
+ #include <exiv2/image.hpp>
+ #include <exiv2/easyaccess.hpp>
+ #include <lensdb/LensDB.h>
diff --git graphics/hugin/pkg/PLIST graphics/hugin/pkg/PLIST
index f98e4222447..b9ebf61d853 100644
--- graphics/hugin/pkg/PLIST
+++ graphics/hugin/pkg/PLIST
@@ -39,7 +39,7 @@ lib/hugin/
 @lib lib/hugin/libhuginbasewx.so.${LIBhuginbasewx_VERSION}
 @lib lib/hugin/libicpfindlib.so.${LIBicpfindlib_VERSION}
 @lib lib/hugin/liblocalfeatures.so.${LIBlocalfeatures_VERSION}
-lib/python${MODPY_VERSION}/site-packages/_hsi.so
+@so lib/python${MODPY_VERSION}/site-packages/_hsi.so
 lib/python${MODPY_VERSION}/site-packages/hpi.py
 lib/python${MODPY_VERSION}/site-packages/hpi.pyc
 lib/python${MODPY_VERSION}/site-packages/hsi.py
diff --git graphics/nomacs/Makefile graphics/nomacs/Makefile
index a3122dab0d2..14c062c6772 100644
--- graphics/nomacs/Makefile
+++ graphics/nomacs/Makefile
@@ -5,7 +5,7 @@ COMMENT = small and fast Qt image viewer
 GH_ACCOUNT = nomacs
 GH_PROJECT = nomacs
 GH_TAGNAME = 3.12
-REVISION = 2
+REVISION = 3
 
 CATEGORIES = graphics
 
diff --git graphics/nomacs/patches/patch-src_DkCore_DkMetaData_cpp graphics/nomacs/patches/patch-src_DkCore_DkMetaData_cpp
new file mode 100644
index 00000000000..1488b6e533f
--- /dev/null
+++ graphics/nomacs/patches/patch-src_DkCore_DkMetaData_cpp
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Missing include after exiv2 0.27.2
+
+Index: src/DkCore/DkMetaData.cpp
+--- src/DkCore/DkMetaData.cpp.orig
++++ src/DkCore/DkMetaData.cpp
+@@ -42,6 +42,8 @@
+ #include <QApplication>
+ #pragma warning(pop) // no warnings from includes - end
+
++#include <iostream>
++
+ namespace nmc {
+
+ // DkMetaDataT --------------------------------------------------------------------
diff --git graphics/nomacs/patches/patch-src_DkGui_DkNoMacs_cpp graphics/nomacs/patches/patch-src_DkGui_DkNoMacs_cpp
new file mode 100644
index 00000000000..02b0577230d
--- /dev/null
+++ graphics/nomacs/patches/patch-src_DkGui_DkNoMacs_cpp
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Missing include after exiv2 0.27.2
+
+Index: src/DkGui/DkNoMacs.cpp
+--- src/DkGui/DkNoMacs.cpp.orig
++++ src/DkGui/DkNoMacs.cpp
+@@ -96,6 +96,8 @@
+ #include <QWinTaskbarButton>
+ #endif
+
++#include <iostream>
++
+ namespace nmc {
+
+ DkNomacsOSXEventFilter::DkNomacsOSXEventFilter(QObject *parent) : QObject(parent) {
diff --git graphics/rawstudio/Makefile graphics/rawstudio/Makefile
index d2c0ab024bf..f890d990c2e 100644
--- graphics/rawstudio/Makefile
+++ graphics/rawstudio/Makefile
@@ -3,7 +3,7 @@
 COMMENT = tool for working with RAW images
 
 DISTNAME = rawstudio-1.2
-REVISION = 21
+REVISION = 22
 
 CATEGORIES = graphics
 
diff --git graphics/rawstudio/patch-librawstudio_rs-exif_cc graphics/rawstudio/patch-librawstudio_rs-exif_cc
new file mode 100644
index 00000000000..77aeb9878dd
--- /dev/null
+++ graphics/rawstudio/patch-librawstudio_rs-exif_cc
@@ -0,0 +1,14 @@
+$OpenBSD$
+
+Index: librawstudio/rs-exif.cc
+--- librawstudio/rs-exif.cc.orig
++++ librawstudio/rs-exif.cc
+@@ -19,7 +19,7 @@
+
+ #include <iostream>
+ #include <iomanip>
+-#include <exiv2/exiv2.hpp>
++
+ #include <exiv2/image.hpp>
+ #include <exiv2/exif.hpp>
+ #include "rs-exif.h"
diff --git graphics/rawstudio/patches/patch-src_rs-exif_cc graphics/rawstudio/patches/patch-src_rs-exif_cc
new file mode 100644
index 00000000000..42686535cfa
--- /dev/null
+++ graphics/rawstudio/patches/patch-src_rs-exif_cc
@@ -0,0 +1,15 @@
+$OpenBSD$
+
+unbreak with exiv2 2.27
+
+Index: src/rs-exif.cc
+--- src/rs-exif.cc.orig
++++ src/rs-exif.cc
+@@ -19,6 +19,7 @@
+
+ #include <iostream>
+ #include <iomanip>
++#include <exiv2/exiv2.hpp>
+ #include <exiv2/image.hpp>
+ #include <exiv2/exif.hpp>
+ #include "rs-exif.h"
diff --git graphics/ufraw/Makefile graphics/ufraw/Makefile
index e1ed9fba8d4..34dceb22b13 100644
--- graphics/ufraw/Makefile
+++ graphics/ufraw/Makefile
@@ -3,7 +3,7 @@
 COMMENT= read and manipulate raw images from digital cameras
 
 DISTNAME= ufraw-0.22
-REVISION= 5
+REVISION= 6
 
 CATEGORIES= graphics
 MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=ufraw/}
@@ -12,14 +12,15 @@ HOMEPAGE= http://ufraw.sourceforge.net/
 # GPLv2+
 PERMIT_PACKAGE= Yes
 
-WANTLIB += X11 Xcomposite Xcursor Xdamage Xext Xfixes Xi Xinerama
-WANTLIB += Xrandr Xrender atk-1.0 bz2 c cairo cfitsio exiv2
-WANTLIB += fontconfig freetype gdk-x11-2.0 gdk_pixbuf-2.0 gimp-2.0
-WANTLIB += gimpbase-2.0 gimpcolor-2.0 gimpconfig-2.0 gimpmath-2.0
-WANTLIB += gimpmodule-2.0 gimpui-2.0 gimpwidgets-2.0 gio-2.0 glib-2.0
-WANTLIB += gobject-2.0 gthread-2.0 gtk-x11-2.0 gtkimageview iconv intl
-WANTLIB += jasper jpeg lcms2 m pango-1.0 pangocairo-1.0 pangoft2-1.0
-WANTLIB += png pthread ${COMPILER_LIBCXX} tiff z
+WANTLIB += ${COMPILER_LIBCXX} X11 Xcomposite Xcursor Xdamage Xext
+WANTLIB += Xfixes Xi Xinerama Xrandr Xrender atk-1.0 babl-0.1
+WANTLIB += bz2 c cairo cfitsio exiv2 fontconfig freetype gdk-x11-2.0
+WANTLIB += gdk_pixbuf-2.0 gegl-0.4 gimp-2.0 gimpbase-2.0 gimpcolor-2.0
+WANTLIB += gimpconfig-2.0 gimpmath-2.0 gimpmodule-2.0 gimpui-2.0
+WANTLIB += gimpwidgets-2.0 gio-2.0 glib-2.0 gmodule-2.0 gobject-2.0
+WANTLIB += gthread-2.0 gtk-x11-2.0 gtkimageview harfbuzz intl
+WANTLIB += jasper jpeg json-glib-1.0 lcms2 m pango-1.0 pangocairo-1.0
+WANTLIB += pangoft2-1.0 png tiff z
 
 # don't remove unless you are sure:
 WANTLIB += lensfun
diff --git graphics/ufraw/patches/patch-ufraw_exiv2_cc graphics/ufraw/patches/patch-ufraw_exiv2_cc
new file mode 100644
index 00000000000..13c7f0cac59
--- /dev/null
+++ graphics/ufraw/patches/patch-ufraw_exiv2_cc
@@ -0,0 +1,31 @@
+$OpenBSD$
+
+unbreak with exiv2 0.27
+
+Index: ufraw_exiv2.cc
+--- ufraw_exiv2.cc.orig
++++ ufraw_exiv2.cc
+@@ -15,9 +15,8 @@
+ #include "ufraw.h"
+
+ #ifdef HAVE_EXIV2
+-#include <exiv2/image.hpp>
+-#include <exiv2/easyaccess.hpp>
+-#include <exiv2/exif.hpp>
++#include <iostream>
++#include <exiv2/exiv2.hpp>
+ #include <sstream>
+ #include <cassert>
+
+@@ -67,7 +66,11 @@ extern "C" int ufraw_exif_read_input(ufraw_data *uf)
+         if (exifData.empty()) {
+             std::string error(uf->filename);
+             error += ": No Exif data found in the file";
++#if EXIV2_TEST_VERSION(0,27,0)
++            throw Exiv2::Error(Exiv2::kerErrorMessage, error);
++#else
+             throw Exiv2::Error(1, error);
++#endif
+         }
+
+         /* List of tag names taken from exiv2's printSummary() in actions.cpp */
diff --git sysutils/krename/Makefile sysutils/krename/Makefile
index 4824c35fd12..6beb1d0dd3f 100644
--- sysutils/krename/Makefile
+++ sysutils/krename/Makefile
@@ -4,7 +4,7 @@ COMMENT = powerful batch file renamer
 
 VERSION = 5.0.0
 DISTNAME = krename-${VERSION}
-REVISION = 1
+REVISION = 2
 
 CATEGORIES = sysutils x11
 
diff --git sysutils/krename/patches/patch-CMakeLists_txt sysutils/krename/patches/patch-CMakeLists_txt
new file mode 100644
index 00000000000..202cb371c46
--- /dev/null
+++ sysutils/krename/patches/patch-CMakeLists_txt
@@ -0,0 +1,46 @@
+$OpenBSD$
+
+https://gitweb.gentoo.org/repo/gentoo.git/plain/kde-misc/krename/files/krename-5.0.0-exiv2-0.27.patch
+
+Index: CMakeLists.txt
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -1,6 +1,7 @@
+-project(krename)
+
+-cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
++cmake_minimum_required(VERSION 3.7)
++
++project(krename VERSION "5.0.0")
+ # search packages used by KDE
+ find_package(ECM 0.0.11 REQUIRED NO_MODULE)
+ set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
+@@ -39,10 +40,6 @@ add_definitions(
+     -DQT_STRICT_ITERATORS
+ )
+
+-set(KRENAME_VERSION "5.0.0")
+-
+-include(FindGettext)
+-
+ # Find taglib
+ set(TAGLIB_MIN_VERSION "1.5")
+ find_package(Taglib ${TAGLIB_MIN_VERSION})
+@@ -52,11 +49,12 @@ set_package_properties(Taglib PROPERTIES
+     TYPE OPTIONAL)
+
+ # Find exiv2
+-find_package(Exiv2 0.13) # AccessMode was added in 0.13
+-set_package_properties(Exiv2 PROPERTIES
+-    DESCRIPTION "A library to access image metadata"
+-    URL "http://www.exiv2.org"
+-    TYPE OPTIONAL)
++find_package(LibExiv2 0.13) # AccessMode was added in 0.13
++set_package_properties(LibExiv2 PROPERTIES TYPE OPTIONAL)
++
++if (LibExiv2_VERSION VERSION_GREATER_EQUAL "0.27")
++    set(HAVE_LIBEXIV2_0_27 TRUE)
++endif()
+
+ # Find podofo
+ find_package(PoDoFo)
diff --git sysutils/krename/patches/patch-config-krename_h_cmake sysutils/krename/patches/patch-config-krename_h_cmake
new file mode 100644
index 00000000000..a70d5090b28
--- /dev/null
+++ sysutils/krename/patches/patch-config-krename_h_cmake
@@ -0,0 +1,17 @@
+$OpenBSD$
+
+https://gitweb.gentoo.org/repo/gentoo.git/plain/kde-misc/krename/files/krename-5.0.0-exiv2-0.27.patch
+
+Index: config-krename.h.cmake
+--- config-krename.h.cmake.orig
++++ config-krename.h.cmake
+@@ -6,6 +6,9 @@
+ /* have Exiv2 */
+ #cmakedefine01 HAVE_EXIV2
+
++/* Defined if we have libexiv2 >= 0.27 */
++#cmakedefine HAVE_LIBEXIV2_0_27
++
+ /* have PoDoFo */
+ #cmakedefine01 HAVE_PODOFO
+
diff --git sysutils/krename/patches/patch-src_CMakeLists_txt sysutils/krename/patches/patch-src_CMakeLists_txt
new file mode 100644
index 00000000000..aadd30fb964
--- /dev/null
+++ sysutils/krename/patches/patch-src_CMakeLists_txt
@@ -0,0 +1,37 @@
+$OpenBSD$
+
+https://gitweb.gentoo.org/repo/gentoo.git/plain/kde-misc/krename/files/krename-5.0.0-exiv2-0.27.patch
+
+Index: src/CMakeLists.txt
+--- src/CMakeLists.txt.orig
++++ src/CMakeLists.txt
+@@ -23,7 +23,7 @@ if(FREETYPE_FOUND)
+     include_directories(${FREETYPE_INCLUDE_DIRS})
+ endif()
+
+-add_definitions(${TAGLIB_CFLAGS} ${EXIV2_CFLAGS})
++add_definitions(${TAGLIB_CFLAGS})
+ # Exiv2 needs exceptions
+ kde_enable_exceptions()
+
+@@ -67,7 +67,7 @@ set(krename_SRCS
+     snumplugin.cpp
+ )
+
+-if(EXIV2_FOUND)
++if(LibExiv2_FOUND)
+     set(krename_SRCS ${krename_SRCS}
+         exiv2plugin.cpp
+     )
+@@ -131,9 +131,9 @@ if(TAGLIB_FOUND)
+         ${TAGLIB_LIBRARIES}
+     )
+ endif()
+-if(EXIV2_FOUND)
++if(LibExiv2_FOUND)
+     target_link_libraries(krename
+-        ${EXIV2_LIBRARIES}
++        LibExiv2::LibExiv2
+     )
+ endif()
+ if(PoDoFo_FOUND)
diff --git sysutils/krename/patches/patch-src_exiv2plugin_cpp sysutils/krename/patches/patch-src_exiv2plugin_cpp
new file mode 100644
index 00000000000..6e4c424baae
--- /dev/null
+++ sysutils/krename/patches/patch-src_exiv2plugin_cpp
@@ -0,0 +1,28 @@
+$OpenBSD$
+
+https://gitweb.gentoo.org/repo/gentoo.git/plain/kde-misc/krename/files/krename-5.0.0-exiv2-0.27.patch
+
+Index: src/exiv2plugin.cpp
+--- src/exiv2plugin.cpp.orig
++++ src/exiv2plugin.cpp
+@@ -17,13 +17,19 @@
+
+ #include "exiv2plugin.h"
+
++#include "../config-krename.h"
++
+ #include <KLocalizedString>
+
+ #include <exiv2/error.hpp>
+ #include <exiv2/exif.hpp>
+ #include <exiv2/image.hpp>
+ #include <exiv2/iptc.hpp>
+-#include <exiv2/xmp.hpp>
++#ifdef HAVE_LIBEXIV2_0_27
++    #include <exiv2/xmp_exiv2.hpp>
++#else
++    #include <exiv2/xmp.hpp>
++#endif
+ #include <exiv2/tags.hpp>
+
+ #include "batchrenamer.h"
diff --git x11/kde4/kfilemetadata/Makefile x11/kde4/kfilemetadata/Makefile
index beb733283b4..dbb88867052 100644
--- x11/kde4/kfilemetadata/Makefile
+++ x11/kde4/kfilemetadata/Makefile
@@ -2,7 +2,7 @@
 
 COMMENT = file metadata extraction library for KDE
 DISTNAME = kfilemetadata-${MODKDE4_VERSION}
-REVISION = 2
+REVISION = 3
 
 CATEGORIES = sysutils
 
diff --git x11/kde4/libkexiv2/Makefile x11/kde4/libkexiv2/Makefile
index 72ee5a1e294..c8e142d98cc 100644
--- x11/kde4/libkexiv2/Makefile
+++ x11/kde4/libkexiv2/Makefile
@@ -4,7 +4,7 @@ COMMENT = KDE exiv2 wrapper
 CATEGORIES = graphics devel
 DISTNAME = libkexiv2-${MODKDE4_VERSION}
 PKGSPEC = libkexiv2-${MODKDE4_SPEC}
-REVISION = 1
+REVISION = 2
 
 SHARED_LIBS = kexiv2 51.0 # 10.0
 
diff --git x11/kde4/libkexiv2/patches/patch-CMakeLists_txt x11/kde4/libkexiv2/patches/patch-CMakeLists_txt
index c73445580d4..7feab3201a9 100644
--- x11/kde4/libkexiv2/patches/patch-CMakeLists_txt
+++ x11/kde4/libkexiv2/patches/patch-CMakeLists_txt
@@ -1,7 +1,8 @@
 $OpenBSD: patch-CMakeLists_txt,v 1.1 2013/12/08 19:13:32 zhuk Exp $
---- CMakeLists.txt.orig Sun Aug 11 18:39:21 2013
-+++ CMakeLists.txt Sun Aug 11 18:42:22 2013
-@@ -115,3 +115,17 @@ IF (EXIV2_FOUND)
+Index: CMakeLists.txt
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -137,3 +137,17 @@ IF (EXIV2_FOUND)
  ENDIF (EXIV2_FOUND)
 
  MACRO_DISPLAY_FEATURE_LOG()
diff --git x11/kde4/libkexiv2/patches/patch-libkexiv2_kexiv2_cpp x11/kde4/libkexiv2/patches/patch-libkexiv2_kexiv2_cpp
new file mode 100644
index 00000000000..f6cae3e4e59
--- /dev/null
+++ x11/kde4/libkexiv2/patches/patch-libkexiv2_kexiv2_cpp
@@ -0,0 +1,14 @@
+$OpenBSD$
+
+Index: libkexiv2/kexiv2.cpp
+--- libkexiv2/kexiv2.cpp.orig
++++ libkexiv2/kexiv2.cpp
+@@ -31,6 +31,8 @@
+ // Local includes
+
+ #include "version.h"
++ #include <exiv2/version.hpp>
++ #include <exiv2/exiv2.hpp>
+
+ namespace KExiv2Iface
+ {
diff --git x11/kde4/libkexiv2/patches/patch-libkexiv2_kexiv2_p_cpp x11/kde4/libkexiv2/patches/patch-libkexiv2_kexiv2_p_cpp
new file mode 100644
index 00000000000..d4bc0737b54
--- /dev/null
+++ x11/kde4/libkexiv2/patches/patch-libkexiv2_kexiv2_p_cpp
@@ -0,0 +1,13 @@
+$OpenBSD$
+
+Index: libkexiv2/kexiv2_p.cpp
+--- libkexiv2/kexiv2_p.cpp.orig
++++ libkexiv2/kexiv2_p.cpp
+@@ -33,6 +33,7 @@ extern "C"
+ {
+ #include <sys/stat.h>
+ #include <utime.h>
++ #include <exiv2/version.hpp>
+ }
+
+ namespace KExiv2Iface
diff --git x11/kde4/libkexiv2/patches/patch-libkexiv2_kexiv2exif_cpp x11/kde4/libkexiv2/patches/patch-libkexiv2_kexiv2exif_cpp
new file mode 100644
index 00000000000..ec70fbef4f3
--- /dev/null
+++ x11/kde4/libkexiv2/patches/patch-libkexiv2_kexiv2exif_cpp
@@ -0,0 +1,21 @@
+$OpenBSD$
+Index: libkexiv2/kexiv2exif.cpp
+--- libkexiv2/kexiv2exif.cpp.orig
++++ libkexiv2/kexiv2exif.cpp
+@@ -28,6 +28,7 @@
+ #include "kexiv2.h"
+ #include "kexiv2_p.h"
+ #include "rotationmatrix.h"
++ #include <exiv2/error.hpp>
+
+ // C++ includes
+
+@@ -986,7 +987,7 @@ bool KExiv2::setTiffThumbnail(const QImage& thumbImage
+
+         if (pos == d->exifMetadata().end() || pos->count() != 1 || pos->toLong() != 0)
+         {
+-            throw Exiv2::Error(1, "Exif.Image.NewSubfileType missing or not set as main image");
++            throw Exiv2::Error(Exiv2::kerErrorMessage, "Exif.Image.NewSubfileType missing or not set as main image");
+         }
+
+         // Remove sub-IFD tags
diff --git x11/kde4/libs/Makefile x11/kde4/libs/Makefile
index 35ac40d30a6..bdbd5ffba3e 100644
--- x11/kde4/libs/Makefile
+++ x11/kde4/libs/Makefile
@@ -12,7 +12,7 @@ PKGNAME-langlist = kde4-langlist-$V
 PKG_ARCH-en_US = *
 PKG_ARCH-langlist = *
 PKGSPEC-main = kdelibs-${MODKDE4_SPEC}
-REVISION-main = 20
+REVISION-main = 21
 REVISION-en_US = 0
 REVISION-langlist = 0
 
diff --git x11/kde4/libs/patches/patch-cmake_modules_FindExiv2_cmake x11/kde4/libs/patches/patch-cmake_modules_FindExiv2_cmake
new file mode 100644
index 00000000000..860fb037b8d
--- /dev/null
+++ x11/kde4/libs/patches/patch-cmake_modules_FindExiv2_cmake
@@ -0,0 +1,19 @@
+$OpenBSD$
+
+Fix exiv2 2.27
+
+Index: cmake/modules/FindExiv2.cmake
+--- cmake/modules/FindExiv2.cmake.orig
++++ cmake/modules/FindExiv2.cmake
+@@ -55,9 +55,9 @@ find_library(EXIV2_LIBRARY NAMES exiv2 libexiv2
+             )
+
+
+-# Get the version number from exiv2/version.hpp and store it in the cache:
++# Get the version number from exiv2/exv_conf.h and store it in the cache:
+ if(EXIV2_INCLUDE_DIR  AND NOT  EXIV2_VERSION)
+-  file(READ ${EXIV2_INCLUDE_DIR}/exiv2/version.hpp EXIV2_VERSION_CONTENT)
++  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}")
+
diff --git x11/kde4/nepomuk-core/Makefile x11/kde4/nepomuk-core/Makefile
index bd1264199e7..7a43f90f5f2 100644
--- x11/kde4/nepomuk-core/Makefile
+++ x11/kde4/nepomuk-core/Makefile
@@ -2,7 +2,7 @@
 
 COMMENT = KDE Nepomuk core libraries
 DISTNAME = nepomuk-core-${MODKDE4_VERSION}
-REVISION = 3
+REVISION = 4
 
 SHARED_LIBS = nepomukcore 53.0 # 4.9
 SHARED_LIBS += nepomukcommon 53.0 # 4.10
diff --git x11/kde4/runtime/Makefile x11/kde4/runtime/Makefile
index 8c68d78ad1d..8b5c802a415 100644
--- x11/kde4/runtime/Makefile
+++ x11/kde4/runtime/Makefile
@@ -6,7 +6,7 @@ DISTNAME = kde-runtime-${MODKDE4_VERSION}
 PKGNAME-main = ${DISTNAME}
 PKGNAME-locale = kde4-locale-${MODKDE4_VERSION}
 PKG_ARCH-locale = *
-REVISION-main = 16
+REVISION-main = 17
 REVISION-locale = 2
 
 DPB_PROPERTIES = parallel