Unable to compile nufraw with exiv2-0.27

Another piece of breakage from exiv2-0.27. This is on linux x86_64
CXX nufraw_exiv2.o
nufraw_exiv2.cc: In function ‘int nufraw_exif_read_input(nufraw_data*)’:
nufraw_exiv2.cc:70:40: error: no matching function for call to ‘Exiv2::BasicError::BasicError(int, std::__cxx11::string&)’
throw Exiv2::Error(1, error);
^
In file included from /usr/include/exiv2/iptc.hpp:34,
from /usr/include/exiv2/image.hpp:31,
from nufraw_exiv2.cc:18:
/usr/include/exiv2/error.hpp:280:9: note: candidate: ‘template<class A, class B, class C> Exiv2::BasicError::BasicError(Exiv2::ErrorCode, const A&, const B&, const C&)’
BasicError(ErrorCode code, const A& arg1, const B& arg2, const C& arg3);
^~~~~~~~~~
/usr/include/exiv2/error.hpp:280:9: note: template argument deduction/substitution failed:
nufraw_exiv2.cc:70:40: note: candidate expects 4 arguments, 2 provided
throw Exiv2::Error(1, error);
^
In file included from /usr/include/exiv2/iptc.hpp:34,
from /usr/include/exiv2/image.hpp:31,
from nufraw_exiv2.cc:18:
/usr/include/exiv2/error.hpp:276:9: note: candidate: ‘template<class A, class B> Exiv2::BasicError::BasicError(Exiv2::ErrorCode, const A&, const B&)’
BasicError(ErrorCode code, const A& arg1, const B& arg2);
^~~~~~~~~~
/usr/include/exiv2/error.hpp:276:9: note: template argument deduction/substitution failed:
nufraw_exiv2.cc:70:40: note: candidate expects 3 arguments, 2 provided
throw Exiv2::Error(1, error);
^
In file included from /usr/include/exiv2/iptc.hpp:34,
from /usr/include/exiv2/image.hpp:31,
from nufraw_exiv2.cc:18:
/usr/include/exiv2/error.hpp:272:9: note: candidate: ‘template Exiv2::BasicError::BasicError(Exiv2::ErrorCode, const A&)’
BasicError(ErrorCode code, const A& arg1);
^~~~~~~~~~
/usr/include/exiv2/error.hpp:272:9: note: template argument deduction/substitution failed:
nufraw_exiv2.cc:70:40: note: cannot convert ‘1’ (type ‘int’) to type ‘Exiv2::ErrorCode’
throw Exiv2::Error(1, error);
^
(snip there, that’s probably more than enough).
I’ve looked at changes made in gwenview and libkexiv, but I really don’t grok modern C++. And suggestions, please ?

Ping! @clanmills

There is in fact a more general issue of updating existing GIMP plug-ins to follow the development of dependencies… I have recently started to regularly build a GIMP AppImage from the current GIMP git head (the GTK3 version), and found out that many plug-ins are not compatible with the latest GIMP code (while they still compile fine against the 2.10.x branch).

Maybe it would be good to report and collect all the known failures in one thread, and work together to fix the errors and/or send patches to the developers?

1 Like

I forgot to say that this was on 2.10 , specifically I’m using 2.10.8 but I don’t think that changes in the gimp are the cause of my this problem. The error looks similar to other problems with this exiv2 version. Unfortunately, my distro (BLFS) has accidentally moved onto the bleeding edge instead of the leading edge with this package.

Will probably try installing old exiv2 in /opt later, to see if I can hack nufraw to use that.

@HIRAM I can’t say anything helpful here without additional information about the version of Exiv2 being used and some inform about the build errors. It’s important to build with the headers that accompany the version of Exiv2 being used.

Ooops. The error messages are at the start and this applies to v0.27.

Yes, there is something odd about Error in v0.27 and I believe it’s to be fixed on v0.27.1 which I hope to release on 2017-03-31. I hope to publish a release candidate v0.27.1 RC1 in the next couple of weeks. I’ve just returned from vacation and about to start working on “dot one”.

2 Likes

Thanks.

Thanks, Robin. Greetings from Vietnam!

Well, 0.27.1-rc1 did not help (and calling it 0.27.1.1 seems confusing). But I was pointed to the ufraw fork on github, and some postings to that in February including a gentoo fix for 0.27.

With 0.27.1.1 I had to add a header to even get to something similar to the original error, but maybe that is just new in gcc-8.3.0 -
nufraw_exiv2.cc:47:37: note: ‘std::cerr’ is defined in header ‘’; did you forget to ‘#include ’?
nufraw_exiv2.cc:23:1:
+#include

With that, and the patch ex gentoo, it builds on both 0.27.1.1 with gcc-8.3.0, and 0.27.0 with gcc-8.2.0.

Will do some more testing before trying to upstream these.