diff options
-rw-r--r-- | .SRCINFO | 5 | ||||
-rw-r--r-- | PKGBUILD | 12 | ||||
-rw-r--r-- | geeqie-exiv2_0.28.patch | 82 |
3 files changed, 94 insertions, 5 deletions
@@ -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 @@ -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; + } |