git: 0e4d3e69d22d - main - graphics/ufraw: make compatible with exiv2 0.28

From: Matthias Andree <mandree_at_FreeBSD.org>
Date: Sun, 09 Jul 2023 22:09:49 UTC
The branch main has been updated by mandree:

URL: https://cgit.FreeBSD.org/ports/commit/?id=0e4d3e69d22d89c1e0972f90bab859473c3935ca

commit 0e4d3e69d22d89c1e0972f90bab859473c3935ca
Author:     Matthias Andree <mandree@FreeBSD.org>
AuthorDate: 2023-07-02 22:08:28 +0000
Commit:     Matthias Andree <mandree@FreeBSD.org>
CommitDate: 2023-07-09 22:08:12 +0000

    graphics/ufraw: make compatible with exiv2 0.28
    
    PR:             272311
---
 graphics/ufraw/Makefile                    |  6 ++-
 graphics/ufraw/files/patch-ufraw__exiv2.cc | 74 ++++++++++++++++++++++++++++++
 2 files changed, 78 insertions(+), 2 deletions(-)

diff --git a/graphics/ufraw/Makefile b/graphics/ufraw/Makefile
index 3a9caf1c450a..6ba1718afe17 100644
--- a/graphics/ufraw/Makefile
+++ b/graphics/ufraw/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	ufraw
 PORTVERSION=	0.22.20210424
-PORTREVISION=	7
+PORTREVISION=	8
 CATEGORIES=	graphics
 
 MAINTAINER=	rodrigo@FreeBSD.org
@@ -11,6 +11,7 @@ LICENSE=	GPLv2
 
 LIB_DEPENDS=	libfontconfig.so:x11-fonts/fontconfig \
 		libfreetype.so:print/freetype2 \
+		libharfbuzz.so:print/harfbuzz \
 		libjasper.so:graphics/jasper \
 		liblcms2.so:graphics/lcms2 \
 		libpng.so:graphics/png \
@@ -18,7 +19,7 @@ LIB_DEPENDS=	libfontconfig.so:x11-fonts/fontconfig \
 
 USES=		autoreconf compiler:c++11-lang desktop-file-utils gettext \
 		gmake gnome jpeg pkgconfig
-USE_CXXSTD=	gnu++98
+USE_CXXSTD=	gnu++14
 USE_GITHUB=	yes
 GH_ACCOUNT=	sergiomb2
 GH_TAGNAME=	f34669b
@@ -30,6 +31,7 @@ CONFIGURE_ARGS=	--enable-extras \
 		--disable-mime
 
 CPPFLAGS+=	-I${LOCALBASE}/include
+#CXXFLAGS+=	-D_NOEXCEPT=noexcept
 LDFLAGS+=	-lpthread -L${LOCALBASE}/lib
 
 CONFLICTS_INSTALL=	dcraw
diff --git a/graphics/ufraw/files/patch-ufraw__exiv2.cc b/graphics/ufraw/files/patch-ufraw__exiv2.cc
new file mode 100644
index 000000000000..bd04c1dfae93
--- /dev/null
+++ b/graphics/ufraw/files/patch-ufraw__exiv2.cc
@@ -0,0 +1,74 @@
+--- ufraw_exiv2.cc.orig	2021-04-25 05:24:28 UTC
++++ ufraw_exiv2.cc
+@@ -50,10 +50,10 @@ extern "C" int ufraw_exif_read_input(ufraw_data *uf)
+         uf->inputExifBuf = NULL;
+         uf->inputExifBufLen = 0;
+ 
+-        Exiv2::Image::AutoPtr image;
++        Exiv2::Image::UniquePtr image;
+         if (uf->unzippedBuf != NULL) {
+-            image = Exiv2::ImageFactory::open(
+-                        (const Exiv2::byte*)uf->unzippedBuf, uf->unzippedBufLen);
++            image = std::move(Exiv2::ImageFactory::open(
++                        (const Exiv2::byte*)uf->unzippedBuf, uf->unzippedBufLen));
+         } else {
+             char *filename = uf_win32_locale_filename_from_utf8(uf->filename);
+             image = Exiv2::ImageFactory::open(filename);
+@@ -66,7 +66,9 @@ 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)
++#if EXIV2_TEST_VERSION(0,28,0)
++            throw Exiv2::Error(Exiv2::ErrorCode::kerErrorMessage, error);
++#elif EXIV2_TEST_VERSION(0,27,0)
+             throw Exiv2::Error(Exiv2::kerErrorMessage, error);
+ #else
+             throw Exiv2::Error(1, error);
+@@ -135,7 +137,7 @@ extern "C" int ufraw_exif_read_input(ufraw_data *uf)
+         ufraw_message(UFRAW_SET_LOG, "%s\n", stderror.str().c_str());
+ 
+         return UFRAW_SUCCESS;
+-    } catch (Exiv2::AnyError& e) {
++    } catch (Exiv2::Error& e) {
+         std::cerr.rdbuf(savecerr);
+         std::string s(e.what());
+         ufraw_message(UFRAW_SET_WARNING, "%s\n", s.c_str());
+@@ -155,8 +157,8 @@ static Exiv2::ExifData ufraw_prepare_exifdata(ufraw_da
+         /* Reset orientation tag since UFRaw already rotates the image */
+         if ((pos = exifData.findKey(Exiv2::ExifKey("Exif.Image.Orientation")))
+                 != exifData.end()) {
+-            ufraw_message(UFRAW_SET_LOG, "Resetting %s from '%d' to '1'\n",
+-                          pos->key().c_str(), pos->value().toLong());
++            ufraw_message(UFRAW_SET_LOG, "Resetting %s from '%ld' to '1'\n",
++                          pos->key().c_str(), static_cast<long int>(pos->value().toInt64()));
+             pos->setValue("1"); /* 1 = Normal orientation */
+         }
+     }
+@@ -327,7 +329,7 @@ extern "C" int ufraw_exif_prepare_output(ufraw_data *u
+         ufraw_message(UFRAW_SET_LOG, "%s\n", stderror.str().c_str());
+ 
+         return UFRAW_SUCCESS;
+-    } catch (Exiv2::AnyError& e) {
++    } catch (Exiv2::Error& e) {
+         std::cerr.rdbuf(savecerr);
+         std::string s(e.what());
+         ufraw_message(UFRAW_SET_WARNING, "%s\n", s.c_str());
+@@ -347,7 +349,7 @@ extern "C" int ufraw_exif_write(ufraw_data *uf)
+ 
+         char *filename =
+             uf_win32_locale_filename_from_utf8(uf->conf->outputFilename);
+-        Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(filename);
++        Exiv2::Image::UniquePtr image { Exiv2::ImageFactory::open(filename) };
+         uf_win32_locale_filename_free(filename);
+         assert(image.get() != 0);
+ 
+@@ -367,7 +369,7 @@ extern "C" int ufraw_exif_write(ufraw_data *uf)
+         ufraw_message(UFRAW_SET_LOG, "%s\n", stderror.str().c_str());
+ 
+         return UFRAW_SUCCESS;
+-    } catch (Exiv2::AnyError& e) {
++    } catch (Exiv2::Error& e) {
+         std::cerr.rdbuf(savecerr);
+         std::string s(e.what());
+         ufraw_message(UFRAW_SET_WARNING, "%s\n", s.c_str());