By default, Bugzilla does not search the list of RESOLVED bugs.
You can force it to do so by putting the upper-case word ALL in front of your search query, e.g.: ALL tdelibs
We recommend searching for bugs this way, as you may discover that your bug has already been resolved and fixed in a later release.

Bug 3017

Summary: Build issue: libkexiv2 ftbfs with exiv2 0.27
Product: TDE Reporter: Francois Andriot <albator78>
Component: non-core programsAssignee: Timothy Pearson <kb9vqf>
Status: RESOLVED FIXED    
Severity: blocker CC: bugwatch, slavek.banko
Priority: P5    
Version: R14.0.x [Trinity]   
Hardware: amd64   
OS: Linux   
Compiler Version: TDE Version String:
Application Version: Application Name:
Bug Depends on:    
Bug Blocks: 3010    

Description Francois Andriot 2019-05-27 06:48:13 CDT
Hello, the Fedora 30 distribution ships with exiv2 0.27 instead of 0.26 .
It looks like the exiv2 API has changed and causes libkexiv2 to FTBFS.

make[3]: Entering directory '/tmp/BUILD.fc30.x86_64/trinity-libkexiv2-14.0.6/libkexiv2/libkexiv2'
/bin/sh ../../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I../..  -I/opt/trinity/include/tde -I/usr/include/tqt3 -I. -include tqt.h   -DQT_THREAD_SUPPORT  -D_REENTRANT  -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -DNDEBUG -DNO_DEBUG -O2 -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wformat-security -Wmissing-format-attribute -Wno-non-virtual-dtor -fno-exceptions -fno-check-new -fno-common -I/usr/include/tqt -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -fexceptions  -c -o libkexiv2_la.all_cpp.lo libkexiv2_la.all_cpp.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../.. -I/opt/trinity/include/tde -I/usr/include/tqt3 -I. -include tqt.h -DQT_THREAD_SUPPORT -D_REENTRANT -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -DNDEBUG -DNO_DEBUG -O2 -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wformat-security -Wmissing-format-attribute -Wno-non-virtual-dtor -fno-exceptions -fno-check-new -fno-common -I/usr/include/tqt -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -fexceptions -c libkexiv2_la.all_cpp.cpp  -fPIC -DPIC -o .libs/libkexiv2_la.all_cpp.o
In file included from /usr/include/sys/stat.h:25,
                 from kexiv2.cpp:32,
                 from libkexiv2_la.all_cpp.cpp:2:
/usr/include/features.h:185:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
  185 | # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
      |   ^~~~~~~
In file included from libkexiv2_la.all_cpp.cpp:2:
kexiv2.cpp: In member function ‘TQByteArray KExiv2Iface::KExiv2::getExif() const’:
kexiv2.cpp:190:38: error: ‘class Exiv2::ExifData’ has no member named ‘copy’
  190 |             Exiv2::DataBuf c2 = exif.copy();
      |                                      ^~~~
kexiv2.cpp: In member function ‘TQByteArray KExiv2Iface::KExiv2::getIptc(bool) const’:
kexiv2.cpp:233:27: error: ‘class Exiv2::IptcData’ has no member named ‘copy’
  233 |                 c2 = iptc.copy();
      |                           ^~~~
kexiv2.cpp: In member function ‘bool KExiv2Iface::KExiv2::setExif(const TQByteArray&)’:
kexiv2.cpp:270:33: error: ‘class Exiv2::ExifData’ has no member named ‘load’
  270 |             if (d->exifMetadata.load((const Exiv2::byte*)data.data(), data.size()) != 0)
      |                                 ^~~~
kexiv2.cpp: In member function ‘bool KExiv2Iface::KExiv2::setIptc(const TQByteArray&)’:
kexiv2.cpp:298:33: error: ‘class Exiv2::IptcData’ has no member named ‘load’
  298 |             if (d->iptcMetadata.load((const Exiv2::byte*)data.data(), data.size()) != 0)
      |                                 ^~~~
