commit:     82484bb5f8153ec6e46722f8f26e34acd2b492d5
Author:     Bernard Cafarelli <voyageur <AT> gentoo <DOT> org>
AuthorDate: Mon Aug 21 06:51:22 2023 +0000
Commit:     Bernard Cafarelli <voyageur <AT> gentoo <DOT> org>
CommitDate: Mon Aug 21 06:52:05 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=82484bb5

media-gfx/geeqie: backport support for exiv2-0.28.0

Signed-off-by: Bernard Cafarelli <voyageur <AT> gentoo.org>

 .../geeqie/files/geeqie-2.1-exiv2-0.28.0.patch     | 151 +++++++++++++++++++++
 media-gfx/geeqie/geeqie-2.1-r1.ebuild              | 111 +++++++++++++++
 2 files changed, 262 insertions(+)

diff --git a/media-gfx/geeqie/files/geeqie-2.1-exiv2-0.28.0.patch 
b/media-gfx/geeqie/files/geeqie-2.1-exiv2-0.28.0.patch
new file mode 100644
index 000000000000..13b6a171257d
--- /dev/null
+++ b/media-gfx/geeqie/files/geeqie-2.1-exiv2-0.28.0.patch
@@ -0,0 +1,151 @@
+From c45cca777aa3477eaf297db99f337e18d9683c61 Mon Sep 17 00:00:00 2001
+From: Kevin Backhouse <[email protected]>
+Date: Wed, 21 Jun 2023 12:23:33 +0100
+Subject: [PATCH] Add ExifData as extra argument to
+ exif_item_get_data_as_text().
+
+---
+ src/advanced-exif.cc | 2 +-
+ src/exif-common.cc   | 2 +-
+ src/exif.cc          | 8 ++++----
+ src/exif.h           | 2 +-
+ src/exiv2.cc         | 4 ++--
+ 5 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/src/advanced-exif.cc b/src/advanced-exif.cc
+index 79a54b12..e3d3067a 100644
+--- a/src/advanced-exif.cc
++++ b/src/advanced-exif.cc
+@@ -120,7 +120,7 @@ static void advanced_exif_update(ExifWin *ew)
+               tag = g_strdup_printf("0x%04x", exif_item_get_tag_id(item));
+               tag_name = exif_item_get_tag_name(item);
+               format = exif_item_get_format_name(item, TRUE);
+-              text = exif_item_get_data_as_text(item);
++              text = exif_item_get_data_as_text(item, exif);
+               utf8_text = utf8_validate_or_convert(text);
+               g_free(text);
+               elements = g_strdup_printf("%d", exif_item_get_elements(item));
+diff --git a/src/exif-common.cc b/src/exif-common.cc
+index 6a4c9740..b6f07ca6 100644
+--- a/src/exif-common.cc
++++ b/src/exif-common.cc
+@@ -995,7 +995,7 @@ gchar *exif_get_data_as_text(ExifData *exif, const gchar 
*key)
+       if (key_valid) return text;
+ 
+       item = exif_get_item(exif, key);
+-      if (item) return exif_item_get_data_as_text(item);
++      if (item) return exif_item_get_data_as_text(item, exif);
+ 
+       return nullptr;
+ }
+diff --git a/src/exif.cc b/src/exif.cc
+index 8708ff53..cda2cb1a 100644
+--- a/src/exif.cc
++++ b/src/exif.cc
+@@ -1454,7 +1454,7 @@ gchar *exif_item_get_string(ExifItem *item, gint 
UNUSED(idx))
+       return exif_item_get_data_as_text_full(item, METADATA_PLAIN);
+ }
+ 
+-gchar *exif_item_get_data_as_text(ExifItem *item)
++gchar *exif_item_get_data_as_text(ExifItem *item, ExifData *exif)
+ {
+       return exif_item_get_data_as_text_full(item, METADATA_FORMATTED);
+ }
+@@ -1527,11 +1527,11 @@ gchar *exif_get_tag_description_by_key(const gchar 
*key)
+       return NULL;
+ }
+ 
+-static void exif_write_item(FILE *f, ExifItem *item)
++static void exif_write_item(FILE *f, ExifItem *item, ExifData *exif)
+ {
+       gchar *text;
+ 
+-      text = exif_item_get_data_as_text(item);
++      text = exif_item_get_data_as_text(item, exif);
+       if (text)
+               {
+               gchar *tag = exif_item_get_tag_name(item);
+@@ -1578,7 +1578,7 @@ void exif_write_data_list(ExifData *exif, FILE *f, gint 
human_readable_list)
+                       item = (ExifItem*)(work->data);
+                       work = work->next;
+ 
+-                      exif_write_item(f, item);
++                      exif_write_item(f, item, exif);
+                       }
+               }
+       g_fprintf(f, "----------------------------------------------------\n");
+diff --git a/src/exif.h b/src/exif.h
+index fcc7d8f5..4b03c201 100644
+--- a/src/exif.h
++++ b/src/exif.h
+@@ -136,7 +136,7 @@ gchar *exif_item_get_data(ExifItem *item, guint *data_len);
+ gchar *exif_item_get_description(ExifItem *item);
+ guint exif_item_get_format_id(ExifItem *item);
+ const gchar *exif_item_get_format_name(ExifItem *item, gboolean brief);
+-gchar *exif_item_get_data_as_text(ExifItem *item);
++gchar *exif_item_get_data_as_text(ExifItem *item, ExifData *exif);
+ gint exif_item_get_integer(ExifItem *item, gint *value);
+ ExifRational *exif_item_get_rational(ExifItem *item, gint *sign, guint n);
+ 
+diff --git a/src/exiv2.cc b/src/exiv2.cc
+index 33b779e7..dc62e8e0 100644
+--- a/src/exiv2.cc
++++ b/src/exiv2.cc
+@@ -778,13 +778,13 @@ const char *exif_item_get_format_name(ExifItem *item, 
gboolean UNUSED(brief))
+ }
+ 
+ 
+-gchar *exif_item_get_data_as_text(ExifItem *item)
++gchar *exif_item_get_data_as_text(ExifItem *item, ExifData *exif)
+ {
+       try {
+               if (!item) return nullptr;
+               auto metadatum = reinterpret_cast<Exiv2::Metadatum *>(item);
+ #if EXIV2_TEST_VERSION(0,17,0)
+-              return utf8_validate_or_convert(metadatum->print().c_str());
++              return 
utf8_validate_or_convert(metadatum->print(&exif->exifData()).c_str());
+ #else
+               std::stringstream str;
+               Exiv2::Exifdatum *exifdatum;
+From b04f7cd0546976dc4f7ea440648ac0eedd8df3ce Mon Sep 17 00:00:00 2001
+From: Colin Clark <[email protected]>
+Date: Wed, 21 Jun 2023 14:24:41 +0100
+Subject: [PATCH] Remove exiv2 0.28.0 restriction
+
+https://github.com/BestImageViewer/geeqie/pull/1119
+
+The bug was fixed in the above commit.
+---
+ meson.build | 12 ++----------
+ 1 file changed, 2 insertions(+), 10 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index a4cab49c..412399fe 100644
+--- a/meson.build
++++ b/meson.build
+@@ -280,15 +280,7 @@ else
+ endif
+ 
+ exiv2_dep = []
+-# See https://github.com/BestImageViewer/geeqie/issues/1090
+-# for the reason for 0.28.0 exclusion
+-req_version = ['>=0.11', '!=0.28.0']
+-
+-req_version_str = ''
+-foreach req_version_str_ : req_version
+-    req_version_str += req_version_str_
+-endforeach
+-
++req_version = '>=0.11'
+ option = get_option('exiv2')
+ if not option.disabled()
+     exiv2_dep = dependency('exiv2', version : req_version, required : 
get_option('exiv2'))
+@@ -296,7 +288,7 @@ if not option.disabled()
+         conf_data.set('HAVE_EXIV2', 1)
+         summary({'exiv2' : ['image metadata processed by exiv2:', true]}, 
section : 'Configuration', bool_yn : true)
+     else
+-        summary({'exiv2' : ['exiv2 ' + req_version_str + ' not found - image 
data not processed by exiv2:', false]}, section : 'Configuration', bool_yn : 
true)
++        summary({'exiv2' : ['exiv2 ' + req_version + ' not found - image data 
not processed by exiv2:', false]}, section : 'Configuration', bool_yn : true)
+     endif
+ else
+     summary({'exiv2' : ['disabled - image data processed by exiv2:', false]}, 
section : 'Configuration', bool_yn : true)

diff --git a/media-gfx/geeqie/geeqie-2.1-r1.ebuild 
b/media-gfx/geeqie/geeqie-2.1-r1.ebuild
new file mode 100644
index 000000000000..ef29faa38032
--- /dev/null
+++ b/media-gfx/geeqie/geeqie-2.1-r1.ebuild
@@ -0,0 +1,111 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+LUA_COMPAT=( lua5-{3,4} )
+
+inherit lua-single meson optfeature xdg
+
+DESCRIPTION="A lightweight GTK image viewer forked from GQview"
+HOMEPAGE="http://www.geeqie.org";
+SRC_URI="https://github.com/BestImageViewer/${PN}/releases/download/v${PV}/${P}.tar.xz
+       https://dev.gentoo.org/~voyageur/distfiles/${P}-docs.tar.xz";
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc ~x86"
+IUSE="debug djvu exif ffmpegthumbnailer heif jpeg jpeg2k jpegxl lcms lua map 
pdf raw spell tiff webp xmp zip"
+
+RDEPEND="gnome-extra/zenity
+       virtual/libintl
+       x11-libs/gtk+:3
+       djvu? ( app-text/djvu )
+       exif? ( >=media-gfx/exiv2-0.17:=[xmp?] )
+       ffmpegthumbnailer? ( media-video/ffmpegthumbnailer )
+       heif? ( >=media-libs/libheif-1.3.2 )
+       jpeg2k? ( >=media-libs/openjpeg-2.3.0:2= )
+       jpeg? ( media-libs/libjpeg-turbo:= )
+       jpegxl? ( >=media-libs/libjxl-0.3.7:= )
+       lcms? ( media-libs/lcms:2 )
+       lua? ( ${LUA_DEPS} )
+       map? ( media-libs/clutter-gtk
+               media-libs/libchamplain:0.12[gtk] )
+       pdf? ( >=app-text/poppler-0.62[cairo] )
+       raw? ( >=media-libs/libraw-0.20:= )
+       spell? ( app-text/gspell )
+       tiff? ( media-libs/tiff:= )
+       webp? ( gui-libs/gdk-pixbuf-loader-webp:= )
+       zip? ( >=app-arch/libarchive-3.4.0 )"
+DEPEND="${RDEPEND}"
+BDEPEND="
+       || ( dev-util/xxdi app-editors/vim-core )
+       dev-util/glib-utils
+       sys-devel/gettext
+       virtual/pkgconfig"
+
+REQUIRED_USE="lua? ( ${LUA_REQUIRED_USE} )"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-lua_hpp.patch
+       "${FILESDIR}"/${P}-exiv2-0.28.0.patch
+)
+
+pkg_setup() {
+       # Do not require setting LUA_SINGLE_TARGET if lua is not used
+       use lua && lua-single_pkg_setup
+}
+
+src_prepare() {
+       default
+
+       # Disable doc build - not useful most of the time per upstream
+       sed -e "/subdir('doc')/d" -i meson.build || die
+}
+
+src_configure() {
+       local emesonargs=(
+               -Dgq_helpdir="share/doc/${PF}"
+               -Dgq_htmldir="share/doc/${PF}/html"
+               $(meson_use debug)
+               $(meson_feature djvu)
+               $(meson_feature exif exiv2)
+               $(meson_feature ffmpegthumbnailer videothumbnailer)
+               $(meson_feature heif)
+               $(meson_feature jpeg)
+               $(meson_feature jpeg2k j2k)
+               $(meson_feature jpegxl)
+               $(meson_feature lcms cms)
+               $(meson_feature lua)
+               $(meson_feature map gps-map)
+               $(meson_feature pdf)
+               $(meson_feature raw libraw)
+               $(meson_feature spell)
+               $(meson_feature tiff)
+               $(meson_feature zip archive)
+       )
+
+       meson_src_configure
+}
+
+src_install() {
+       meson_src_install
+
+       # Manually generated ChangeLog
+       dodoc "${WORKDIR}"/${P}-docs/*
+
+       # The application needs access to some uncompressed doc files.
+       docompress -x /usr/share/doc/${PF}/AUTHORS
+       docompress -x /usr/share/doc/${PF}/ChangeLog
+       docompress -x /usr/share/doc/${PF}/README.md
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+
+       optfeature "Camera import and tethered photography plugins" 
media-gfx/gphoto2
+       optfeature "Lens ID plugin" media-libs/exiftool
+       optfeature "Image crop plugin" "media-libs/exiftool 
media-gfx/imagemagick"
+       optfeature "Image rotate plugin (JPEG)" media-gfx/fbida
+       optfeature "Image rotate plugin (TIFF/PNG)" media-gfx/imagemagick
+       optfeature "Print preview functionality" app-text/evince
+}

Reply via email to