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 +}
