Reported by Timo Gurr:
py3exiv2-0.11.0 currently fails to build with exiv2 0.28.0.
Seems a change in Exiv2::ErrorCode which is not retrocompatible.
I have managed to get with the attached patch quite a long, but not all the way. This still remains and I am not sure what to do about it:
[ 11s] gcc -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -DOPENSSL_LOAD_CONF -fwrapv -fno-semantic-interposition -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -IVendor/ -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -IVendor/ -fPIC -I/usr/include/python3.9 -c src/exiv2wrapper.cpp -o build/temp.linux-x86_64-cpython-39/src/exiv2wrapper.o -g -std=c++11 [ 15s] src/exiv2wrapper.cpp: In member function ‘boost::python::list exiv2wrapper::Image::getExifThumbnailData()’: [ 15s] src/exiv2wrapper.cpp:573:40: error: invalid use of member function ‘size_t Exiv2::DataBuf::size() const’ (did you forget the ‘()’ ?) [ 15s] 573 | for(unsigned int i = 0; i < buffer.size; ++i) [ 15s] | ~~~~~~~^~~~ [ 15s] | () [ 15s] src/exiv2wrapper.cpp:575:37: error: ‘std::vector<unsigned char> Exiv2::DataBuf::pData_’ is private within this context [ 15s] 575 | unsigned int datum = buffer.pData_[i]; [ 15s] | ^~~~~~ [ 15s] In file included from /usr/include/exiv2/basicio.hpp:11, [ 15s] from /usr/include/exiv2/exiv2.hpp:8, [ 15s] from src/exiv2wrapper.hpp:32, [ 15s] from src/exiv2wrapper.cpp:27: [ 15s] /usr/include/exiv2/types.hpp:201:21: note: declared private here [ 15s] 201 | std::vector<byte> pData_; [ 15s] | ^~~~~~ [ 15s] src/exiv2wrapper.cpp: In member function ‘const boost::python::list exiv2wrapper::XmpTag::getArrayValue()’: [ 15s] src/exiv2wrapper.cpp:1142:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare] [ 15s] 1142 | for(int i = 0; i < xav->count(); ++i) [ 15s] | ~~^~~~~~~~~~~~~~ [ 15s] src/exiv2wrapper.cpp: In function ‘void exiv2wrapper::translateExiv2Error(const Exiv2::Error&)’: [ 15s] src/exiv2wrapper.cpp:1276:9: error: duplicate case value [ 15s] 1276 | case Exiv2::ErrorCode::kerFileOpenFailed: [ 15s] | ^~~~ [ 15s] src/exiv2wrapper.cpp:1270:9: note: previously used here [ 15s] 1270 | case Exiv2::ErrorCode::kerFileOpenFailed: [ 15s] | ^~~~ [ 15s] src/exiv2wrapper.cpp: In function ‘void exiv2wrapper::unregisterXmpNs(const std::string&)’: [ 15s] src/exiv2wrapper.cpp:1915:37: warning: unused variable ‘info’ [-Wunused-variable] [ 15s] 1915 | const Exiv2::XmpNsInfo* info = Exiv2::XmpProperties::nsInfo(prefix); [ 15s] | ^~~~ [ 15s] error: comma...
Read more...
There was several errors with libexiv2-0.28 ...
So, I've uploaded py3exiv2-0.12 on the test server of PyPI.
I've tested it with Python-3.9 and 3.10 (not with 3.11) and that's seems OK.
You can test it with:
$ pip install -i https://test.pypi.org/simple/ py3exiv2==0.12.3
If there's no probleme, I'll upload on the regular server of PyPI
yes, I can confirm that with this package I am able to build successfully with exiv 0.28.
py3exiv2-0.12.0 also built successfully for me with exiv 0.28. Thanks for working on it and uploading a new release on pypi!
Bug watches keep track of this bug in other bug trackers.
Seems a change in Exiv2::ErrorCode which is not retrocompatible.