Source: viewnior Version: 1.8-3 Severity: important Tags: patch ftbfs Control: forwarded -1 https://github.com/hellosiyan/Viewnior/pull/134
Hi, viewnior fails to build with the new stable series of the Exiv2 library, i.e. 0.28.x; that version is available in experimental as of this writing. There are two upstream PRs to address this problem, i.e. PR 130 [1] and PR 134, and sadly they have been sitting there for some months now (viewnior does not seem an actively developed project). I chose PR 134, as I find it as cleaner approach, I extracted the patch/commit from it, and verified that it builds fine with both Exiv2 0.27 and Exiv2 0.28; you can find it attached to this bug. Would you review this patch, and upload it so that viewnior rebuilds cleanly once a newer Exiv2 is uploaded to unstable? In addition to the actual fix, I attached an update of the libexiv2-dev build dependency, which is the result of the backported patch. [1] https://github.com/hellosiyan/Viewnior/pull/130 [2] https://github.com/hellosiyan/Viewnior/pull/134 Thanks, -- Pino
Author: Robert-André Mauchin <zebo...@gmail.com> Description: Fix build with >=exiv2-0.28.0, raise minimum to 0.27.0 - enables use of EXIV2_TEST_VERSION macro - add compatibility for exiv2-0.28.0 Forwarded: https://github.com/hellosiyan/Viewnior/pull/134 Last-Update: 2023-11-11 diff --git a/meson.build b/meson.build index 8f91fb5..9ef9f09 100644 --- a/meson.build +++ b/meson.build @@ -28,7 +28,7 @@ viewnior_deps = [ dependency('gio-2.0', version: glib_ver), dependency('shared-mime-info', version: '>= 0.20'), dependency('gdk-pixbuf-2.0', version: '>= 0.21'), - dependency('exiv2', version: '>= 0.21'), + dependency('exiv2', version: '>= 0.27'), ] # diff --git a/src/uni-exiv2.cpp b/src/uni-exiv2.cpp index 0d14b9f..d03edd7 100644 --- a/src/uni-exiv2.cpp +++ b/src/uni-exiv2.cpp @@ -22,12 +22,21 @@ #include <exiv2/exiv2.hpp> #include <iostream> +#include <memory> #include "uni-exiv2.hpp" +#if EXIV2_TEST_VERSION(0,28,0) + typedef Exiv2::Error Exiv2Error; + typedef Exiv2::Image::UniquePtr ImagePtr; +#else + typedef Exiv2::AnyError Exiv2Error; + typedef Exiv2::Image::AutoPtr ImagePtr; +#endif + #define ARRAY_SIZE(array) (sizeof array/sizeof(array[0])) -static Exiv2::Image::AutoPtr cached_image; +static ImagePtr cached_image; extern "C" void @@ -35,7 +44,7 @@ uni_read_exiv2_map(const char *uri, void (*callback)(const char*, const char*, v { Exiv2::LogMsg::setLevel(Exiv2::LogMsg::mute); try { - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(uri); + ImagePtr image = Exiv2::ImageFactory::open(uri); if ( image.get() == 0 ) { return; } @@ -80,7 +89,7 @@ uni_read_exiv2_map(const char *uri, void (*callback)(const char*, const char*, v } } } - } catch (Exiv2::AnyError& e) { + } catch (Exiv2Error& e) { std::cerr << "Exiv2: '" << e << "'\n"; } } @@ -103,7 +112,7 @@ uni_read_exiv2_to_cache(const char *uri) } cached_image->readMetadata(); - } catch (Exiv2::AnyError& e) { + } catch (Exiv2Error& e) { std::cerr << "Exiv2: '" << e << "'\n"; } @@ -121,7 +130,7 @@ uni_write_exiv2_from_cache(const char *uri) } try { - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(uri); + ImagePtr image = Exiv2::ImageFactory::open(uri); if ( image.get() == 0 ) { return 2; } @@ -133,7 +142,7 @@ uni_write_exiv2_from_cache(const char *uri) cached_image.reset(NULL); return 0; - } catch (Exiv2::AnyError& e) { + } catch (Exiv2Error& e) { std::cerr << "Exiv2: '" << e << "'\n"; } -- 2.43.0
--- a/debian/control +++ b/debian/control @@ -6,7 +6,7 @@ Build-Depends: debhelper-compat (= 13), meson, intltool (>= 0.35.0), - libexiv2-dev, + libexiv2-dev (>= 0.27.0), libgtk-3-dev Standards-Version: 4.6.2 Homepage: https://siyanpanayotov.com/project/viewnior/