summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO5
-rw-r--r--PKGBUILD12
-rw-r--r--geeqie-exiv2_0.28.patch82
3 files changed, 94 insertions, 5 deletions
diff --git a/.SRCINFO b/.SRCINFO
index c48c2e5d72c0..7c8aab130ece 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = geeqie15
pkgdesc = Lightweight image viewer (version 1.5)
pkgver = 1.5
- pkgrel = 2
+ pkgrel = 3
url = http://www.geeqie.org/
arch = x86_64
license = GPL2
@@ -15,6 +15,7 @@ pkgbase = geeqie15
makedepends = fbida
makedepends = gawk
makedepends = perl-image-exiftool
+ makedepends = glib2-devel
depends = exiv2
depends = gtk2
depends = ffmpegthumbnailer
@@ -32,6 +33,8 @@ pkgbase = geeqie15
conflicts = geeqie
conflicts = geeqie-gtk2
source = https://github.com/BestImageViewer/geeqie/releases/download/v1.5/geeqie-1.5.tar.xz
+ source = geeqie-exiv2_0.28.patch
sha256sums = 9736c8cbf21cc39d0a9c720934cdd33fe2756dc903c2a12cfc78b8822d2d1bf5
+ sha256sums = 0e302cb384de07e9725f34046a39db5fef6a4ccd0b5b1e5ab33c7bccdd3679a1
pkgname = geeqie15
diff --git a/PKGBUILD b/PKGBUILD
index 555dd8946b43..29a655ef8425 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,7 +2,7 @@
pkgname=geeqie15
pkgver=1.5
-pkgrel=2
+pkgrel=3
pkgdesc='Lightweight image viewer (version 1.5)'
arch=('x86_64')
url="http://www.geeqie.org/"
@@ -13,7 +13,8 @@ depends=('exiv2' 'gtk2' 'ffmpegthumbnailer'
makedepends=('git'
'intltool' 'python' 'librsvg'
'libwmf' 'libwebp' 'imagemagick'
- 'fbida' 'gawk' 'perl-image-exiftool')
+ 'fbida' 'gawk' 'perl-image-exiftool'
+ 'glib2-devel')
optdepends=('librsvg: SVG rendering'
'fbida: for jpeg rotation'
'gawk: to use the geo-decode function'
@@ -22,11 +23,14 @@ optdepends=('librsvg: SVG rendering'
'imagemagick: command-line tools for various (plugin) operations')
provides=('geeqie')
conflicts=('geeqie' 'geeqie-gtk2')
-source=("https://github.com/BestImageViewer/geeqie/releases/download/v1.5/geeqie-1.5.tar.xz")
-sha256sums=('9736c8cbf21cc39d0a9c720934cdd33fe2756dc903c2a12cfc78b8822d2d1bf5')
+source=("https://github.com/BestImageViewer/geeqie/releases/download/v1.5/geeqie-1.5.tar.xz"
+ "geeqie-exiv2_0.28.patch")
+sha256sums=('9736c8cbf21cc39d0a9c720934cdd33fe2756dc903c2a12cfc78b8822d2d1bf5'
+ '0e302cb384de07e9725f34046a39db5fef6a4ccd0b5b1e5ab33c7bccdd3679a1')
prepare() {
cd "${srcdir}/geeqie-${pkgver}"
+ patch -Np1 -i ../geeqie-exiv2_0.28.patch
NOCONFIGURE=1 ./autogen.sh
}
diff --git a/geeqie-exiv2_0.28.patch b/geeqie-exiv2_0.28.patch
new file mode 100644
index 000000000000..88f4c1c08f67
--- /dev/null
+++ b/geeqie-exiv2_0.28.patch
@@ -0,0 +1,82 @@
+diff -Naur geeqie-1.5.orig/src/exiv2.cc geeqie-1.5/src/exiv2.cc
+--- geeqie-1.5.orig/src/exiv2.cc 2019-07-26 12:19:11.000000000 -0600
++++ geeqie-1.5/src/exiv2.cc 2024-12-29 12:39:47.638050433 -0700
+@@ -52,6 +52,11 @@
+ #define EXV_PACKAGE "exiv2"
+ #endif
+
++#if EXIV2_TEST_VERSION(0,28,0)
++#define AnyError Error
++#define AutoPtr UniquePtr
++#endif
++
+ extern "C" {
+ #include <glib.h>
+
+@@ -176,7 +181,7 @@
+ {
+ cp_data_ = NULL;
+ cp_length_ = 0;
+- image_ = image;
++ image_ = std::move(image);
+ valid_ = TRUE;
+ }
+
+@@ -364,7 +369,11 @@
+ Exiv2::Image *image = imageData_->image();
+
+ #ifdef HAVE_EXIV2_ERROR_CODE
++# if EXIV2_TEST_VERSION(0,28,0)
++ throw Exiv2::Error(Exiv2::ErrorCode::kerInputDataReadFailed);
++# else
+ if (!image) throw Exiv2::Error(Exiv2::kerInputDataReadFailed);
++# endif
+ #else
+ if (!image) throw Exiv2::Error(21);
+ #endif
+@@ -836,7 +845,11 @@
+ {
+ try {
+ if (!item || exif_item_get_elements(item) == 0) return 0;
++#if EXIV2_TEST_VERSION(0,28,0)
++ *value = ((Exiv2::Metadatum *)item)->toInt64();
++#else
+ *value = ((Exiv2::Metadatum *)item)->toLong();
++#endif
+ return 1;
+ }
+ catch (Exiv2::AnyError& e) {
+@@ -1059,7 +1072,11 @@
+ else
+ {
+ /* read as a list */
++#if EXIV2_TEST_VERSION(0,28,0)
++ size_t i;
++#else
+ gint i;
++#endif
+ for (i = 0; i < item.count(); i++)
+ list = g_list_append(list, utf8_validate_or_convert(item.toString(i).c_str()));
+ }
+@@ -1220,11 +1237,21 @@
+
+ Exiv2::PreviewImage image = pm.getPreviewImage(*pos);
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ // Let's not touch data_len until we finish copy.
++ // Just in case we run into OOM.
++ size_t img_sz = image.size();
++ auto* b = new Exiv2::byte[img_sz];
++ std::copy_n(image.pData(), img_sz, b);
++ *data_len = img_sz;
++ return b;
++#else
+ Exiv2::DataBuf buf = image.copy();
+ std::pair<Exiv2::byte*, long> p = buf.release();
+
+ *data_len = p.second;
+ return p.first;
++#endif
+ }
+ return NULL;
+ }