kexiv2.cpp: In member function ‘TQImage KExiv2Iface::KExiv2::getExifThumbnail(bool) const’:
kexiv2.cpp:722:49: error: ‘class Exiv2::ExifData’ has no member named ‘copyThumbnail’
  722 |         Exiv2::DataBuf const c1(d->exifMetadata.copyThumbnail());
      |                                                 ^~~~~~~~~~~~~
kexiv2.cpp: In member function ‘bool KExiv2Iface::KExiv2::setExifThumbnail(const TQImage&, bool)’:
kexiv2.cpp:811:25: error: ‘class Exiv2::ExifData’ has no member named ‘setJpegThumbnail’
  811 |         d->exifMetadata.setJpegThumbnail( fileName );
      |                         ^~~~~~~~~~~~~~~~
kexiv2.cpp: In member function ‘TQByteArray KExiv2Iface::KExiv2::getExifTagData(const char*) const’:
kexiv2.cpp:1407:64: error: ‘class Exiv2::ExifData’ has no member named ‘byteOrder’
 1407 |                 (*it).copy((Exiv2::byte*)data.data(), exifData.byteOrder());
      |                                                                ^~~~~~~~~
kexiv2.cpp: In member function ‘TQString KExiv2Iface::KExiv2::getExifTagTitle(const char*)’:
kexiv2.cpp:1609:58: error: ‘tagTitle’ is not a member of ‘Exiv2::ExifTags’
 1609 |         return TQString::fromLocal8Bit( Exiv2::ExifTags::tagTitle(ek.tag(), ek.ifdId()) );
      |                                                          ^~~~~~~~
kexiv2.cpp: In member function ‘TQString KExiv2Iface::KExiv2::getExifTagDescription(const char*)’:
kexiv2.cpp:1629:58: error: ‘tagDesc’ is not a member of ‘Exiv2::ExifTags’
 1629 |         return TQString::fromLocal8Bit( Exiv2::ExifTags::tagDesc(ek.tag(), ek.ifdId()) );
      |                                                          ^~~~~~~
In file included from libkexiv2_la.all_cpp.cpp:3:
kexiv2private.cpp: In member function ‘bool KExiv2Iface::KExiv2Priv::setExif(Exiv2::DataBuf)’:
kexiv2private.cpp:58:30: error: ‘class Exiv2::ExifData’ has no member named ‘load’
   58 |             if (exifMetadata.load(data.pData_, data.size_) != 0)
      |                              ^~~~
kexiv2private.cpp: In member function ‘bool KExiv2Iface::KExiv2Priv::setIptc(Exiv2::DataBuf)’:
kexiv2private.cpp:86:30: error: ‘class Exiv2::IptcData’ has no member named ‘load’
   86 |             if (iptcMetadata.load(data.pData_, data.size_) != 0)
      |                              ^~~~
make[3]: *** [Makefile:642: libkexiv2_la.all_cpp.lo] Error 1
make[3]: Leaving directory '/tmp/BUILD.fc30.x86_64/trinity-libkexiv2-14.0.6/libkexiv2/libkexiv2'
make[2]: *** [Makefile:589: all-recursive] Error 1
make[2]: Leaving directory '/tmp/BUILD.fc30.x86_64/trinity-libkexiv2-14.0.6/libkexiv2'
make[1]: *** [Makefile:589: all-recursive] Error 1
make[1]: Leaving directory '/tmp/BUILD.fc30.x86_64/trinity-libkexiv2-14.0.6'
make: *** [Makefile:506: all] Error 2
Comment 1 Slávek Banko 2019-08-18 20:00:22 CDT
The problem seems to be not a change in the API, but a change in the arrangement of the headers.

Fixed in 0b786b6275 (master) and ac963b46a4 (r14.0.x).
Comment 2 Slávek Banko 2019-08-18 20:02:41 CDT
By the way, for libkexiv2 and libkipi it is already possible to use CMake instead of autotools.