Bug 449107

Summary: digiKam 7.5.0 FTBFS with Qt 5.9.5 (as found in Ubuntu Bionic 18.04)
Product: [Applications] digikam Reporter: Rob Savoury <savoury>
Component: Portability-RuntimeAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: caulier.gilles, metzpinguin
Priority: NOR    
Version First Reported In: 7.5.0   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed/Implemented In: 7.6.0
Sentry Crash Report:
Attachments: Change QScopedPointer get to data (fix FTBFS with Qt 5.9.5)

Description Rob Savoury 2022-01-24 22:20:38 UTC
Created attachment 145895 [details]
Change QScopedPointer get to data (fix FTBFS with Qt 5.9.5)

SUMMARY

digiKam 7.5.0 FTBFS with Qt 5.9.5 due introducing use of code requiring a newer Qt version.

STEPS TO REPRODUCE
1. Download digiKam 7.5.0 source and extract.
2. Attempt building source using pbuilder in a clean chroot with all appropriate build dependencies.
3. Build fails with errors as described below.

OBSERVED RESULT

The build fails with two distinct errors:

1) due use of QScopedPointer get function (Qt >= 5.11) in this file:

core/utilities/geolocation/geoiface/tiles/abstractmarkertiler.cpp

2) due use of key_value_iterator (Qt >= 5.10) in this file (iNaturalist):

core/dplugins/generic/webservices/inaturalist/inattalker.cpp

EXPECTED RESULT

That the build succeeds with Qt 5.9.5 as Qt 5.9 is (still, for now!) listed as a sufficient minimum Qt build dependency for digiKam.

SOFTWARE/OS VERSIONS
Windows: n/a
macOS: n/a
Linux/KDE Plasma: Ubuntu 18.04 / KDE 5.44
(available in About System)
KDE Plasma Version: 5.44
KDE Frameworks Version: 5.44
Qt Version: 5.9.5

ADDITIONAL INFORMATION

Changing the QScopedPointer get call to a data call fixes the first issue, as per bug 440313 (see attached patch). However, the use of key_value_iterator is more complex (for myself, not a C++ or Qt programmer!) and after a couple hours looking at how to rework the new slotTimeout function in the iNaturalist plugin with Qt 5.9 compatible iterators it was not obvious to me what would be functionally equivalent.

So for a successful "unofficial" Ubuntu 18.04 build at the digiKam PPA that I maintain the temporary solution was to remove the entire new slotTimeout function from the iNaturalist plugin, specifically removing relevant code from these two files:

core/dplugins/generic/webservices/inaturalist/inattalker.cpp
core/dplugins/generic/webservices/inaturalist/inattalker.h

No doubt there is a way to rework slotTimeout to use Qt 5.9 compatible iterators, such that anyone running an older system who uploads to iNaturalist will have the new timeout functionality as well.

Official documentation of relevance for the two issues:

1) https://doc.qt.io/archives/qt-5.11/qscopedpointer.html
2) https://doc.qt.io/archives/qt-5.10/qhash.html
Comment 1 Maik Qualmann 2022-01-25 07:08:17 UTC
Git commit f174d5cf715433084a3b5874a7908052f24234c2 by Maik Qualmann.
Committed on 25/01/2022 at 07:07.
Pushed by mqualmann into branch 'master'.

apply patch #145895  from Rob Savoury to fix compile under Qt-5.9.0

M  +1    -1    core/utilities/geolocation/geoiface/tiles/abstractmarkertiler.cpp

https://invent.kde.org/graphics/digikam/commit/f174d5cf715433084a3b5874a7908052f24234c2
Comment 2 Maik Qualmann 2022-01-25 07:27:10 UTC
Git commit aa19e4afddbdac9e2d0dbe89dadfd93db0856679 by Maik Qualmann.
Committed on 25/01/2022 at 07:26.
Pushed by mqualmann into branch 'master'.

fix use of QKeyValueIterator for Qt < 5.10

M  +6    -6    core/dplugins/generic/webservices/inaturalist/inattalker.cpp

https://invent.kde.org/graphics/digikam/commit/aa19e4afddbdac9e2d0dbe89dadfd93db0856679
Comment 3 Maik Qualmann 2022-01-25 07:30:03 UTC
Hi Rob, please test if everything compiles fine now under Qt-5.9.5.

Maik
Comment 4 Rob Savoury 2022-01-25 16:41:09 UTC
(In reply to Maik Qualmann from comment #3)
> Hi Rob, please test if everything compiles fine now under Qt-5.9.5.
> 
> Maik

Hi Maik, everything compiles fine now for Qt 5.9.5 and thanks for the quick response and fix!

Rob
Comment 5 caulier.gilles 2022-01-25 16:42:47 UTC
Thanks Rob to contribute.

Gilles Caulier