#59932 closed defect (fixed)
exiv2 @0.27.1: error: no matching function for call to 'binaryToString'
Reported by: | TheLastLovemark | Owned by: | ryandesign (Ryan Carsten Schmidt) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.6.2 |
Keywords: | Cc: | NicosPavlov | |
Port: | exiv2 |
Description
Hi,
I just upgraded to MP 2.6.2, and while trying to install libkdcraw with variants +doc +debug, exiv2 failed. I cleaned both ports and tried to install exiv2 independently with variants +debug and +universal. This failed as well.
Attached is the main.log file for the second try at exiv2.
Attachments (1)
Change History (11)
Changed 5 years ago by TheLastLovemark
Attachment: | exiv2_main.log added |
---|
comment:1 Changed 5 years ago by mf2k (Frank Schima)
Keywords: | exiv2 removed |
---|
comment:2 Changed 5 years ago by ryandesign (Ryan Carsten Schmidt)
Summary: | exiv2 fails to build while building libkdcraw → exiv2 @0.27.1: error: no matching function for call to 'binaryToString' |
---|
The log says:
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_exiv2/exiv2/work/exiv2-0.27.1/src/pngimage.cpp:348:42: error: no matching function for call to 'binaryToString' :info:build std::cerr << Exiv2::Internal::binaryToString(parsedBuf.pData_, parsedBuf.size_>50?50:parsedBuf.size_,0) << std::endl; :info:build ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_exiv2/exiv2/work/exiv2-0.27.1/src/image_int.hpp:125:36: note: candidate function template not viable: requires single argument 'sl', but 3 arguments were provided :info:build inline binaryToStringHelper<T> binaryToString(const Slice<T> sl) throw() :info:build ^ :info:build 1 error generated.
I'm not sure why that would happen.
I see that you are trying to build with the +universal variant, which is not the default but which should work; it did work for me on my 10.13 machine. I see you're also using the non-default +debug variant.
Maybe you have another incompatible version of exiv2 or some other incompatible software installed somewhere. Does the problem remain if you sudo port clean exiv2
and try again using trace mode: sudo port -t install --unrequested exiv2 +debug +universal
?
Of course, if you don't actually need the +debug or +universal variants, don't use them. In that case, you should receive a precompiled binary from our servers and would not need to compile it at all.
comment:3 Changed 5 years ago by kencu (Ken)
I should say that we found an error / interaction between gimp2 and exiv2 <https://trac.macports.org/ticket/58017> that looked to be likely to be due to an ABI conflict, resulting in a pointer being freed was not allocated
error.
It was resolved by building everything (gimp2, exiv2) against libc++ in that case, but there is something touchy about the interaction between gimp2 and exiv2.
It is possible for certain software to transfer objects from one owner to another owner in c++, and my first guess is that is what was happening there.
comment:4 Changed 5 years ago by kencu (Ken)
Well, the above comment was in fact more relevant to 58407; I was reading them both around the same time.
comment:5 Changed 5 years ago by TheLastLovemark
gimp2 not installed.
debug is not mandatory, but I am still learning and want to be able to debug. especially because I do a lot of raw dslr photo shooting and i'm trying to learn raw dslr video processing also.
comment:6 follow-up: 7 Changed 5 years ago by ryandesign (Ryan Carsten Schmidt)
The code that raises the error is:
#if DEBUG std::cerr << Exiv2::Internal::binaryToString(parsedBuf.pData_, parsedBuf.size_>50?50:parsedBuf.size_,0) << std::endl; #endif
So I think you've simply found a bug in the exiv2 code that only appears when compiling in debug mode (this call of Exiv2::Internal::binaryToString
(in src/pngimage.cpp) does not agree with that function's definition (in image_int.hpp)) and should report it to the developers of exiv2 so that they can fix it for the next version.
comment:7 Changed 5 years ago by ryandesign (Ryan Carsten Schmidt)
I have reported it upstream here: https://github.com/Exiv2/exiv2/issues/1082
comment:8 Changed 5 years ago by TheLastLovemark
Any updates on this one? The list of ports to reinstall grows because of dependency on exiv2
comment:9 Changed 5 years ago by ryandesign (Ryan Carsten Schmidt)
Owner: | set to ryandesign |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:10 Changed 4 years ago by ryandesign (Ryan Carsten Schmidt)
In ec44b76bfe0ea31d095a1aa71bf5778df9ae258e/macports-ports (dar, master, py38-reproject, revert-6945-rust-1.43.0, wireshark):
exiv2 main log file